跨平臺的網絡通信中間件:ICE和ACE

二十世紀九十年代中期以來,業界一直在使用DCOM和CORBA這樣的面向對象的中間件平臺。在分佈式的應用中,中間件平臺託管了大部分網絡事務,比如對數據進行編碼與解碼以進行傳送,把邏輯對象地址映射到物理傳輸端點,根據客戶和服務器的機器架構改變數據的表示,以及按照需要自動啓動服務器。
DCOM和CORBA由於自身的缺點,都沒有成功佔領大部分分佈式計算的市場。
DCOM是Microsoft的獨家解決方案,在異構網絡中,各種機器運行多種操作系統,無法都使用DCOM。
同時DCOM不支持創建大量數目的對象(數十萬或數百萬),這在很大程度上是它的分佈式垃圾收集機帶來的開銷造成的。
雖然有多家供應商提供CORBA產品,但是沒有一家供應商能夠爲異構網絡環境中的所有操作系統環境提供實現。儘管進行了大量標準化工作,不同的CORBA實現之間仍缺乏互操作性,從而不斷地造成各種問題;而且,由於供應商常常會自行定義擴展,而CORBA又缺乏針對多線程環境的規範,對於像C或C++這樣的語言,源碼兼容性從未完全實現過。
在異構網絡環境中,讓DCOM和CORBA共存不是一件容易的事情。
2002年,Microsoft推出了.NET平臺取代了DCOM。
.NET提供了比DCOM更強大的分佈式計算支持,但是仍然是Microsoft的獨家解決方案。
另一方面,CORBA技術停滯不前,許多供應商離開了市場,CORBA規範中的許多缺陷未能得到及時解決。
在DCOM 和CORBA衰敗的同時,分佈式計算領域的研發人員對SOAP和Web Services產生了濃厚的興趣。
SOAP 和Web Services技術一度引發了很大的公衆效應,業界發表了許多論文。
但是無論是在網絡帶寬方面,還是在CPU開銷方面,SOAP都會給應用程序留下嚴重的性能瓶頸。
應用程序可以把各種SOAP 消息拼湊在一起,但這樣做極其繁瑣而容易出錯。
Web Services的標準化進程非常緩慢,多年以來一直停留在技術層面的實現上。
許多專家擔心SOAP和Web Services的架構安全性。
在這樣的背景下,網絡通訊的中間件ICE和ACE誕生了。
ICE的全稱是 ICE是一款高性能的中間件,支持分佈式的部署管理,消息中間件,以及網格計算等等。
 ICE的優點主要有:
面向對象的語義,所有的操作調用都使用遲後綁定。 
支持同步和異步的消息傳遞,提供了同步和異步的操作調用和分派,提供了發佈——訂閱消息傳遞機制。 
與硬件架構無關,客戶端及服務器與底層的硬件架構屏蔽開來。對於應用代碼而言,像字節序和填充這樣的問題都隱藏了起來。 
與上層的編程語言無關,客戶端和服務器可以分別部署,所用語言也可以不同,支持C++、Java語言,客戶端支持PHP語言。  
與採用的操作系統無關,ICE完全是可移植的,同樣的源碼能夠在Windows、Linux、MacOS和UNIX上編譯和運行。 
完全是線程化的,其API是線程安全的。
採用TCP、IP 和UDP作爲傳輸協議,客戶端和服務器代碼都不需要了解底層的傳輸機制。 
服務器的位置是對用戶透明的,ICE例程負責定位對象,並管理底層的傳輸機制,比如打開和關閉連接。客戶與服務器之間的交互顯得像是無連接的。服務器可以遷移到不同的物理地址,而不會使客戶持有的代理失效,而客戶完全不知道對象實現是怎樣分佈在多個服務器進程上的。 
採用SSL強加密,可以使客戶和服務器完全安全地進行通信。 
採用內建的持久機制創建持久的對象。並且提供了對高性能數據庫Berkeley DB的內建支持。
ACE提供了一組豐富的可重用C++包裝外觀(Wrapper Facade)和框架組件,
可跨多種平臺完成通用的通信軟件任務,其中包括:
事件多路分離和事件處理器分派、信號處理、服務初始化、進程間通信、
共享內存管理、消息路由、分佈式服務動態(重)配置、併發執行和同步等等。
ACE簡化了使用進程間通信、事件多路分離、顯式動態鏈接和併發的面向對象的網絡應用和服務的開發。
 ACE的好處包括:
增強可移植性:在ACE組件的幫助下,很容易在一種OS平臺上編寫併發網絡應用,然後快速地將它們移植到各種其他的OS平臺上。 
更好的軟件質量:ACE使用了許多可提高軟件質量的關鍵設計模式,提供了通信軟件靈活性、可擴展性、重用性和模塊性。 
更高的效率和可預測性:ACE支持廣泛的應用服務質量(QoS)需求,包括延遲敏感應用的低響應等待時間、高帶寬應用的高性能,以及實時應用的可預測性。
更容易轉換到標準的高級中間件:TAO使用了ACE提供的可重用組件和模式,按照CORBA的標準實現,並且爲高性能和實時系統作了優化。
ACE包含一個高級的網絡編程框架,集成並增強了較低層次的C++包裝外觀。
該框架支持將併發分佈式服務動態配置進應用。
ACE的框架部分包含以下組件:
事件多路分離組件:ACE Reactor(反應器)和Proactor(前攝器)是可擴展的面向對象多路分離器,它們分派應用專有的處理器,以響應多種類型的基於I/O、定時器、信號和同步的事件。 
服務初始化組件:ACE Acceptor(接受器)和Connector(連接器)組件分別使主動和被動的初始化任務與初始化一旦完成後通信服務所執行的應用專有的任務去耦合。 
服務配置組件:ACE Service Configurator(服務配置器)支持應用的配置,這些應用的服務可在安裝時或運行時被動態裝配。 
分層的流組件:ACE Stream組件簡化了像用戶級協議棧這樣的由分層服務組成的通信軟件應用的開發。 
ORB適配器組件:通過ORB適配器,ACE可以與單線程和多線程CORBA實現進行無縫集成。 
同爲網絡通信中間件,ICE和ACE的區別在於,前者是對通信對象的封裝,
例如如客戶端的ICE核心和服務器端的ICE核心的不同,
而後者是對通信本身的封裝,例如對套接字的封裝,對同步異步通信方式的封裝。
後者比前者更加底層,更加抽象。ACE可以認爲是通用網絡編程框架軟件,而ICE則是一個跨平臺的RPC軟件。
參考文檔:
Michi Henning和Mark Spruiell編寫的《Distributed Programming with ICE》; 
Douglas C. Schmidt編寫的《C++ Network Programming with Patterns, Frameworks, and ACE》。
Internet Communications Engine,即因特網通信引擎。
ICE是由ZeroC, Inc.公司開發的。
ACE的全稱是ADAPTIVE Communication Environment,即自適應的通信環境。
ACE自從問世以來得到了多家公司的商業支持。
ICE和ACE目前都是開放源代碼的中間件。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章