成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

WCF響應服務基本應用技巧分享

開發 開發工具
WCF響應服務可以被看做是系統中的另一個排隊服務,我們在這篇文章中將會對這一服務做一個詳細的定義,以方便大家理解。

WCF中有很多比較有用的應用技巧,需要我們在不斷的學習和實踐中去積累經驗,來達到一個熟練操作的程度。在這里我們就先為大家詳細介紹一下有關WCF響應服務的一些基本應用技術,希望能給大家帶來一些幫助。#t#

到目前為止,我們所介紹的排隊調用的編程模型是單側的:客戶端向隊列發布單向消息,再由服務處理該消息。如果排隊的操作真的就是單向調用,那么這種模型足以滿足要求。然而,排隊服務有時候需要反過來向其客戶端報告調用的結果、返回的結果,甚至是錯誤。但在默認情況下,這是無法實現的。Windows Communication Foundation 將排隊調用與單向調用等同起來,而單向調用在本質上是禁止任何此類響應的。此外,排隊服務(及其客戶端)可能未處于連接狀態。如果客戶端發布對未連接服務的排隊調用,則當服務最終獲得并處理這些消息時,可能不會有客戶端來接收值,因為客戶端可能早已離線了。這一問題的解決方案是讓服務將報告返回給客戶端所提供的排隊服務。我將此類服務稱作WCF響應服務。

響應服務就是系統中的另一個排隊服務。它同樣可能與客戶端斷開連接并由單獨的進程或單獨的計算機進行托管,或者它也可能共享客戶端的進程。如果響應服務共享客戶端的進程,則當客戶端啟動時,響應服務即開始處理排隊的響應。將響應服務由獨立于客戶端的進程(甚至是計算機)托管有助于進一步將響應服務的生存期與使用該響應服務的客戶端相分離。

 

設計WCF響應服務合約

就如使用任何 Windows Communication Foundation 服務一樣,客戶端和服務需要預先商定響應合約及其適用對象(例如返回的值和錯誤信息,或僅僅是返回的值)。請注意,您也可將響應服務拆分為兩個服務,一個用于響應結果,另一個用于響應錯誤。例如,假定有如下由排隊 MyCalculator 服務所實現的 ICalculator 合約:

 

  1. [ServiceContract]  
  2. interface ICalculator  
  3. {  
  4. [OperationContract(IsOneWay = true)]  
  5. void Add(int number1,int number2);  
  6. ... //更多操作  
  7. }  
  8. [ServiceBehavior(InstanceContextModeInstanceContextMode =  
  9. InstanceContextMode.PerCall)]  
  10. class MyCalculator : ICalculator {...} 

要求 MyCalculator 服務以計算結果來響應客戶端并報告所有錯誤。計算結果為整數形式,錯誤以 Windows Communication Foundation ExceptionDetail 數據合約形式表示。對于響應服務,可按下列方式定義 ICalculatorResponse 合約:

 

  1. [ServiceContract]  
  2. interface ICalculatorResponse  
  3. {  
  4. [OperationContract(IsOneWay = true)]  
  5. void OnAddCompleted(int result,ExceptionDetail error);  

支持 ICalculatorResponse 的WCF響應服務需要檢查返回的錯誤信息,在方法結束時通知客戶端應用程序、用戶或應用程序管理員,并將結果提供給相關方。下面是一個支持 IcalculatorResponse 的簡單響應服務:

 

  1. [ServiceBehavior(InstanceContextModeInstanceContextMode = 
    InstanceContextMode.PerCall)]  
  2. class MyCalculatorResponse : ICalculatorResponse  
  3. {  
  4. [OperationBehavior(TransactionScopeRequired = true)]  
  5. public void OnAddCompleted(int result,ExceptionDetail error)  
  6. {  
  7. MessageBox.Show("結果 = " + result,"MyCalculatorResponse");  
  8. if(error != null)  
  9. {  
  10. //處理錯誤  
  11. }  
  12. }  

實現 MyCalculator 和 MyCalculatorResponse 會直接引出兩個問題。***個問題是同一響應服務可能會被用于處理多個排隊服務上多個調用的響應(或完成),而 MyCalculatorResponse(更重要的是其所服務的客戶端)無法區分這些響應。這一問題的解決方案是讓發出原始排隊調用的客戶端向該調用分配某個***的 ID 作為標記。排隊服務 MyCalculator 需要將該 ID 傳遞給 MyCalculatorResponse,使其能夠應用與該 ID 相關的某種自定義邏輯。

第二個問題是排隊服務如何發現WCF響應服務的地址。與雙向回調不同的是,Windows Communication Foundation 內部并不支持將響應服務引用傳遞給服務。而將該地址放入服務主機配置文件中(客戶端一節中)并不是明智之舉,因為同一排隊服務可能會被多個客戶端調用,而每個客戶端都有其自身專用的響應服務和地址。

一種可能的解決方案是將客戶端所管理的 ID 和所需的響應服務地址作為參數基于排隊服務合約明確傳遞給每個操作:

 

  1. [ServiceContract]  
  2. interface ICalculator  
  3. {  
  4. [OperationContract(IsOneWay = true)]  
  5. void Add(int number1,int number2,  
  6. string responseAddress,string methodID);  

同樣,排隊服務也可以將WCF響應服務的方法 ID 作為參數基于排隊響應合約明確傳遞給每個操作:

 

  1. [ServiceContract]  
  2. interface ICalculatorResponse  
  3. {  
  4. [OperationContract(IsOneWay = true)]  
  5. void OnAddCompleted(int result,ExceptionDetail error,  
  6. string methodID);  

 

責任編輯:曹凱 來源: 博客園
相關推薦

2010-03-01 09:48:23

WCF會話服務

2010-03-01 15:40:04

WCF實例停用

2010-02-25 18:04:02

WCF IIS宿主

2010-03-01 16:04:31

WCF服務契約

2010-02-26 13:40:28

WCF消息頭

2010-03-01 18:11:40

WCF數據契約變更

2010-03-01 11:24:31

WCF面向服務

2010-02-06 16:16:01

C++冒泡排序

2010-02-23 15:58:57

WCF Session

2010-03-01 13:06:49

WCF繼承

2010-01-21 18:26:16

VB.NET拆分合并語

2010-02-25 15:25:19

WCF通道

2010-02-22 15:20:54

WCF WS-Disc

2010-02-22 17:21:02

WCF消息交換

2013-12-12 16:10:21

Lua腳本語言

2010-02-23 13:03:34

WCF序列化

2010-02-26 10:46:12

WCF行為擴展

2010-03-02 10:50:57

WCF元數據交換

2010-02-25 16:45:13

WCF應用技巧

2010-03-01 17:52:03

WCF選擇綁定
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 99re在线播放 | 一区中文字幕 | 国产精品久久久久久久岛一牛影视 | 日日干干夜夜 | 久久久久久电影 | 国产1区| 久久亚洲国产 | 日韩在线资源 | 丁香久久| 嫩草视频网站 | 黄色欧美视频 | 亚洲一区二区三区在线播放 | 国产福利精品一区 | 国产精品激情 | av成年人网站 | 国产欧美精品 | 成人在线精品 | 国产精品成人一区二区三区夜夜夜 | 视频二区在线观看 | 久久另类视频 | 国产丝袜一区二区三区免费视频 | 中文字幕在线看人 | 亚洲品质自拍视频网站 | 成人h动漫亚洲一区二区 | 国产成人亚洲精品 | 丁香久久| 围产精品久久久久久久 | 在线国产精品一区 | www.久久精品视频 | 久久亚洲一区 | 人人干视频在线 | 91精品国产91久久久久福利 | 亚洲a视| 成人区精品一区二区婷婷 | 久久一起草 | 国产精品一区二区精品 | 欧美精品日韩精品国产精品 | 夜夜骑天天干 | 91伊人| 中文字幕亚洲区一区二 | 国产探花在线精品一区二区 |