1.服務總線
運行在組織內部的應用提供了WCF創建的Web此服務,此服務可以連接到組織外部的軟件上。軟件通常運行在Windows Azure這類云平臺或其他組織內部。
在具體實現服務連接的過程中會出現很多問題。比如其他組織內部的客戶端連接到Web服務時,需要知道如何定位到服務的終端。其他組織的軟件請求需要確定如何通過服務器租用端的服務。網絡地址轉換(Network Address Tanslation,NAT)是十分普遍的,應用對外通常不會有一個固定的IP地址。那么,在沒有使用從NAT的情況下,請求需要確定如何通過防火墻。
AppFabrie中,服務總線(Service BUS)解決了這些問題,如圖4-21所示,一個WCF服務可以通過服務總線注冊終端,然后由客戶端發現和使用這些終端訪問服務。

開始時,WCF服務注冊一個或多個服務總線的終端(圖4-21中步驟1)。對于每個注冊的終端,服務總線都會顯示其通信終端(步驟2)。服務總線分配一個URI口令給組織,組織通過這個服可以自由創建命名層次。這樣,終端就被分配了具體的URIs。
在提供了終端URI的情況下,客戶端可通過服務總線注冊(步驟3)發現終端。這個請求使用了Atom Publishing Protocol,并且返回了一個AtomPub服務參考文檔到代表應用的終端服務總線上去。在上述工作完成后,客戶端可以調用通過上述顯示終端的服務操作(步驟4)。對于每個服務總線接受請求,調用WCF服務顯示的終端通信操作 (步驟5)。
用戶服務需要使用AppFabric服務總線的開放TCP連接顯示終端,并保持這個連接一直處于開放的狀態,這就解決了兩個問題:一是解決了問題,服務總線上的開放連接可以路由到應用程序;二是由于連接是在防火墻內初始化的,所以通過連接將消息傳回應用時防火墻不會阻止該消息。
服務總線也提高了安全性。由于客戶端只可以看見服務總線提供的一個IP地址,看不到內部的IP地址。服務總線充當了一個外部DMZ(Demilitarized,隔離區)的角色,起到了間接阻止攻擊的作用。
通過服務總線展示其服務的應用一般是使用WCF實現,客戶端可以由或其他技術創建,比如Java等。這些客戶端創建完成之后,他們可以通過TCP、HTTP或者HTTPS發送請求。應用同樣可以自由地使用自己的安全機制,比如加密、屏蔽通信攻擊等等
服務總線提供了以下一些有用的特征。
(1)支持消息緩沖。消息緩沖是通過一個簡單的隊列來實現的。客戶端可以放置一個多達256MB大小的消息到消息緩沖池中去,而不需要客戶端直接響應服務。存儲消息持久存放在磁盤上,服務可以從磁盤上讀取這些被放置的消息。為了防止故障的發生,存放的消息通常需要進行備份,與Windows Azure平臺上消息備份方式相同。
(2)多個WCF服務監聽同一個URI。服務總線通過監聽服務隨機傳播客戶端請求,為WCF服務提供負載均衡和容錯能力。