程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> 關於.NET >> 《WCF技術內幕》翻譯15:第1部分_第3章_消息交換模式、拓撲與編排:消息拓撲

《WCF技術內幕》翻譯15:第1部分_第3章_消息交換模式、拓撲與編排:消息拓撲

編輯:關於.NET

《WCF技術內幕》翻譯15:第1部分_第3章_消息交換模式、拓撲與編排:消息拓撲、消息編排和本章小結

消息拓撲

消息拓撲描述的是在一個或多個發送者和接受者之間消息如何發送的。消息拓撲可以描述簡單的應用-應用的連接關系,但是它同樣可以描述復雜的應用-企業的連接。在後續文章裡,面向服務的應用的作用會顯現出來。概括地說,這些可能存在的拓撲結構比面向組件的應用系統能夠涉及到的情況會更加多、更加復雜。

某種層次上,一個消息拓撲是一個或者多個消息交換模式(MEP)的組合。實際上可能存在有無數種拓撲結構,但是通常接受的分類有4個:點對點、數據報點對點、中轉和對等網絡(P2P)。重要的是要注意,與MEP不同,這些不同的消息拓撲名稱還沒有被廣泛接受,所以我這裡有點冒昧。同樣,我們也可以增加或者減少消息拓撲的數量,但是這4個已經足夠我們本次討論的了。

點對點

最簡單和被廣泛使用的消息拓撲,點對點方式是消息拓撲的一個基本組成部分。簡單來說,點對點拓撲指的是一個發送者和一個接受者交換消息。如你在前面文章裡看到的一樣,這個消息交換可以使用數據報、請求/應答或者雙工MEP實現。

只進點對點

我個人認為,數據報點對點是最有趣的拓撲,但是它也是最難實現的。本質上,只進點對點拓撲是一個發送給不同參與者的數據報鏈。重要的是要指導這個拓撲有且僅有數據報MEP組成。有可能消息要返回給參與者,但是在消息裡明確標記返回地址比含蓄描述更好,就想請求/應答方式一樣。通常,這個拓撲要依賴<From>、<ReplyTo>、 <FaultTo>、<RelatesTo>、 <MessageID>和<To> WS-Addressing消息頭塊來實現。

圖3-4:只進點對點消息拓撲

消息轉發

隨著開發社區對消息應用系統的接受,在這些消息應用系統之間轉發消息也會變的越來越重要。一個相似的需求在Internet和電子商務逐漸流行的時候出現了。這個時期典型的例子是服務集群裡的負載均衡器。除了別的以外,負載均衡器轉發請求道可用的資源上。隨著時代進步,負載均衡器變的也更加智能,這個趨勢沒有任何減緩的跡象。我希望在面向服務的應用系統領域有同樣的變化。

通常來說,一個消息轉發代理(broker,經紀人,這裡譯為代理)是一個轉發消息到其它終結點的消息參與者。消息轉發代理能夠根據處理規則決定消息何時、何地並且如何發送給其它消息參與者。一個消息轉發代理拓撲可以細分為分布式消息轉發代理、集中式消息轉發代理和混合消息轉發代理。這個消息轉發代理拓撲很像現在使用的不同郵件服務拓撲。

此外,著名的發布-訂閱拓撲符合消息轉發拓撲的定義。在發布-訂閱架構中,參與者通過注冊自己的感興趣的發布者訂閱特定的消息。當一個訂閱者感興趣的消息發送給發布者,發布者就會轉發消息給所有的訂閱者。換句話說,發布者是消息中轉代理。在SOAP裡,消息中轉代理是一個中介者,但它可以直接標記地址。圖3-5說明了一個基本的消息轉發拓撲。

圖3-5:消息轉發拓撲

對等網絡

對等網絡(P2P)應用系統,像Groove【老徐備注2】 和Microsoft Windows Live messenger,已經變得非常流行。本質上,一個真正的P2P應用是可以直接與其它P2P應用通信的。P2P應用可以與其它P2P應用通過一對一、一對多和多對多方式通信。P2P應用不需要依賴服務器,因為它們可以通過網絡(Mesh)直接通信。網絡(Mesh)是一個指定的、可發現的和自維護的網絡節點集合。在參與進P2P消息交換以前,一個參與者比如先加入網絡(Mesh)。通常,雖然P2P消息拓撲在參與者之間提供了豐富的交互能力,但是它仍然有很強的可伸縮性和彈性的。圖3-6展示了一個P2P拓撲結構。正如你將在本書後面看到的,WCF為P2P拓撲提供了強大的支持。

圖3-6:對等網絡(P2P)拓撲

消息編排

消息編排是有組織的代表一組邏輯操作的消息交換集合。當我們使用信用卡給愛人或者其他重要的人買禮物的時候,就參與進了一個消息編排。這個買賣的邏輯操作由幾個消息交換組成“

1.商店發送信息給商業服務。

2.商業服務發送數據給銀行。

3.銀行發送一個批准代碼。

每個數據交換單獨來看都沒什麼意思,但是總體來看,他們表示了一個邏輯操作。

消息編排在面向服務的應用系統裡起著關鍵作用,特別是在安全性、可靠性和事務性方面。就像你在第一章:藍月亮裡看到的,這些不依賴於特定傳輸的特性要求我們在消息裡放置更多的信息。這裡著重指出,我們必須定義參與者之間的消息流。當提供以消息為中心的安全時,我們比如考慮發送者和接收者如何簽名和加密消息。當提供可靠性時,我們比如考慮收到消息時接收者如何和發送通信。同樣,在事務處理中,我們必須考慮事務裡的參與者如何提示操作已經成功提交。所有的這些考慮需要一個定義良好的消息編排集合。

除了別的以外 ,許多WS-*規范定義了用於提供安全性、可靠性和事務性的編排。WCF包含理解WS-*規范的類型,於是在WCF應用系統中就可以不依賴特定的傳輸來提供安全性、可靠性和事務性。

我們也可以自由定義我們自己的消息編排。這些編排在消息交換中,可以描述業務過程、規則為一個策略或者特定的功能。技術上創建我們自定義的WCF組件是可行的,但是卻很無聊,尤其是復雜的編排。像BizTalk Server和WF都能更適合這個任務。

本章小結

像我們在第2章裡看到的,一個消息應用可以發送和/或接受消息。本章,我介紹了描述消息參與者之間的消息交換的基本原理。使用的術語取決於你要描述的粒度級別。MEP是最常見的描述2個消息參與者之間消息交換粒度的一種方式。三種總所周知的MEP是數據報、請求/應答和雙工。在消息參與在之中,MEP可以被劃入消息拓撲裡。此外,一個消息交換集合可以符合一個預定義的消息編排。下一章裡,我們會看到WCF應用系統中主要的架構組件如何組織在一起的。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved