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