天天躁日日躁狠狠躁AV麻豆-天天躁人人躁人人躁狂躁-天天澡夜夜澡人人澡-天天影视香色欲综合网-国产成人女人在线视频观看-国产成人女人视频在线观看

WCF從理論到實踐(7):消息交換模式

系列文章導航:

WCF從理論到實踐(1):揭開神秘面紗

WCF從理論到實踐(2):決戰紫禁之巔

WCF從理論到實踐(3):八號當鋪之黑色契約

WCF從理論到實踐(4):路在何方

WCF從理論到實踐(5):Binding細解

WCF從理論到實踐(6):WCF架構

WCF從理論到實踐(7):消息交換模式

WCF從理論到實踐(8):事件廣播

WCF從理論到實踐(9):實例模式和對象生命周期

WCF從理論到實踐(10):異常處理

WCF從理論到實踐(11)-異步

WCF從理論到實踐(12):事務

WCF從理論到實踐(13):事務投票

WCF從理論到實踐(14):WCF解決方案模板

WCF從理論到實踐(15):響應變化

WCF從理論到實踐(16):操作重載(帶視頻+ppt+源碼)

WCF從理論到實踐(17):OO大背離(帶視頻+ppt+源碼)


本文的出發點

通過閱讀本文,您能理解以下知識:

  1. WCF定義了哪幾種消息交換模式?
  2. One-Way Calls
  3. Request/Reply
  4. Duplex
  5. 用示例來解析WCF的消息交換模式

本文適合的讀者

本文涉及到了SOA中的消息交換的基礎概念,需要一些初級的Xml Web Service和分布式系統開發的經驗,最好理解WCF架構

WCF定義了哪幾種消息交換模式?

WCF定義了三種消息交換方式 ,分別為:

  1. One-Way Calls
  2. Request/Reply
  3. Duplex

One-Way Calls

在幾種消息交換模式中,one-way calls是最沒良心的,對于客戶端,one-way calls就如肉包子打狗,有去無回。下面的圖示給出這種交換模型的特征:

在這種交換模式中,存在著如下的特征

  1. 沒有返回值,返回類型只能為void
  2. 不能包含ref或者out類型的參數
  3. 只有客戶端發起請求,服務端并不會對請求進行回復。

通過設置OperationContract的IsOneWay=True可以將滿足要求的方法設置為這種消息交換模式,方法如下:

[OperationContract(IsOneWay=true)]

void Test(int intVal);

上面的代碼,就是將方法Test設置成為了one-way call的消息交換模式,注意如果Test方法的返回類型不是void或者帶有ref或者out類型的參數,都會拋出異常InvalidOperationException,如下面列表中的方法均不能被聲明為one-way模式

int Test(int intVal);

int Test();

int Test();

void Test(ref int intVal);

void Test(out int intVal);

 

Request/Reply

request/reply比起one-way來說,就更懂得禮尚往來,它是缺省的消息交換模式,類似于http協議中的請求/響應模型。下面的圖示給出這種交換模式的特征:

這種交換模式是使用最多的一中,它有如下特征:

  1. 調用服務方法后需要等待服務的消息返回,即便該方法返回 void 類型
  2. 相比Duplex來講,這種模式強調的是客戶端的被動接受,也就是說客戶端接受到響應后,消息交換就結束了。
  3. 在這種模式下,服務端永遠是服務端,客戶端就是客戶端,職責分明。

它是缺省的消息交換模式,設置OperationContract便可以設置為此種消息交換模式

[OperationContrac]

void Test(int intVal);

注意,盡管Test方法返回為void,但Server也會生成reply響應并發送給client.有來有往是這種模式的特征。

 

Duplex

這種交換模式比起上面兩種,比較復雜,它和request/reply模式類似,也是有來有往,但處理過程卻比request/reply要復雜,因為它可以在處理完請求之后,通過請求客戶端中的回調進行響應操作,這種模式的圖示為:

注意,這種方式和request/reply方式的圖示也很類似,當二者存在著至關重要的不同,它在客戶端也有監聽節點,在callback的時候,服務器和客戶端的角色會進行交換,服務端此時成了嚴格意義上的客戶端,而客戶端此時能接受服務端的callback請求,所以成為了服務端。呵呵,辯證法,都拗口死了,當事實就是這種,就像對與錯一樣,會相互轉換,失敗是成功之母,而成功是失敗之源。廢話少說,Duplex的特征主要包括

  1. 消息交換過程中,服務端和客戶端角色會發生調換
  2. 服務端處理完請求后,返回給客戶端的不是reply,而是callback請求。

打個比方,Reqeust/Reply方式像是搓澡,1個管搓,1個被搓

而duplex像是拳擊,兩個人都會出拳

Duplex模式對Bindding有特殊的要求,它要求支持Duplex MEP(Message Exchange Pattern),如WSDualHttpBinding和NETTcpBinding,有關Binding的介紹請參見http://www.cnblogs.com/jillzhang/archive/2008/02/03/1063406.html

 

用示例來解析WCF的消息交換模式

建立示例的步驟不做具體闡述,下面看一下項目的最終結構:

下表說明各個項目的作用

項目名稱

項目作用

包含文件

Jillzhang.Messaging.Contract

定義WCF服務端和客戶端共同使用的Contract接口

IOneWayJob.cs

INormalJob.cs

IJob.cs

ICallback.cs

Jillzhang.Messaging.Service

實現WCF服務的Contract

OneWayJob.cs

NormalJob.cs

Job.cs

Jillzhang.Messaging.Host

一個Console應用程序,用于承載WCF服務端

Program.cs

App.config

Jillzhang.Messaging.WebSite

一個用于WebSite,用于承載WCF服務。是例外一中Host

OnewayService.svc

NormalJobService.svc

JobService.svc

web.config

Jillzhang.Messaging.Client

WCF客戶端,一個Console應用程序

OnewayProxy.cs

NormalJobProxy.cs

DuplexProxy.cs

MyCallback.cs

Program.cs

app.config

NET技術WCF從理論到實踐(7):消息交換模式,轉載需保留來源!

鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。

主站蜘蛛池模板: 亚洲高清视频免费 | 新版孕妇bbwbbwbbw| 夜夜澡人人爽人人喊_欧美 夜夜骑夜夜欢 | 1000部做羞羞事禁片免费视频网站 | 亚洲一区二区影院 | 成人国产亚洲欧美成人综合网 | 肉蒲团从国内封禁到日本成经典 | 99国产福利 | 老阿姨才是最有V味的直播 牢记永久免费网址 | 久久国产精品二区99 | 国产精品18久久久久久欧美网址 | 渔夫床满艳史bd高清在线直播 | 大迪克黑人异族 | 嫩草影院久久精品 | 亚洲国产高清福利视频 | 欧美日韩综合一区 | 凌晨三点免费WWW | 成人欧美尽粗二区三区AV | 草莓视频在线观看完整高清免费 | 69式国产真人免费视频 | 色悠久久久久综合欧美99 | 黄色网址在线播放 | 717影院理论午夜伦不卡久久 | 国产精品色无码AV在线观看 | 我的奶头被客人吸的又肿又红 | 法国剧丝袜情版h级在线电影 | 三级黄视频 | 日本视频一区二区免费观看 | 国产成人在线视频 | 欧美精品成人a多人在线观看 | 国产亚洲精品久久久久久久 | 一本道亚洲区免费观看 | 免费99精品国产自在现线 | 啪啪漫画无遮挡全彩h同人 啪啪激情婷婷久久婷婷色五月 | 无码人妻精品一区二区蜜桃色欲 | 亚洲欧美综合中文字幕 | 美女胸被男子强捏视频 | 快播萝莉影院 | 伊人国产在线播放 | 一级淫片bbbxxx | 人妻激情综合久久久久蜜桃 |