本文中,我们将为大家介绍在Silverlight 3中消耗服务所需的步骤,还会谈到一些重要的性能。我们会讨论如何用Silverlight客户端处理异步调用。

耗费服务

VS2008的Silverlight东西供给了内置功用来创立用Silverlight激活的WCF服务并且在不需求编写很多代码的情况下耗费WCF服务。Silverlight 3现在支撑二进制XML,这一功用能够用更快的速度把数据从服务器传到客户端。假如需求的话,规范SOAP信息也能被传送。

假如你曾经耗费过一个ASP.NET ASMX Web 服务,那么你会觉得耗费WCF服务一挥而就。VS2008的新增服务引证对话框答应你选取该服务并在不编写很多代码的情况下生成客户端。生成署理前,要理解Silverlight只能调回到原始服务器,在原始服务器上,会默许供给Silverlight XAP运用程序文件。

假如你需求调用一个WCF服务,该服务或许存在于不同域或不同端口中,那么该服务有必要具有客户拜访方针文件,文件名为clientaccesspolicy.xml,文件坐落服务器低端。Silverlight会检查这个文件以检查是否该文件被答应履行跨域的调用。

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

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

例一:客户拜访方针文件能够放置到服务器低端以便答应Silverlight客户来调用处于不同域或运转于不同端口的服务。

为了创立一个WCF服务署理,你首要需求创立一个Silverlight运用程序项目。一旦该项目被创立好,你就能够右键单击项目,然后挑选增加服务参阅。如下所示,体系会供给Add Service Reference对话框,图一显示出Add Service Reference对话框能够在没有很多代码的情况下快速而简洁地生成客户署理。

图一:

在Silverlight 3中耗费WCF服务  Silverlight 3 第1张

假如WCF服务坐落相同的VS计划中,你能够点击Discover按钮。不然,你就要输入抵达Address文本框中Web Service Description Language(WSDL)文件的途径。一旦文件被定位,你就能够给署理代码一个命名空间,然后点击承认按钮。

一旦客户署理被创立,你就能够调用Silverlight运用中的服务。要记住避实就虚与Silverlight一同产生的网络操作都是异步的,因而服务被调用的时分,浏览器不会确定。

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

  1. voidMainPage_Loaded(objectsender,RoutedEventArgse)
  2. {
  3. //Createserviceproxy
  4. WcfService.Service1Clientproxy=newWcfService.Service1Client();
  5. //Wiretheproxytoacompletedhandlertoallowtheasyncoperationtobehandled
  6. proxy.GetCustomerCompleted+=
  7. newEventHandler<WcfService.GetCustomerCompletedEventArgs>(
  8. proxy_GetCustomerCompleted);
  9. //Calltheserviceasynchronously
  10. proxy.GetCustomerAsync(id);
  11. }
  12. voidproxy_GetCustomerCompleted(objectsender,SilverlightApplication1.WcfService.GetCustomerCompletedEventArgse)
  13. {
  14. //BindthereturneddatatotheDataContext
  15. this.DataContext=e.Result;
  16. }

例二;运用一个客户署理目标来调用Silverlight中的WCF服务。

看一看例二中的代码,你能够看出署理目标是***被创立,然后经过一个拜见驱动型形式,被名为proxy_GetCustomerCompleted的异步拜见处理器绑缚起来。该服务经过征引GetCustomerAsync办法被异步调用。一旦服务返回了数据,调回办法会被主动调用,GetCustomerCompletedEventArgs参数会被拜访以检索数据。在这个示例中,数据被直接绑定到运用程序的DataContext特点中。留意不需求有额定的操作来设定数据传递道路。署理会主动处理避实就虚的工作。

Silverlight运用程序不能直接调用一个数据库,可是他们能够从一系列比如WCF服务,ASMX服务和其他规范兼容等服务中存取数据。

【修改引荐】

  1. 微软7月发布Silverlight 3最终版 新增50多项功用
  2. 浅谈Silverlight 3中在线与离线状况检测
  3. Silverlight 3数据存取功用简析
  4. 图解Silverlight 3的7个新功用
  5. 用Silverlight 3的位图API完成可写位图
转载请说明出处
知优网 » 在Silverlight 3中耗费WCF服务

发表评论

您需要后才能发表评论