西西軟件園多重安全檢測(cè)下載網(wǎng)站、值得信賴的軟件下載站!
軟件
軟件
文章
搜索

首頁(yè)編程開(kāi)發(fā)其它知識(shí) → ACE自適配通信環(huán)境開(kāi)源技術(shù)介紹

ACE自適配通信環(huán)境開(kāi)源技術(shù)介紹

相關(guān)軟件相關(guān)文章發(fā)表評(píng)論 來(lái)源:西西整理時(shí)間:2011/10/1 22:00:51字體大。A-A+

作者:西西點(diǎn)擊:170次評(píng)論:0次標(biāo)簽: 通信

263云通信3.1.0 官方iOS版
  • 類型:辦公學(xué)習(xí)大。36KB語(yǔ)言:中文 評(píng)分:10.0
  • 標(biāo)簽:
立即下載
 ACE自適配通信環(huán)境(ADAPTIVE Communication Environment)是可自由使用、開(kāi)放源碼的面向?qū)ο螅∣O)框架(framework),它實(shí)現(xiàn)了許多用于并發(fā)通信軟件的核心模式。ACE提供了一組豐富的可重用C++包裝外觀(wrapper facade)和框架組件,可跨多種平臺(tái)完成通用的通信軟件任務(wù),其中包括:事件多路分離和事件處理器分派、信號(hào)處理、服務(wù)初始化、進(jìn)程間通信、共享內(nèi)存管理、消息路由、分布式服務(wù)動(dòng)態(tài)(重)配置、并發(fā)執(zhí)行和同步,等等。

網(wǎng)絡(luò)部分的編程往往是搞得人一個(gè)頭兩個(gè)大,各種千奇百怪的問(wèn)題像土行孫一樣從沒(méi)有防備的地方不斷地冒出來(lái),如果碰巧還要還要移植到多平臺(tái)下――那還不得熬到對(duì)影成三人?

高手當(dāng)然不用愁了:多看看資料了解一下什么VxWorks、Solaris下的API函數(shù)幾下就搞定了。對(duì)于咱們這種手沒(méi)有那么高的一般人,對(duì)還遠(yuǎn)遠(yuǎn)沒(méi)有達(dá)到草木竹石均可為劍境界的凡人來(lái)說(shuō),難道非要熬上N個(gè)通宵再加上N的N次方的調(diào)試?

非也!

牛頓告訴我們:若能站在巨人的肩上,豈不是能做得更好?我國(guó)古人則說(shuō):工欲善其事,必先利其器。

如果能夠覓得傳說(shuō)中的巨人,尋到那傳說(shuō)中的利器,一切還不迎刃而解?

就在這個(gè)偉大的時(shí)刻,ACE橫空出世!


ACE的全名是ADAPTIVE Communication Environment,是一組可以自由使用的(免費(fèi)?)、開(kāi)放源碼的面向?qū)ο螅∣O)的構(gòu)架。使用它可以藐視各個(gè)平臺(tái)間的差異,大大地簡(jiǎn)化網(wǎng)絡(luò)編程,減少出錯(cuò)的機(jī)會(huì),而且更可以――打。∏蚁劝堰@茬兒說(shuō)清楚。

ACE對(duì)各個(gè)操作系統(tǒng)的接口函數(shù)API進(jìn)行封裝,并且用統(tǒng)一的接口形式提供給程序員。換句話說(shuō),你只需要簡(jiǎn)單地調(diào)用ACE提供的函數(shù)形式(這些形式和常見(jiàn)的系統(tǒng)API非常相像),ACE就會(huì)自動(dòng)地把它轉(zhuǎn)換成你所在的平臺(tái)上的函數(shù):VxWorks的,或者Solaris,當(dāng)然更不用說(shuō)大名鼎鼎的WINDOWS和Linux了。實(shí)現(xiàn)方式么,用腳指頭都能想出來(lái):使用了非常多的條件編譯,把不同系統(tǒng)上的功能相似的API函數(shù)統(tǒng)一起來(lái),如果沒(méi)有則模擬實(shí)現(xiàn),如果有則簡(jiǎn)單地inline就可以了,還可以不折損效率。此其一也!

想不到還有其二吧?ACE將面向?qū)ο蟮乃枷脒\(yùn)用到這些函數(shù)里面,對(duì)網(wǎng)絡(luò)編程等部分的功能進(jìn)行改造,建立起面向?qū)ο蟮哪P。比如,ACE將連接的一方處理成為一個(gè)對(duì)象,將一個(gè)連接處理成為一個(gè)對(duì)象,先前的操作則被封裝成為對(duì)象的功能。切不可小覷這一點(diǎn)。要知道,這樣就可以運(yùn)用面向?qū)ο蟮乃枷雭?lái)構(gòu)建應(yīng)用,而且OO的類型保護(hù)機(jī)制可以把一大批錯(cuò)誤從運(yùn)行時(shí)提前到編譯階段。當(dāng)然,如果有誰(shuí)特別有個(gè)性,特別喜歡用那種C語(yǔ)言的函數(shù)方式的,ACE也提供有那樣的形式的函數(shù)來(lái)滿足這種不一般的胃口。

光說(shuō)不練是沒(méi)有用的,且讓我用一個(gè)小例子來(lái)鎮(zhèn)一鎮(zhèn)那些不服的眼睛。(限于篇幅,我只在這里列出最核心的代碼:

int main(int, char *[])

{

ACE_INET_Addr port_to_listen (9999);

ACE_SOCK_Acceptor acceptor;



acceptor.open (port_to_listen, 1);



while (1)

{

ACE_SOCK_Stream peer;

ACE_INET_Addr peer_addr;

ACE_Time_Value timeout (10, 0);



if( 0 == acceptor.accept (peer, &peer_addr, &timeout, 0))

{



char buffer[4096];

ssize_t bytes_received;



while ((bytes_received = peer.recv (buffer, sizeof(buffer))) != -1)

{

peer.send_n (buffer, bytes_received);

}

peer.close ();

}

}



return 0;

}

寥寥數(shù)行代碼,就已經(jīng)實(shí)現(xiàn)了一個(gè)完整的服務(wù)器:它在9999端口上開(kāi)始偵聽(tīng),接受一個(gè)TCP連接,把它發(fā)過(guò)來(lái)的數(shù)據(jù)返還回去。如果業(yè)務(wù)完成,則斷開(kāi)連接,接受下個(gè)連接,開(kāi)始下一個(gè)循環(huán)。只要給這段代碼包含進(jìn)需要的頭文件,加上幾句錯(cuò)誤處理,放到ACE的編譯環(huán)境下――無(wú)論是WINDOWS, Linux的,還是UNIX的――都可以編譯運(yùn)行。


如果ACE的功能僅限于此,可能還不足以支持它取得如此大的成就:ACE在西方的應(yīng)用已經(jīng)遍及電信、航空、保險(xiǎn)、軍事、天文、游戲等眾多的領(lǐng)域。事實(shí)上,上面所說(shuō)的功能僅僅占據(jù)了ACE代碼的10%左右。剩下的部分,ACE實(shí)現(xiàn)了更為了不起的功能。

ACE融合通訊領(lǐng)域的各個(gè)優(yōu)秀的模式,利用它已經(jīng)建立起來(lái)的可移植到多平臺(tái)的OS層函數(shù)(就是上面所說(shuō)的那一部分),建立起一個(gè)個(gè)精巧的框架。這些模式都是作者等眾多的工程師在實(shí)踐中積累起來(lái)的優(yōu)秀經(jīng)驗(yàn)。實(shí)際上,利益于開(kāi)源的思想,現(xiàn)在全世界有一千七百多位工作者和數(shù)百人的核心團(tuán)隊(duì)進(jìn)行ACE的進(jìn)一步開(kāi)發(fā)?梢赃@么說(shuō),使用ACE,你不是站在一位巨人的肩膀上,而是站在全世界一千七百多人的肩膀上。由此你只需對(duì)現(xiàn)有框架進(jìn)行擴(kuò)展,大大縮短開(kāi)發(fā)的過(guò)程,并且極大地提高程序?qū)τ布氖褂眯狮D―而這是已經(jīng)被證明的。

ACE主要提供以下幾種框架供網(wǎng)絡(luò)程序的開(kāi)發(fā):

l 事件多路分離組件:ACE Reactor(反應(yīng)堆)和Proactor(前攝器)是可擴(kuò)展的面向?qū)ο蠖嗦贩蛛x器,它們分派應(yīng)用特有的處理器,以響應(yīng)多種類型的基于I/O、定時(shí)器、信號(hào)和同步的事件。

l 服務(wù)初始化組件:ACE Acceptor(接受器)和Connector(連接器)組件分別使主動(dòng)和被動(dòng)的初始化任務(wù)與初始化一旦完成后通信服務(wù)所執(zhí)行的應(yīng)用特有的任務(wù)去耦合。

l 進(jìn)程和線程管理:提供多進(jìn)程和多線程的派生和管理方法,消除了平臺(tái)的差異性。

l 服務(wù)配置組件:ACE Service Configurator(服務(wù)配置器)支持應(yīng)用的配置,這些應(yīng)用的服務(wù)可在安裝時(shí)和/或運(yùn)行時(shí)動(dòng)態(tài)裝配。

l 分層的流組件:ACE Stream組件簡(jiǎn)化了像用戶級(jí)協(xié)議棧這樣的由分層服務(wù)組成的通信軟件應(yīng)用的開(kāi)發(fā)。

l 命名服務(wù):ACE NamingService提供了單進(jìn)程命名上下文、同一節(jié)點(diǎn)共享命名上下文和在網(wǎng)絡(luò)上命名上下文的服務(wù)設(shè)施。

除此以外,ACE還提供了信號(hào)、線程安全與同步、內(nèi)存管理等等多種豐富的功能。ACE已經(jīng)成長(zhǎng)成為一個(gè)完善的系統(tǒng),在網(wǎng)絡(luò)編程方面,能夠提供非常豐富的服務(wù)。

ACE會(huì)因此而滿足嗎?當(dāng)然不,那樣它只能逐漸被淘汰。當(dāng)前ACE正在完善它的高級(jí)分布式計(jì)算中間件組件,并且制定了多個(gè)項(xiàng)目計(jì)劃進(jìn)一步擴(kuò)充和發(fā)展ACE的功能。所以,使用ACE不用擔(dān)心所學(xué)的知識(shí)會(huì)因時(shí)間而貶值,而事實(shí)上正好與此相反。


利劍在手,當(dāng)然要學(xué)會(huì)怎么運(yùn)用才能發(fā)揮它的最大功用了。ACE的創(chuàng)建者為我們寫好了三本教材,一套兩卷的《C++網(wǎng)絡(luò)編程》和一本《ACE程序員指南》,都有中譯本發(fā)行。此外,網(wǎng)上有大量的資料可供查詢。如果對(duì)ACE的設(shè)計(jì)感興趣,那再簡(jiǎn)單不過(guò)了:你可以閱讀它的全部的源代碼:ACE是完全開(kāi)源的!

    相關(guān)評(píng)論

    閱讀本文后您有什么感想? 已有人給出評(píng)價(jià)!

    • 8 喜歡喜歡
    • 3 頂
    • 1 難過(guò)難過(guò)
    • 5 囧
    • 3 圍觀圍觀
    • 2 無(wú)聊無(wú)聊

    熱門評(píng)論

    最新評(píng)論

    發(fā)表評(píng)論 查看所有評(píng)論(0)

    昵稱:
    表情: 高興 可 汗 我不要 害羞 好 下下下 送花 屎 親親
    字?jǐn)?shù): 0/500 (您的評(píng)論需要經(jīng)過(guò)審核才能顯示)