ACE和ICE-高效的網(wǎng)絡(luò)編程中間平臺簡介 (2).docx_第1頁
ACE和ICE-高效的網(wǎng)絡(luò)編程中間平臺簡介 (2).docx_第2頁
ACE和ICE-高效的網(wǎng)絡(luò)編程中間平臺簡介 (2).docx_第3頁
ACE和ICE-高效的網(wǎng)絡(luò)編程中間平臺簡介 (2).docx_第4頁
ACE和ICE-高效的網(wǎng)絡(luò)編程中間平臺簡介 (2).docx_第5頁
已閱讀5頁,還剩2頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

ACE和ICE-高效的網(wǎng)絡(luò)編程中間平臺簡介關(guān)鍵詞: ACE ICE COM DCOM CORBA 自從上世紀(jì)九十年代以來,計(jì)算工業(yè)一直在使用像DCOM 和CORBA這樣的面向?qū)ο笾虚g件平臺。在使分布式計(jì)算能為應(yīng)用開發(fā)者所用的進(jìn)程中,面向?qū)ο笾虚g件是十分重要的一步 。開發(fā)者第一次擁有了這樣的可能:可以構(gòu)建分布式應(yīng)用中間件平臺會照管大部分網(wǎng)絡(luò)雜務(wù),比如整編(marshaling)和解編(unmarshaling)(對數(shù)據(jù)進(jìn)行編碼與解碼,以進(jìn)行傳送)、把邏輯對象地址映射到物理傳輸端點(diǎn)、根據(jù)客戶和服務(wù)器的原生機(jī)器架構(gòu)改變數(shù)據(jù)的表示,以及應(yīng)需自動啟動服務(wù)器。然而,由于一些原因,無論是DCOM 還是CORBA,都未能成功占領(lǐng)大部分計(jì)算市場:(1) DCOM 是Microsoft 的獨(dú)家解決方案,在異種網(wǎng)絡(luò)中,各種機(jī)器會運(yùn)行多種操作系統(tǒng),無法使用COM。(2) DCOM 不能支持大量對象(數(shù)十萬或數(shù)百萬),這在很大程度上是它的分布式垃圾收集機(jī)制來的開銷造成的。(3)盡管有多家供應(yīng)商提供CORBA 產(chǎn)品,幾乎不可能找到一家供應(yīng)商,能夠?yàn)楫惙N網(wǎng)絡(luò)中的所有環(huán)境提供實(shí)現(xiàn)。盡管進(jìn)行了大量標(biāo)準(zhǔn)化工作,不同的CORBA 實(shí)現(xiàn)之間仍缺乏互操作性,從而不斷地造成各種問題;而且,由于供應(yīng)商常常會自行定義擴(kuò)展,而CORBA 又缺乏針對多線程環(huán)境的規(guī)范,對于像C 或C+ 這樣的語言,源碼兼容性從未完全實(shí)現(xiàn)過.(4)DCOM和 CORBA都過于復(fù)雜。在異種環(huán)境中,讓DCOM 和CORBA 共存從來都不是一件容易的事情:盡管有供應(yīng)商提供互操作產(chǎn),這兩種平臺之間的互操作從來都不是無縫的,而且難以管理,會產(chǎn)生互不相連的技術(shù)孤島。2002 年,Microsoft .NET 平臺取代了DCOM。但盡管.NET 提供了比DCOM 更強(qiáng)大的分布式計(jì)算支持,它仍然是Microsoft 的獨(dú)家解決方案,因而不是異種環(huán)境下的選擇。另一方面,CORBA 近年來已停滯不前,許多供應(yīng)商離開了市場,給消費(fèi)者留下了不再受到廣泛支持的平臺;剩下的少數(shù)供應(yīng)商在進(jìn)一步標(biāo)準(zhǔn)化方面的興趣也已衰退,致使CORBA 規(guī)范中的許多缺陷未能得到解決,或是在它們被報告多年之后才得到解決。在DCOM 和CORBA 衰敗的同時,分布式計(jì)算社群對SOAP和web services產(chǎn)生了濃厚的興趣。使用無處不在的WWW 基礎(chǔ)設(shè)施和HTTP來開發(fā)中間件平臺的想法十分迷人至少在理論上。SOAP 和web services 曾經(jīng)允諾要成為Internet 上的分布式計(jì)算通用語言。 但盡管引發(fā)了很大的公眾效應(yīng),發(fā)表了許多論文,web services 卻沒有能兌現(xiàn)其允諾:用web services 架構(gòu)開發(fā)的商業(yè)系統(tǒng)非常少。其原因是:無論是在網(wǎng)絡(luò)帶寬方面,還是在CPU 開銷方面,SOAP 都會給應(yīng)用造成嚴(yán)重的性能惡化,以致于該技術(shù)無法適用于許多有苛刻性能要求的系統(tǒng)。盡管SOAP 提供了on-the-wire 規(guī)范,要開發(fā)現(xiàn)實(shí)的應(yīng)用,那仍是不夠的,因?yàn)樵撘?guī)范提供的抽象層次太低。應(yīng)用可以把各種SOAP 消息拼湊在一起,但這樣做極其繁瑣而易錯。缺乏更高級的抽象促使供應(yīng)商提供各種應(yīng)用開發(fā)平臺,使遵從SOAP 的應(yīng)用開發(fā)自動化。但是,除了協(xié)議一級,這些開發(fā)平臺完全沒有標(biāo)準(zhǔn)化,不可避免是私有的,所以用一家供應(yīng)商開發(fā)的應(yīng)用無法與其他供應(yīng)商的中間件產(chǎn)品一起使用。關(guān)于SOAP 和web services 的架構(gòu)安全性,有一些嚴(yán)重的擔(dān)憂。ACE綜述ACE自適配通信環(huán)境(ADAPTIVE Communication Environment)是可自由使用、開放源碼的面向?qū)ο螅∣O)框架(framework),它實(shí)現(xiàn)了許多用于并發(fā)通信軟件的核心模式。ACE提供了一組豐富的可重用C+包裝外觀(wrapper facade)和框架組件,可跨多種平臺完成通用的通信軟件任務(wù),其中包括:事件多路分離和事件處理器分派、信號處理、服務(wù)初始化、進(jìn)程間通信、共享內(nèi)存管理、消息路由、分布式服務(wù)動態(tài)(重)配置、并發(fā)執(zhí)行和同步,等等。ACE的目標(biāo)用戶是高性能和實(shí)時通信服務(wù)和應(yīng)用的開發(fā)者。它簡化了使用進(jìn)程間通信、事件多路分離、顯式動態(tài)鏈接和并發(fā)的OO網(wǎng)絡(luò)應(yīng)用和服務(wù)的開發(fā)。此外,通過服務(wù)在運(yùn)行時與應(yīng)用的動態(tài)鏈接,ACE使系統(tǒng)的配置和重配置得以自動化。ACE正在進(jìn)行持續(xù)的改進(jìn)。Riverace公司()采用開放源碼商業(yè)模式對ACE進(jìn)行商業(yè)支持。此外,ACE開發(fā)組的許多成員目前正在進(jìn)行The ACE ORB(TAO,/schmidt/TAO.html)的開發(fā)工作。使用ACE的好處(1)增強(qiáng)可移植性:在ACE組件的幫助下,很容易在一種OS平臺上編寫并發(fā)網(wǎng)絡(luò)應(yīng)用,然后快速地將它們移植到各種其他的OS平臺上。而且,因?yàn)锳CE是開放源碼的自由軟件,你無需擔(dān)心被鎖定在特定的操作系統(tǒng)平臺或編譯器上。(2)更好的軟件質(zhì)量:ACE的設(shè)計(jì)使用了許多可提高軟件質(zhì)量的關(guān)鍵模式,這些質(zhì)量因素包括通信軟件靈活性、可擴(kuò)展性、重用性和模塊性。(3)更高的效率和可預(yù)測性:ACE經(jīng)仔細(xì)設(shè)計(jì),支持廣泛的應(yīng)用服務(wù)質(zhì)量(QoS)需求,包括延遲敏感應(yīng)用的低響應(yīng)等待時間、高帶寬應(yīng)用的高性能,以及實(shí)時應(yīng)用的可預(yù)測性。(4)更容易轉(zhuǎn)換到標(biāo)準(zhǔn)的高級中間件:TAO使用了ACE提供的可重用組件和模式。它是CORBA的開發(fā)源碼、遵循標(biāo)準(zhǔn)的實(shí)現(xiàn),并為高性能和實(shí)時系統(tǒng)作了優(yōu)化。為此,ACE和TAO被設(shè)計(jì)為能良好地協(xié)同工作,以提供全面的中間件解決方案。ACE構(gòu)架ACE還包含一個高級的網(wǎng)絡(luò)編程框架,集成并增強(qiáng)了較低層次的C+包裝外觀。該框架支持將并發(fā)分布式服務(wù)動態(tài)配置進(jìn)應(yīng)用。ACE的框架部分包含以下組件:(1)事件多路分離組件:ACE Reactor(反應(yīng)器)和Proactor(前攝器)是可擴(kuò)展的面向?qū)ο蠖嗦贩蛛x器,它們分派應(yīng)用專有的處理器,以響應(yīng)多種類型的基于I/O、定時器、信號和同步的事件。(2)服務(wù)初始化組件:ACE Acceptor(接受器)和Connector(連接器)組件分別使主動和被動的初始化任務(wù)與初始化一旦完成后通信服務(wù)所執(zhí)行的應(yīng)用專有的任務(wù)去耦合。(3)服務(wù)配置組件:ACE Service Configurator(服務(wù)配置器)支持應(yīng)用的配置,這些應(yīng)用的服務(wù)可在安裝時和/或運(yùn)行時被動態(tài)裝配。(4)分層的流組件:ACE Stream組件簡化了像用戶級協(xié)議棧這樣的由分層服務(wù)組成的通信軟件應(yīng)用的開發(fā)。(5)ORB適配器組件:通過ORB適配器,ACE可以與單線程和多線程CORBA實(shí)現(xiàn)進(jìn)行無縫集成。ACE框架組件便利了通信軟件的開發(fā),它們無需修改、重編譯、重鏈接,或頻繁地重啟運(yùn)行中的應(yīng)用,就可被更新和擴(kuò)展。在ACE中,這樣的靈活性是通過結(jié)合以下要素來獲得的:(1)C+語言特性,比如模板、繼承和動態(tài)綁定,(2)設(shè)計(jì)模式,比如抽象工廠、策略和服務(wù)配置器,以及(3)OS機(jī)制.分布式服務(wù)和組件除了OS適配層、C+包裝外觀和框架組件,ACE還提供了包裝成自包含組件的標(biāo)準(zhǔn)分布式服務(wù)庫。盡管這些服務(wù)組件并不是ACE框架庫的嚴(yán)格組成部分,它們在ACE中扮演了兩種角色:1. 分解出可重用分布式應(yīng)用的“積木”:這些服務(wù)組件提供通用的分布式應(yīng)用任務(wù)的可重用實(shí)現(xiàn),比如名字服務(wù)、事件路由、日志、時間同步和網(wǎng)絡(luò)鎖定。2. 演示常用的ACE組件的用例:這些分布式服務(wù)還演示了怎樣用像Reactor、Service Configurator、Acceptor和Connector、Active Object,以及IPC包裝這樣的ACE組件來有效地開發(fā)靈活、高效和可靠的通信軟件。ICE綜述ICE(Internet Communications Engine)是ZeroC提供的一款高性能的中間件,基于ICE可以實(shí)現(xiàn)電信級的解決方案。在設(shè)計(jì)網(wǎng)站架構(gòu)的時候可以使用ICE實(shí)現(xiàn)對網(wǎng)站應(yīng)用的基礎(chǔ)對象操作,將基礎(chǔ)對象操作和數(shù)據(jù)庫操作封裝在這一層,在業(yè)務(wù)邏輯層以及表現(xiàn)層(java,php,.net,python)進(jìn)行更豐富的表現(xiàn)與操作,從而實(shí)現(xiàn)比較好的架構(gòu)。基于ICE的數(shù)據(jù)層可以在未來方便的進(jìn)行擴(kuò)展。ICE支持分布式的部署管理,消息中間件,以及網(wǎng)格計(jì)算等等。ICE和ACE在性能與開發(fā)簡便上深化了CORBA這是一個老牌的分布式中間件平臺,并且以其標(biāo)準(zhǔn)實(shí)現(xiàn)困難,開發(fā)者使用困難而著稱。ICE采用的許多思想也能在CORBA 及以前的一些分布式計(jì)算平臺中找到。在有些方面, ICE與CORBA 非常接近,而在另外一些方面,它們的差異則意義深遠(yuǎn),并且在架構(gòu)上有著廣泛的影響。如果你曾經(jīng)使用過CORBA,了解這些差異十分重要。盡管從表面看來,ICE對象模型與CORBA 對象模型是一樣的,但它們在一些重要方面卻有所不同。類型系統(tǒng)ICE對象和CORBA 對象一樣,都只有一個派生層次最深的(most derived) 主接口。但I(xiàn)CE對象可以提供其他接口作為facets。重要的是要注意到,一個ICE對象的所有facets 都具有相同的對象標(biāo)識,也就是說,客戶看到的是具有多個接口的單個對象,而不是看到多個對象、每個對象有不同的接口。facets 提供了極大的架構(gòu)靈活性。特別地,它們?yōu)榘姹竟芾韱栴}提供了一種解決途徑:你可以簡單地給已經(jīng)存在的對象增加新的facet,輕松地?cái)U(kuò)展某個服務(wù)器的功能,而不會破壞已有的、已經(jīng)部署的客戶。代理語義ICE代理(CORBA 對象引用的等價物)不是不透明的。 客戶只要知道對象的類型和標(biāo)識,無需其他系統(tǒng)組件的支持,就可以創(chuàng)建出代理(在使用間接綁定時, 不必了解對象的傳輸?shù)刂罚?。ICE是一種面向?qū)ο蟮闹虚g件平臺。從根本上說,這意味著ICE為構(gòu)建面向?qū)ο蟮目蛻舴?wù)器應(yīng)用提供了工具、API 和庫支持。ICE應(yīng)適合在異種環(huán)境中使用:客戶和服務(wù)器可以用不同的編程語言編寫,可以運(yùn)行在不同的操作系統(tǒng)和機(jī)器架構(gòu)上,并且可以使用多種網(wǎng)絡(luò)技術(shù)進(jìn)行通信。無論部署環(huán)境如何,這些應(yīng)用的源碼都是可移植的。使用ICE的好處(1)客戶無需詢問外部的查找服務(wù),比如命名服務(wù),就能夠創(chuàng)建代理。實(shí)際上,對象標(biāo)識和對象的名字被認(rèn)為是同一事物。這樣能夠消除命名服務(wù)的內(nèi)容與實(shí)際情況失去同步所可能帶來的問題;同時,為了讓客戶和服務(wù)器正常工作、必須正常運(yùn)轉(zhuǎn)的系統(tǒng)組件的數(shù)目也會減少。(2)通過創(chuàng)建所需的初始對象的代理,客戶可以輕松地進(jìn)行自引導(dǎo)(bootstrap)。這樣就無需使用單獨(dú)的引導(dǎo)服務(wù)了。(3)不需要對串化代理進(jìn)行不同的編碼。一種統(tǒng)一的表示就足夠了,而這種表示是人可以閱讀的。這樣就避免了CORBA 的三種不同的對象引用編碼(IOR、corbaloc,以及corbaname)所帶來的各種復(fù)雜問題。開發(fā)者多年使用CORBA 的經(jīng)驗(yàn)表明,對象引用的不透明性很成問題:它不僅需要更加復(fù)雜的API 和運(yùn)行時支,還會妨礙我們構(gòu)建現(xiàn)實(shí)的系統(tǒng)。為此, CORBA 增加了像corbaloc 和corbaname 這樣的機(jī)制,以及用于進(jìn)行引用比較的is_equivalent 和hash 操作(這些操作的定義有問題)。所有這些機(jī)制都降低了對象引用的不透明性,但CORBA 平臺的其他部分仍試圖維持引用是不透明的這樣一個錯覺。結(jié)果,開發(fā)者在兩方面所得的東西都是最糟的:引用既不是完全不透明的,也不是完全透明的這樣所帶來的混亂和復(fù)雜性相當(dāng)大。對象標(biāo)識ICE對象模型假定對象標(biāo)識在任何地方都是唯一的(但并沒有把這個要求強(qiáng)加給應(yīng)用開發(fā)者)。這種對象標(biāo)識的主要好處是,你可以遷移服務(wù)器,也可以把多個不同服務(wù)器中的對象合并進(jìn) 一個服務(wù)器,而不用考慮名字沖突的問題:如果每個ICE對象都具有唯一的標(biāo)識,它就不可能與另外的域中的對象的標(biāo)識發(fā)生沖突。ICE對象模型還使用了強(qiáng)對象標(biāo)識:使用本地的客戶端操作,你就能確定兩個代理表示的是否是同一個對象(在CORBA 中,要進(jìn)行可靠的標(biāo)識比較,你必須調(diào)用遠(yuǎn)程對象上的操作)。本地標(biāo)識比較要高效得多,而且對于有些應(yīng)用領(lǐng)域而言(比如分布式事務(wù)服務(wù)),這樣的比較也至關(guān)緊要。ICE在架構(gòu)上提供的好處 (1)面向?qū)ο蟮恼Z義:ICE “在線路上”完全保留了面向?qū)ο蠓缎?。所有的操作調(diào)用都使用遲后綁定,所以操作的實(shí)現(xiàn)的選定,是根據(jù)對象在運(yùn)行時的(而不是靜態(tài)的)實(shí)際類型決定的。 (2)支持同步和異步的消息傳遞: ICE提供了同步和異步的操作調(diào)用和分派,并且通過IceStorm 提供了發(fā)布訂閱消息傳遞機(jī)制。這樣,你可以根據(jù)你的應(yīng)用的需要來選擇通信模型,而不必把你的應(yīng)用硬塞進(jìn)某種模型里。 (3)支持多個接口:通過facets,對象可以提供多個不相關(guān)的接口,同時又跨越這些接口、保持單一的對象標(biāo)識。這提供了極大的靈活性,特別是在這樣的情況下:應(yīng)用在發(fā)生演化,但又需要與更老的、已經(jīng)部署的客戶保持兼容。 (4)機(jī)器無關(guān)性:客戶及服務(wù)器與底層的機(jī)器架構(gòu)屏蔽開來。對于應(yīng)用代碼而言,像字節(jié)序和填充這樣的問題都隱藏了起來。 (5)語言無關(guān)性:客戶和服務(wù)器可以分別部署,所用語言也可以不同(目前支持C+、Java,以及PHP (客戶端)。 客戶和服務(wù)器所用的Slice 定義建立兩者之間的接口合約,這樣的定義也是它們唯一需要達(dá)成一致的東西。 (6)操作系統(tǒng)無關(guān)性: ICE API 完全是可移植的,所以同樣的源碼能夠在Windows 和UNIX上編譯和運(yùn)行。 (7)線程支持:Ice run time 完全是線程化的,其API是線程安全的。作為應(yīng)用開發(fā)者,(除了在訪問共享數(shù)據(jù)時進(jìn)行同步)你無需為開發(fā)線程化的高性能客戶和服務(wù)器付出額外努力。(8)傳輸機(jī)制無關(guān)性: ICE目前采用了TCP/IP和UDP作為傳輸協(xié)議??蛻艉头?wù)器代碼都不需要了解底層的傳輸機(jī)制(你可以通過一個配置參數(shù)選擇所需的傳輸機(jī)制)。(9)位置和服務(wù)器透明性:Ice run time 會負(fù)責(zé)定位對象,并管理底層的傳輸機(jī)制,比如打開和關(guān)閉連接??蛻襞c服務(wù)器之間的交互顯得像是無連接的。如果在客戶調(diào)用操作時,服務(wù)器沒有運(yùn)行,你可以通過IcePack 讓它們隨需啟動。服務(wù)器可以遷移到不同的物理地址,而不會使客戶持有的代理失效,而客戶完全不知道對象實(shí)現(xiàn)是怎樣分布在多個服務(wù)器進(jìn)程上的。(10)安全性:通過SSL 強(qiáng)加密,可以使客戶和服務(wù)器完全安全地進(jìn)行通信,這樣,應(yīng)用可以使用不安全的網(wǎng)絡(luò)安全地進(jìn)行通信。你可以使用Glacier穿過防火墻,實(shí)現(xiàn)安全的請求轉(zhuǎn)發(fā),并且完全支持回調(diào)。(11)內(nèi)建的持久機(jī)制:使用Freeze,創(chuàng)建持久的對象實(shí)現(xiàn)變成了一件微不足道的事情。ICE提供了對高性能數(shù)據(jù)庫Berkeley DB18 的內(nèi)建支持。ICE的源碼是開放的。盡管要使用ICE平臺,并不一定要閱讀源碼,通過源碼你可以了解各種事情是怎樣實(shí)現(xiàn)的,或把這些代碼移植到新的操作系統(tǒng)上??偠灾?, ICE和ACE 提供了一流的分布式計(jì)算開發(fā)和部署環(huán)境,比我們所知道的其他任何平臺都更完整。提供適用于異種環(huán)境的面向?qū)ο笾虚g件平臺,提供一組完整的特性,支持廣泛的領(lǐng)域中的實(shí)際的分布式應(yīng)用的開發(fā),避免不必要的復(fù)雜性,使平臺更易于學(xué)習(xí)和使用。提供一種在網(wǎng)絡(luò)帶寬、內(nèi)存使用和CPU 開銷方面都很高效的實(shí)現(xiàn),提供一種具有內(nèi)建安全性的實(shí)現(xiàn),使它適用于不安全的公共網(wǎng)絡(luò)。參考文檔:Michi Henning和Mark Spruiell編寫的Distributed Programming with ICE;Douglas C. Schmidt編寫的C+ Network Programming with Patterns, Frameworks, and ACE。ICE和ACE目前都是開放源代碼的中間件。ICE的全稱是Internet Communications Engine,即因特網(wǎng)通信引擎。ICE是由ZeroC, Inc.公司開發(fā)的。官網(wǎng):/ 介紹文檔:Tag: /album/view/9c1a5619227916888486d7c1Tag: /album/view/36fe3f2de2bd960590c67717/view/c8f54c738e9951e79b89278e.html/view/e68033330b4c2e3f572763a1.htmlACE的全稱是ADAPTIVE Communication Environment,即自適配的通信環(huán)境。ACE自從問世以來得到了多家公司的商業(yè)支持。官網(wǎng): /schmidt/ACE.html 介紹文檔:Tag: /album/view/b8ee15c52cc58bd63186bd82Tag: /album/view/f5c5082e453610661ed9f4edTag: http:/wenku.baidu.c

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論