這篇文章主要講解了“如何在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進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。