- WCF技術剖析(卷1)
- 蔣金楠
- 1919字
- 2018-12-27 11:32:32
1.2 WCF是對現有Windows平臺下分布式通信技術的整合
建立一個完全基于SOA的通信框架是微軟推出WCF的主要動機,而另一個促使微軟不惜重金打造WCF的動機是將現有的所有分布式技術統一起來,提供一個統一的應用編程接口(API)。在過去若干年中,微軟先后推出了一系列分布式通信技術,比較典型的包括COM/DCOM、Enterprise Service、.NET Remoting、XMLWeb服務、MSMQ等。
COM和DCOM
COM采用了基于組件的設計,通過組件對相關功能進行封裝。COM遵循相應的規范,使組件之間能夠進行相互通信。一個組件通過一個接口和一個唯一標識(GUID)對外提供功能,該接口和標識也是外界調用該組件的依據。COM的一個顯著好處是使通過不同編程語言編寫的組件能夠通過IKnown或其他一些標準接口進行互操作。OLE和ActiveX完全采用基于COM的設計,而且微軟的很多產品,比如Office、SQL Server都可以看到COM的身影。
COM最初僅僅提供了組件之間的本地調用,隨著分布式應用的發展,對于遠程組件調用的需求越來越多,于是出現了DCOM。DCOM(Distributed COM)即為了實現分布式遠程調用而對COM進行的擴展,其本質還是COM。不過,在現有COM的基礎上,DCOM對可靠傳輸、安全等提供了基本的支持。
.NET Remoting
.NET Remoting是微軟推出的第一個基于.NET的分布式通信技術。.NET Remoting在一定程度上借鑒了DCOM的設計,并在很多方面對DCOM進行了加強,使其成為一個高性能和可擴展的分布式通行框架。WCF在很多方面都可以看到.NET Remoting的影子。比如相似的遠程對象(服務實例)激活方式和遠程對象(服務)寄宿(Hosting)方式等。
在通信層,.NET Remoting和WCF都提出了信道棧(Channel Stack)的概念,通過相應的信道(.NET Remoting中稱為Channel Sink)對消息進行處理。和WCF一樣,.NET Remoting的信道棧也是可擴展的,我們可以自定義信道,通過配置將其插入信道棧相應的位置。在我看來,.NET Remoting是WCF之前最為成熟的分布式通信框架。.NET Remoting不足之處在于不能實現對跨平臺的支持。
在通信層,WCF和NET Remoting都采用基于信道棧的“管道式”消息處理與傳遞機制。信道棧是通過一系列相關信道進行有序組合構成的管道,其中的每一“節”信道獨立地完成基于某種功能的消息處理。這是一種極具擴展性的設計,信道棧的組合性使我們能夠根據具體的消息處理需求對構成管道的信道進行合理的組合。此外,我們甚至可以創建自定義信道實現一些現有信道無法實現的消息處理功能。
在我看來,.NET Remoting是WCF之前最為成熟的分布式通信框架。其最大的不足之處在于不能提供對跨平臺的支持,僅僅提供服務端和客戶端均處于.NET平臺下的通信。
Web服務 + WSE
為了實現對跨平臺的支持,微軟在ASP.NET平臺上開發出了Web服務。ASP.NET Web服務之所以能夠提供跨平臺的互操作性,在于它建立在一系列開放的標準之上,這些標準包括XML、XSD、SOAP和WSDL等。
為了支持WS-*,微軟在ASP Web服務的基礎上推出了WSE(Web Service Enhancement)。從名稱不難看出,WSE是為了彌補ASP Web服務的不足而推出的,它在很多方面實現了對現有ASP Web服務功能的加強,使ASP Web服務正式成為一個適合企業級應用的通信框架。微軟先后推出WSE 1.0、2.0和3.0,它們分別對不同的WS-*規范提供支持,比如WS-Securiry、WS-Routing、WS-Attachement、WS-Addressing、WS-Trust、WS-SecureConversation和WS-MTOM等。正因為WCF的出現,微軟將不再推出新的WSE版本,從這一點不難看出WCF將會全面取代ASP.NET Web Service。
MSMQ
消息隊列(Message Queuing,也稱MSMQ),是微軟對消息服務領域的開創性嘗試。它采用了特殊的通信機制,對改善和提高系統的可擴展性(scalability)和高可用性(High Availability)具有重要的意義。MSMQ具有其他通信手段無法企及的優點,這些優點包括:
● 對異步的消息發送方式和離線通信方式的支持:消息隊列下消息的發送永遠是異步的,消息發送的失敗不會對發送端的應用造成影響。消息隊列支持離線的通信方式,如果由于網絡或其他相關的問題導致目標隊列暫時不可達,消息可暫存于本地的消息隊列中,一旦檢測到目標隊列可達,則自動進行消息的發送。
● 消息的發送方和消息接收處理方完全分離:由于消息隊列異步、離線的通信方式,可以將消息的發送方和消息接收方完全分離開來,使他們變成相互獨立的應用。
● 可靠的消息傳輸:消息隊列通過特殊的消息傳輸的機制,比如消息確認、超時處理、消息日志及死信隊列等,充分保證了消息的可靠傳輸。
● 事務的支持:消息隊列同時提供對本地事務和分布式事務的支持。通過分布式事務,完全可以把對消息隊列的操作和一個基于SQL Server的操作納入同一個事務之中。
WCF是Windows平臺下各種分布式技術的集大成者
通過合理利用上面這些分布式技術完全可以創建一個完美的、能夠適用不同層次需求的分布式應用。但是,這些單一的技術和產品專注于某一特定的領域,并且具有完全不同的應用編程接口(API),這使得開發人員很難從容地從其中一種轉移到另一種上去。基于這樣的原因,急需一種全新的通信框架來整合以上這些技術,這就是WCF需要完成的使命。WCF是Windows平臺下各種分布式技術的集大成者,它將上述的這些通信技術完全整合在一起,提供了一套統一的API。圖1-1體現WCF對Windows平臺下現有分布式技術的整合。

圖1-1 WCF對現有分布式技術的整合
- 新編Visual Basic程序設計上機實驗教程
- 零基礎PHP學習筆記
- Java加密與解密的藝術(第2版)
- Learning AndEngine
- Mastering Apache Spark 2.x(Second Edition)
- 表哥的Access入門:以Excel視角快速學習數據庫開發(第2版)
- Keras深度學習實戰
- PHP+Ajax+jQuery網站開發項目式教程
- 響應式架構:消息模式Actor實現與Scala、Akka應用集成
- 好好學Java:從零基礎到項目實戰
- MATLAB GUI純代碼編寫從入門到實戰
- 微信小程序開發實戰:設計·運營·變現(圖解案例版)
- Python網絡爬蟲實例教程(視頻講解版)
- JBoss AS 7 Development
- Hands-On ROS for Robotics Programming