首页  ·  知识 ·  移动开发
多个Silverlight应用程序如何共享一个DomainService
slmk    Wphone  编辑:dezai   图片来源:网络
WCF RIA Services使用DomainService提供数据访问等服务,如果在Silverlight中使用,只要设置了WCF RIA连接,就能自动生成数据访问的客户

WCF RIA Services使用DomainService提供数据访问等服务,如果在Silverlight中使用,只要设置了WCF RIA连接,就能自动生成数据访问的客户端代理类,这为我们开发提供了方便。

我们通常是建立一个Silverlight Bussiness Application的项目,其中包含一个Silverlight项目作为客户端,一个Web结尾的项目承载我们的Domain Service服务。

刚开始我还受用这种模式,数据访问那么的自然,没有多余的WCF请求代码。然而当我做第二个应用程序时,遇到了麻烦,我该如何重用第一个应用程序中已经写好的Domain Service呢?我首先想到了把我的SL连接到上一个Web项目,然而一个SL应用只能连接一个Web项目,我不想把所有代码都放在一个应用程序下面,并且如果我要连接的web项目不是我开发的,我又该怎么连接?然后,我想到了添加服务引用,就像WCF服务一样,然而Domain Service总是不被其他SL项目发现,需要配置web.config将Endpoints暴露出来,并且这样等于放弃了WCF RIA Services的优势。

最后,终于找到了解决方法:使用WCF RIA Service类库。然而类库并不能独立发布,必须在Web项目中承载后,才能供我们访问,这样我们的解决方案的结构应该是:

 

AnotherSLApp引用ShareRIAServices,其中包含了自动生成的客户端Proxy代码。并且包含在另一个应用AnotherWeb中.

由于URL路径不同,我们Context类需要指定DomainService的URL地址:

 const string ServicePath = "http://localhost:52878/ShareRIAServices-Web-ShareDomainService.svc";
ShareRIAServices.Web.ShareDomainContext sc = new ShareDomainContext(new Uri(ServicePath));

服务的命名是名称空间+类名.svc,其中用“-”连接。

这样任何需要使用ShareRIAServices.Web中的DomainService服务的SL应用程序,只需要引用ShareRIAServices即可,如果是别人开发的,只需要引用ShareRIAServices.dll就行。
 

本文作者:slmk 来源:网络
CIO之家 www.ciozj.com 微信公众号:imciow
    >>频道首页  >>网站首页   纠错  >>投诉
版权声明:CIO之家尊重行业规范,每篇文章都注明有明确的作者和来源;CIO之家的原创文章,请转载时务必注明文章作者和来源;
延伸阅读
也许感兴趣的
我们推荐的
主题最新
看看其它的