天天看點

ACE和TAO 我的了解與感悟

轉:ACE和TAO 我的了解與感悟

原文:http://dev.csdn.net/article/45/45577.shtm

作者:

ACE和TAO 我的了解與感悟

TAO和其他CORBA的基本都是按照OMG的提供的規範2.6來實作。在OMG的标準規範事實已經給出的CORBA的基礎原型,基礎資料定義,IDL語言文法,以及C++的代碼映射等。我們可以在實作代碼中經常看到規範的熟悉的方法函數和資料結構定義(可能是底層次和高層次的),例如OMG的CORBA規範的orb,poa這兩個重要的規範部分,基本上給出orb核,POA對象适配實作原型架構。要了解一個CORBA整個體系,就必須對CORBA的規範有一個總體的認識,這對實作的CORBA代碼了解有極大的幫助,它起到對CORBA實作一個架構認識作用,對了解和看懂代碼的實作會提到更高的層次。CORBA的規範可以說是它的骨架,實作則是給它造血和肉。

TAO是在ACE的基礎上建立和開發出來的,在其中很多展現了ACE的思想和它的延伸。是以在ACE的熟悉程度上對TAO的了解的好比一個平台作用。實質上ACE的是通訊庫,同時也是寫通訊程式半成品庫,ACE是TAO強有力的平台。事實上正是ACE的通訊庫使得TAO的代碼容易了解和劃分,ACE更多展現在通訊的細節精細的實作和控制封裝,在上層的使用上屏蔽容易錯誤的代碼,把硬體平台和實作細節封裝在底層代碼中(ACE的OS.h代碼占了ACE将10%的代碼量);是以TAO的更多的是在圍繞着CORBA的規範這種遠過程調用實作邏輯上面;這樣TAO的CORBA代碼與ACE通訊庫的劃分非常清晰,通訊與CORBA實作邏輯一定程度的耦合被弱化,使得TAO的代碼比其他的CORBA實作代碼要容易了解和掌握。當初看TAO的代碼感覺比較頭痛,那是對ACE認識不夠深,雖然接觸的時間也很久,但停留在一個概念和初級應用的層次上,對ACE的庫代碼并沒有在質的基礎上深刻體會。随着自己看其他中間的的源代碼和動手寫自己的通訊庫(很多概念來自ACE和另外一個CORBA的實作orbcus)和簡單的遠過程調用實作,從中遇到的問題和要解決的問題,要考慮的問題,要實作的問題等到深入到更本質的思考,發現最後的回到了CORBA要解決的問題上,自己在做别人已經做過,而且并見得做了更好得事情,實際上CORBA已經提出和解決及實作工業級方法。看了不實際做一些這些從新”發明輪子”的事情,對CORBA一些本質上的了解還真是很懵懂的,做一個自己得”輪子”還是很有幫助的,起碼會對一些問題有更深的體會。這也對了解TAO的實作有作用。他們都是遠過程調用的實作,簡單概念複雜的實作,但基本共同的東西是相似的,但在實作上TAO卻有強大和精妙之處,看着就覺的感撼,I can do it?。

以前看orbcus隻是源于使用jtc的線程庫,後來有時間将orbcus的其他的代碼的看了一些,特别是對CORBA CDR流化實作很有興趣和SOCKET通訊代碼,後來看來看去看1/3就暈了,就沒精力看;通過個項目自己寫了個通訊庫用于簡單的遠過程調用就有更大的體會,就感覺自己寫的這麼幼稚和别人寫的感覺沒有一句廢話,一次看orbcus的代碼注釋發現作者提到Apache的代碼實作如何如何,說明作者就研究構Apache的代碼,人家就有這樣的深度和經曆。确實在看orbcus的代碼和寫了些這方面的代碼,回來再看TAO代碼反而感覺的看TAO的代碼好看很多,有頓悟的感覺,以前覺得ACE和TAO的代碼不好看,而看orbcus的代碼比較幹淨整潔有一種清純的感覺;現在完全改觀,看TAOACE感覺是順暢的,這可能對ACE和TAO有更進一步的習慣認識和體會,遇到和解決問題更有感覺和目的性,而不是遇到問題對着代碼就發蒙。ACETAO他們代碼的注釋量是非常大,而且有很多D.C的技術論文論述TAO CORBA實作技術細節和應用的模式理論,它的實作是專業級的,想到了你沒有想到的問題解決你沒解決的問題,如果自己從頭寫一個這樣的東西簡直是要命。運用和學習,再看他們實作的代碼,每個星期堅持看一些類實作,好像真能感覺與一個世界級的專家們一起,感受他們的奉獻和NB精神,更是令人敬畏的專業水準。

posted on 2007-10-13 16:34 erran 閱讀(2052) 評論(1)   編輯  收藏 引用 所屬分類: ACE

ACE和TAO 我的了解與感悟