微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

silverlight-4.0 – 如何使用Silverlight 4.0和不使用EF设置RIA服务

@H_404_4@ 作为一个Silverlight新手,我发现很难建立一个RIA Web服务. Web上可用的示例几乎总是将实体框架称为ORM,但我们使用NHibernate作为我们的ORM.我知道Brad Abrams的教程,他使用NHibernate作为ORM,但大多数都是我的头脑,因为我也是NHibernate的新手,RIA的一些概念对我来说并不清楚,例如的DomainService.

我想首先保持简单,暂时忽略ORM.那么,任何人都可以指出我正确的方向,如何使用Silverlight 4.0和最新版本的RIA获得“vanilla”Web服务?例如,我如何公开一个返回整数100然后从我的SilverLight应用程序调用方法方法?此外,我不确定它是否相关,但Silverlight应用程序是在ASP.NET MVC 2中托管的.

对我而言,它应该是如此简单,但我现在真的很挣扎.

TIA,

大卫

解决方法

这些场景(使用Silverlight的非EntityFramework RIA服务)肯定已记录在案,我希望尽快发布一些博客文章来涵盖这些场景(包括如何使用NHibernate).

这是一种做你要求的方法

如果您还没有安装“适用于Visual Studio 2010的Silverlight 4工具”:

http://www.microsoft.com/downloads/en/details.aspx?FamilyID=b3deb194-ca86-4fb6-a716-b67c2604a139&displaylang=en

在Visual Studio 2010中创建新的Silverlight导航应用程序(选中此框以启用RIA服务).

通过以下方式修改Web项目中的web.config

在< system.web>中部分,添加

<httpModules>
  <add name="DomainServiceModule"
   type="System.ServiceModel.domainservices.Hosting.DomainServiceHttpModule,System.ServiceModel.domainservices.Hosting,Version=4.0.0.0,Culture=neutral,PublicKeyToken=31BF3856AD364E35" />
</httpModules>

添加< system.serviceModel>作为< system.web>的对等部分:

<system.serviceModel>
    <serviceHostingEnvironment aspNetCompatibilityEnabled="true"
     multipleSiteBindingsEnabled="true" />
  </system.serviceModel>

将以下引用添加到Web项目:

System.ServiceModel.domainservices.Hosting  
System.ServiceModel.domainservices.Server

在包含“return 100”方法的Web项目中创建一个新类VanillaDomainService:

[System.ServiceModel.domainservices.Hosting.EnableClientAccess()]
public class VanillaDomainService :
                System.ServiceModel.domainservices.Server.DomainService
{
    public int ReturnInteger100()
    {
        return 100;
    }
}

现在回到Silverlight应用程序项目,在Home.xaml.cs中,在OnNavigatedTo方法中,调用新的RIA Services方法(记住所有调用都是异步的):

protected override void OnNavigatedTo(NavigationEventArgs e)
    {
        SilverlightApplication1.Web.VanillaDomainContext oneVanillaDomainContext =
           new SilverlightApplication1.Web.VanillaDomainContext();

        oneVanillaDomainContext.ReturnInteger100(
           anInt => MessageBox.Show(anInt.Value.ToString()),null);
    }

现在构建并运行,应该是它.

我测试了这段代码,它对我有用.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐