如何使用Silverlight 4.0和不使用EF设置RIA服务 [英] How to set up RIA services with Silverlight 4.0 and without EF

查看:9
本文介绍了如何使用Silverlight 4.0和不使用EF设置RIA服务的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

作为一名Silverlight新手,我发现设置RIA Web服务真的很难。Web上可用的示例几乎总是将实体框架称为ORM,但我们使用的是NHibernate作为我们的ORM。我知道Brad Abrams的教程,其中他使用NHibernate作为ORM,但大部分内容都让我摸不着头脑,因为我也是NHibernate的新手,RIA的一些概念对我来说并不清楚,例如DomainService。

我想先简单一点,暂时忽略ORM。那么,有没有人能给我指个正确的方向,告诉我如何在Silverlight 4.0和最新发布的RIA上实现一个"普通"的Web服务?例如,我如何公开一个返回整数100的方法,然后从我的Silverlight应用程序调用该方法?此外,我不确定它是否相关,但Silverlight应用程序托管在ASP.NETMVC 2中。

对我来说,这应该很简单,但我现在真的很难做到。

TIA,

David

推荐答案

这些场景(带Silverlight的非实体框架RIA服务)肯定没有记录在案,我希望很快发布一些博客文章来介绍这些场景(包括如何使用NHibernate)。

这里有一种方法可以满足您的要求:

安装"Silverlight 4 Tools for Visual Studio 2010"(如果尚未安装):

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服务方法(请记住,所有调用都是异步的):

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

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

现在生成并运行,应该就是这样。

我测试了此代码,它对我有效。

这篇关于如何使用Silverlight 4.0和不使用EF设置RIA服务的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆