原文:http://dev.csdn.net/article/45/45577.shtm
作者:
ACE和TAO 我的理解與感悟
?
TAO和其他CORBA的基本都是按照OMG的提供的規(guī)范2.6來(lái)實(shí)現(xiàn)。在OMG的標(biāo)準(zhǔn)規(guī)范事實(shí)已經(jīng)給出的CORBA的基礎(chǔ)原型,基礎(chǔ)數(shù)據(jù)定義,IDL語(yǔ)言語(yǔ)法,以及C++的代碼映射等。我們可以在實(shí)現(xiàn)代碼中經(jīng)常看到規(guī)范的熟悉的方法函數(shù)和數(shù)據(jù)結(jié)構(gòu)定義(可能是底層次和高層次的),例如OMG的CORBA規(guī)范的orb,poa這兩個(gè)重要的規(guī)范部分,基本上給出orb核,POA對(duì)象適配實(shí)現(xiàn)原型框架。要理解一個(gè)CORBA整個(gè)體系,就必須對(duì)CORBA的規(guī)范有一個(gè)總體的認(rèn)識(shí),這對(duì)實(shí)現(xiàn)的CORBA代碼理解有極大的幫助,它起到對(duì)CORBA實(shí)現(xiàn)一個(gè)框架認(rèn)識(shí)作用,對(duì)理解和看懂代碼的實(shí)現(xiàn)會(huì)提到更高的層次。CORBA的規(guī)范可以說(shuō)是它的骨架,實(shí)現(xiàn)則是給它造血和肉。
?
TAO是在ACE的基礎(chǔ)上建立和開(kāi)發(fā)出來(lái)的,在其中很多體現(xiàn)了ACE的思想和它的延伸。所以在ACE的熟悉程度上對(duì)TAO的理解的好比一個(gè)平臺(tái)作用。實(shí)質(zhì)上ACE的是通訊庫(kù),同時(shí)也是寫(xiě)通訊程序半成品庫(kù),ACE是TAO強(qiáng)有力的平臺(tái)。事實(shí)上正是ACE的通訊庫(kù)使得TAO的代碼容易理解和劃分,ACE更多體現(xiàn)在通訊的細(xì)節(jié)精細(xì)的實(shí)現(xiàn)和控制封裝,在上層的使用上屏蔽容易錯(cuò)誤的代碼,把硬件平臺(tái)和實(shí)現(xiàn)細(xì)節(jié)封裝在底層代碼中(ACE的OS.h代碼占了ACE將10%的代碼量);所以TAO的更多的是在圍繞著CORBA的規(guī)范這種遠(yuǎn)過(guò)程調(diào)用實(shí)現(xiàn)邏輯上面;這樣TAO的CORBA代碼與ACE通訊庫(kù)的劃分非常清晰,通訊與CORBA實(shí)現(xiàn)邏輯一定程度的耦合被弱化,使得TAO的代碼比其他的CORBA實(shí)現(xiàn)代碼要容易理解和掌握。當(dāng)初看TAO的代碼感覺(jué)比較頭痛,那是對(duì)ACE認(rèn)識(shí)不夠深,雖然接觸的時(shí)間也很久,但停留在一個(gè)概念和初級(jí)應(yīng)用的層次上,對(duì)ACE的庫(kù)代碼并沒(méi)有在質(zhì)的基礎(chǔ)上深刻體會(huì)。隨著自己看其他中間的的源代碼和動(dòng)手寫(xiě)自己的通訊庫(kù)(很多概念來(lái)自ACE和另外一個(gè)CORBA的實(shí)現(xiàn)orbcus)和簡(jiǎn)單的遠(yuǎn)過(guò)程調(diào)用實(shí)現(xiàn),從中遇到的問(wèn)題和要解決的問(wèn)題,要考慮的問(wèn)題,要實(shí)現(xiàn)的問(wèn)題等到深入到更本質(zhì)的思考,發(fā)現(xiàn)最后的回到了CORBA要解決的問(wèn)題上,自己在做別人已經(jīng)做過(guò),而且并見(jiàn)得做了更好得事情,實(shí)際上CORBA已經(jīng)提出和解決及實(shí)現(xiàn)工業(yè)級(jí)方法??戳瞬粚?shí)際做一些這些從新”發(fā)明輪子”的事情,對(duì)CORBA一些本質(zhì)上的理解還真是很懵懂的,做一個(gè)自己得”輪子”還是很有幫助的,起碼會(huì)對(duì)一些問(wèn)題有更深的體會(huì)。這也對(duì)理解TAO的實(shí)現(xiàn)有作用。他們都是遠(yuǎn)過(guò)程調(diào)用的實(shí)現(xiàn),簡(jiǎn)單概念復(fù)雜的實(shí)現(xiàn),但基本共同的東西是相似的,但在實(shí)現(xiàn)上TAO卻有強(qiáng)大和精妙之處,看著就覺(jué)的感撼,I can do it?。
以前看orbcus只是源于使用jtc的線(xiàn)程庫(kù),后來(lái)有時(shí)間將orbcus的其他的代碼的看了一些,特別是對(duì)CORBA CDR流化實(shí)現(xiàn)很有興趣和SOCKET通訊代碼,后來(lái)看來(lái)看去看1/3就暈了,就沒(méi)精力看;通過(guò)個(gè)項(xiàng)目自己寫(xiě)了個(gè)通訊庫(kù)用于簡(jiǎn)單的遠(yuǎn)過(guò)程調(diào)用就有更大的體會(huì),就感覺(jué)自己寫(xiě)的這么幼稚和別人寫(xiě)的感覺(jué)沒(méi)有一句廢話(huà),一次看orbcus的代碼注釋發(fā)現(xiàn)作者提到Apache的代碼實(shí)現(xiàn)如何如何,說(shuō)明作者就研究構(gòu)Apache的代碼,人家就有這樣的深度和經(jīng)歷。確實(shí)在看orbcus的代碼和寫(xiě)了些這方面的代碼,回來(lái)再看TAO代碼反而感覺(jué)的看TAO的代碼好看很多,有頓悟的感覺(jué),以前覺(jué)得ACE和TAO的代碼不好看,而看orbcus的代碼比較干凈整潔有一種清純的感覺(jué);現(xiàn)在完全改觀,看TAOACE感覺(jué)是順暢的,這可能對(duì)ACE和TAO有更進(jìn)一步的習(xí)慣認(rèn)識(shí)和體會(huì),遇到和解決問(wèn)題更有感覺(jué)和目的性,而不是遇到問(wèn)題對(duì)著代碼就發(fā)蒙。ACETAO他們代碼的注釋量是非常大,而且有很多D.C的技術(shù)論文論述TAO CORBA實(shí)現(xiàn)技術(shù)細(xì)節(jié)和應(yīng)用的模式理論,它的實(shí)現(xiàn)是專(zhuān)業(yè)級(jí)的,想到了你沒(méi)有想到的問(wèn)題解決你沒(méi)解決的問(wèn)題,如果自己從頭寫(xiě)一個(gè)這樣的東西簡(jiǎn)直是要命。運(yùn)用和學(xué)習(xí),再看他們實(shí)現(xiàn)的代碼,每個(gè)星期堅(jiān)持看一些類(lèi)實(shí)現(xiàn),好像真能感覺(jué)與一個(gè)世界級(jí)的專(zhuān)家們一起,感受他們的奉獻(xiàn)和NB精神,更是令人敬畏的專(zhuān)業(yè)水準(zhǔn)。