在Silverlight3中消耗WCF服务

消耗服务

公司主营业务:成都做网站、成都网站建设、移动网站开发等业务。帮助企业客户真正实现互联网宣传,提高企业的竞争能力。创新互联是一支青春激扬、勤奋敬业、活力青春激扬、勤奋敬业、活力澎湃、和谐高效的团队。公司秉承以“开放、自由、严谨、自律”为核心的企业文化,感谢他们对我们的高要求,感谢他们从不同领域给我们带来的挑战,让我们激情的团队有机会用头脑与智慧不断的给客户带来惊喜。创新互联推出云南免费做网站回馈大家。

VS2008的Silverlight工具提供了内置功能来创建用Silverlight激活的WCF服务并且在不需要编写大量代码的情况下消耗WCF服务。Silverlight 3现在支持二进制XML,这一功能可以用更快的速度把数据从服务器传到客户端。如果需要的话,标准SOAP信息也能被传送。

如果你以前消耗过一个ASP.NET ASMX Web 服务,那么你会觉得消耗WCF服务易如反掌。VS2008的新增服务引用对话框允许你选取该服务并在不编写大量代码的情况下生成客户端。生成代理前,要明白Silverlight只能调回到原始服务器,在原始服务器上,会默认提供Silverlight XAP应用程序文件。

如果你需要调用一个WCF服务,该服务可能存在于不同域或不同端口中,那么该服务必须拥有客户访问政策文件,文件名为clientaccesspolicy.xml,文件位于服务器低端。Silverlight会检查这个文件以查看是否该文件被允许执行跨域的调用。

下面的例一展示了一个样本文件:

 
 
 
 
  1. < ?xml version="1.0" encoding="utf-8"?> 
  2. < access-policy>
  3. < cross-domain-access>
  4. < policy>
  5. < allow-from>
  6. < domain uri="*"/>
  7. < /allow-from>
  8. < grant-to>
  9. < resource path="/" include-subpaths="true"/>
  10. < /grant-to>
  11. < /policy>
  12. < /cross-domain-access>
  13. < /access-policy>

例一:客户访问政策文件可以放置到服务器低端以便允许Silverlight客户来调用处于不同域或运行于不同端口的服务。

为了创建一个WCF服务代理,你首先需要创建一个Silverlight应用程序项目。一旦该项目被创建好,你就可以右键单击项目,然后选择添加服务参考。如下所示,系统会提供Add Service Reference对话框,图一显示出Add Service Reference对话框可以在没有大量代码的情况下快速而简便地生成客户代理。

图一:

如果WCF服务位于相同的VS方案中,你可以点击Discover按钮。否则,你就要输入到达Address文本框中Web Service Description Language(WSDL)文件的路径。一旦文件被定位,你就可以给代理代码一个命名空间,然后点击确认按钮。

一旦客户代理被创建,你就可以调用Silverlight应用中的服务。要记住所有与Silverlight一起发生的网络操作都是异步的,因此服务被调用的时候,浏览器不会锁定。

例二展示了一个使用客户代码调用服务和绑定数据的示例:

 
 
 
 
  1.  void MainPage_Loaded(object sender, RoutedEventArgs e) 
  2. {
  3. //Create service proxy
  4. WcfService.Service1Client proxy = new WcfService.Service1Client();
  5. //Wire the proxy to a completed handler to allow the async operation to be handled
  6. proxy.GetCustomerCompleted +=
  7. new EventHandler< WcfService.GetCustomerCompletedEventArgs> (
  8. proxy_GetCustomerCompleted);
  9. //Call the service asynchronously
  10. proxy.GetCustomerAsync(id);
  11. }
  12. void proxy_GetCustomerCompleted(object sender, SilverlightApplication1.WcfService.GetCustomerCompletedEventArgs e)
  13. {
  14. //Bind the returned data to the DataContext
  15. this.DataContext = e.Result;
  16. }

例二;使用一个客户代理对象来调用Silverlight中的WCF服务。

看一看例二中的代码,你可以看出代理对象是***被创建,然后通过一个事件驱动型模式,被名为proxy_GetCustomerCompleted的异步事件处理器捆绑起来。该服务通过援引GetCustomerAsync方法被异步调用。一旦服务返回了数据,调回方法会被自动调用,GetCustomerCompletedEventArgs参数会被访问以检索数据。在这个示例中,数据被直接绑定到应用程序的DataContext属性中。注意不需要有额外的操作来设定数据传递路线。代理会自动处理所有的事情。

Silverlight应用程序不能直接调用一个数据库,但是他们可以从一系列诸如WCF服务,ASMX服务和其他标准兼容等服务中存取数据。

网页名称:在Silverlight3中消耗WCF服务
新闻来源:http://www.shufengxianlan.com/qtweb/news46/65196.html

网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联