如何在Silverlight3中消耗WCF服務(wù)

這篇文章主要講解了“如何在Silverlight3中消耗WCF服務(wù)”,文中的講解內(nèi)容簡單清晰,易于學(xué)習(xí)與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學(xué)習(xí)“如何在Silverlight3中消耗WCF服務(wù)”吧!

創(chuàng)新互聯(lián)建站專業(yè)為企業(yè)提供鄯善網(wǎng)站建設(shè)、鄯善做網(wǎng)站、鄯善網(wǎng)站設(shè)計、鄯善網(wǎng)站制作等企業(yè)網(wǎng)站建設(shè)、網(wǎng)頁設(shè)計與制作、鄯善企業(yè)網(wǎng)站模板建站服務(wù),10余年鄯善做網(wǎng)站經(jīng)驗,不只是建網(wǎng)站,更提供有價值的思路和整體網(wǎng)絡(luò)服務(wù)。

消耗服務(wù)

VS2008的Silverlight工具提供了內(nèi)置功能來創(chuàng)建用Silverlight激活的WCF服務(wù)并且在不需要編寫大量代碼的情況下消耗WCF服務(wù)。Silverlight 3現(xiàn)在支持二進(jìn)制XML,這一功能可以用更快的速度把數(shù)據(jù)從服務(wù)器傳到客戶端。如果需要的話,標(biāo)準(zhǔn)SOAP信息也能被傳送。

如果你以前消耗過一個ASP.NET ASMX Web 服務(wù),那么你會覺得消耗WCF服務(wù)易如反掌。VS2008的新增服務(wù)引用對話框允許你選取該服務(wù)并在不編寫大量代碼的情況下生成客戶端。生成代理前,要明白Silverlight只能調(diào)回到原始服務(wù)器,在原始服務(wù)器上,會默認(rèn)提供Silverlight XAP應(yīng)用程序文件。

如果你需要調(diào)用一個WCF服務(wù),該服務(wù)可能存在于不同域或不同端口中,那么該服務(wù)必須擁有客戶訪問政策文件,文件名為clientaccesspolicy.xml,文件位于服務(wù)器低端。Silverlight會檢查這個文件以查看是否該文件被允許執(zhí)行跨域的調(diào)用。

下面的例一展示了一個樣本文件:

< ?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>

例一:客戶訪問政策文件可以放置到服務(wù)器低端以便允許Silverlight客戶來調(diào)用處于不同域或運行于不同端口的服務(wù)。

為了創(chuàng)建一個WCF服務(wù)代理,你首先需要創(chuàng)建一個Silverlight應(yīng)用程序項目。一旦該項目被創(chuàng)建好,你就可以右鍵單擊項目,然后選擇添加服務(wù)參考。如下所示,系統(tǒng)會提供Add Service Reference對話框,圖一顯示出Add Service Reference對話框可以在沒有大量代碼的情況下快速而簡便地生成客戶代理。

圖一:

如何在Silverlight3中消耗WCF服務(wù)

如果WCF服務(wù)位于相同的VS方案中,你可以點擊Discover按鈕。否則,你就要輸入到達(dá)Address文本框中Web Service Description Language(WSDL)文件的路徑。一旦文件被定位,你就可以給代理代碼一個命名空間,然后點擊確認(rèn)按鈕。

一旦客戶代理被創(chuàng)建,你就可以調(diào)用Silverlight應(yīng)用中的服務(wù)。要記住所有與Silverlight一起發(fā)生的網(wǎng)絡(luò)操作都是異步的,因此服務(wù)被調(diào)用的時候,瀏覽器不會鎖定。

例二展示了一個使用客戶代碼調(diào)用服務(wù)和綁定數(shù)據(jù)的示例:

 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;  }

例二;使用一個客戶代理對象來調(diào)用Silverlight中的WCF服務(wù)。

看一看例二中的代碼,你可以看出代理對象是***被創(chuàng)建,然后通過一個事件驅(qū)動型模式,被名為proxy_GetCustomerCompleted的異步事件處理器捆綁起來。該服務(wù)通過援引GetCustomerAsync方法被異步調(diào)用。一旦服務(wù)返回了數(shù)據(jù),調(diào)回方法會被自動調(diào)用,GetCustomerCompletedEventArgs參數(shù)會被訪問以檢索數(shù)據(jù)。在這個示例中,數(shù)據(jù)被直接綁定到應(yīng)用程序的DataContext屬性中。注意不需要有額外的操作來設(shè)定數(shù)據(jù)傳遞路線。代理會自動處理所有的事情。

Silverlight應(yīng)用程序不能直接調(diào)用一個數(shù)據(jù)庫,但是他們可以從一系列諸如WCF服務(wù),ASMX服務(wù)和其他標(biāo)準(zhǔn)兼容等服務(wù)中存取數(shù)據(jù)。

感謝各位的閱讀,以上就是“如何在Silverlight3中消耗WCF服務(wù)”的內(nèi)容了,經(jīng)過本文的學(xué)習(xí)后,相信大家對如何在Silverlight3中消耗WCF服務(wù)這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是創(chuàng)新互聯(lián),小編將為大家推送更多相關(guān)知識點的文章,歡迎關(guān)注!

名稱欄目:如何在Silverlight3中消耗WCF服務(wù)
本文來源:http://muchs.cn/article28/pisccp.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供面包屑導(dǎo)航做網(wǎng)站、關(guān)鍵詞優(yōu)化云服務(wù)器、網(wǎng)站設(shè)計、響應(yīng)式網(wǎng)站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

商城網(wǎng)站建設(shè)