这篇文章主要讲解了“如何在Silverlight3中消耗WCF服务”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“如何在Silverlight3中消耗WCF服务”吧!
消耗服务
VS2008的Silverlight工具提供了内置功能来创建用Silverlight激活的WCF服务并且在不需要编写大量代码的情况下消耗WCF服务。Silverlight 3现在支持二进制XML,这一功能可以用更快的速度把数据从服务器传到客户端。如果需要的话,标准SOAP信息也能被传送。
如果你以前消耗过一个ASP.NET ASMX Web 服务,那么你会觉得消耗WCF服务易如反掌。VS2008的新增服务引用对话框允许你选取该服务并在不编写大量代码的情况下生成客户端。生成代理前,要明白Silverlight只能调回到原始服务器,在原始服务器上,会默认提供Silverlight XAP应用程序文件。
如果你需要调用一个WCF服务,该服务可能存在于不同域或不同端口中,那么该服务必须拥有客户访问政策文件,文件名为clientaccesspolicy.xml,文件位于服务器低端。Silverlight会检查这个文件以查看是否该文件被允许执行跨域的调用。
下面的例一展示了一个样本文件:
< ?xml version="1.0" encoding="utf-8"?> < access-policy> < cross-domain-access> < policy> < allow-from> < domain uri="*"/> < /allow-from> < grant-to> < resource path="/" include-subpaths="true"/> < /grant-to> < /policy> < /cross-domain-access> < /access-policy>
例一:客户访问政策文件可以放置到服务器低端以便允许Silverlight客户来调用处于不同域或运行于不同端口的服务。
为了创建一个WCF服务代理,你首先需要创建一个Silverlight应用程序项目。一旦该项目被创建好,你就可以右键单击项目,然后选择添加服务参考。如下所示,系统会提供Add Service Reference对话框,图一显示出Add Service Reference对话框可以在没有大量代码的情况下快速而简便地生成客户代理。
图一:
如果WCF服务位于相同的VS方案中,你可以点击Discover按钮。否则,你就要输入到达Address文本框中Web Service Description Language(WSDL)文件的路径。一旦文件被定位,你就可以给代理代码一个命名空间,然后点击确认按钮。
一旦客户代理被创建,你就可以调用Silverlight应用中的服务。要记住所有与Silverlight一起发生的网络操作都是异步的,因此服务被调用的时候,浏览器不会锁定。
例二展示了一个使用客户代码调用服务和绑定数据的示例:
void MainPage_Loaded(object sender, RoutedEventArgs e) { //Create service proxy WcfService.Service1Client proxy = new WcfService.Service1Client(); //Wire the proxy to a completed handler to allow the async operation to be handled proxy.GetCustomerCompleted += new EventHandler< WcfService.GetCustomerCompletedEventArgs> ( proxy_GetCustomerCompleted); //Call the service asynchronously proxy.GetCustomerAsync(id); } void proxy_GetCustomerCompleted(object sender, SilverlightApplication1.WcfService.GetCustomerCompletedEventArgs e) { //Bind the returned data to the DataContext this.DataContext = e.Result; }
例二;使用一个客户代理对象来调用Silverlight中的WCF服务。
看一看例二中的代码,你可以看出代理对象是***被创建,然后通过一个事件驱动型模式,被名为proxy_GetCustomerCompleted的异步事件处理器捆绑起来。该服务通过援引GetCustomerAsync方法被异步调用。一旦服务返回了数据,调回方法会被自动调用,GetCustomerCompletedEventArgs参数会被访问以检索数据。在这个示例中,数据被直接绑定到应用程序的DataContext属性中。注意不需要有额外的操作来设定数据传递路线。代理会自动处理所有的事情。
Silverlight应用程序不能直接调用一个数据库,但是他们可以从一系列诸如WCF服务,ASMX服务和其他标准兼容等服务中存取数据。
感谢各位的阅读,以上就是“如何在Silverlight3中消耗WCF服务”的内容了,经过本文的学习后,相信大家对如何在Silverlight3中消耗WCF服务这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是亿速云,小编将为大家推送更多相关知识点的文章,欢迎关注!
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。