OMG接口定義語言IDL用于定義對象的接口。一個對象的接口指定該對象所支持的類型和操作,因而唯一定義了可用于該對象的請求形式?蛻粼跇嬙煺埱髸r,必須了解對象的接口。如上所述,保持接口描述的“語言中性”對在異構環境中實現分布式應用是重要的。IDL僅為一個說明式語言,而不是一個全面的程序設計語言。因此,IDL本身并不提供諸如控制結構這樣的特征,IDL也不能直接用于實現分布式應用。相反,客戶和對象的實現是采用具體的程序設計語言完成的。因此,ORB所支持的特征必須能夠在實現語言中訪問。語言映射決定IDL的內容如何映射為具體程序設計語言的設施。IDL編譯器將具體接口定義翻譯為目標語言代碼。目前OMG已完成了從IDL到C,C++,Java,Smalltalk,Ada95,Cobol等語言映射的標準化工作。
OMG IDL編譯器除了生成目標語言類型外,同時生成客戶端的存根(Stub)和服務端的骨架(Skeleton)。存根是一個可有效創建和發送客戶端請求的機制,而骨架是一個可將客戶端請求傳送至CORBA對象實現的機制。因為存根和骨架是直接從CORBA對象接口的OMG IDL描述中翻譯而得,故存根和骨架通常是與特殊對象接口相關。通過存根和骨架發送和傳遞請求的方式通常稱為靜態調用。存根和骨架被直接嵌入客戶應用和對象實現,因此,它們具有需調用的CORBA對象接口的所有靜態信息。
除了使用存根和骨架的靜態調用方式外,CORBA提供了動態調用接口DII和動態骨架接口DSI,前者支持動態客戶請求調用,而后者支持將請求動態指派給對象?蛻舫绦蚩赏ㄟ^使用DII對任何對象進行請求調用,而毋須持有對象的編譯時信息。
CORBA對象適配器(Adapter)的作用是配合對象實現和ORB本身的連接。Adapter本身是一個對象,它使被調用對象的接口適配于調用對象所期望的接口。
CORBA除了對核心ORB作了規定以外,還定義了對象服務和公共設施構件的規約。對象服務包括最基本和最常用的服務內容,如名字服務、事件服務等,而公共設施則包括范圍更廣的、建立在對象服務之上的服務,如用戶界面、信息管理、系統管理和任務管理等。
CORBA 對應用系統未作具體規定,它可以建立在對象服務和公共設施之上,利用它們中的構件。
構件對象模型COM和構件對象模型DCOM
微軟公司是也較早采用構件技術的公司之一。1993年,微軟公司提出了構件對象模型(COM)。此技術已相當成熟,微軟公司為Windows® 和 Windows NT開發的應用軟件幾乎都是基于COM的。早期的軟件多在單機上運行,后來對COM進行了擴展,允許訪問其它機器上的對象。1996年提出了構件對象模型(DCOM),使得采用構件技術構建網上的應用系統成為可能。除了COM、DCOM以外,微軟還為開發分布式企業級應用軟件提出了很多在Windows NT®服務器上的服務,如微軟作業服務(MTS)、微軟因特網信息服務(IIS)、控件服務頁面(ASP)、微軟消息查詢服務(MSMQ)等。
有人曾將DCOM和CORBA從程序設計結構、遠程調用結構以及通信協議結構三個層次上進行了比較。雖然在基礎原理和結構上有很多相近之處,但是在具體作法上還是有很大差異。也有人對DCOM和CORBA各自的優勢和不足進行過評論。認為DCOM有較強的工具和系統的支持,另外由于有些功能已嵌入在操作系統中(特別是Windows NT®),所以在降低化費上有優勢。但是DCOM過多地依賴微軟的操作系統平臺,因而對異構網絡環境,在兼容性方面會有不少問題。而正相反,CORBA在支持多種平臺和多種語言上具有優勢,而且有比較廣泛的獨立開發商和用戶及業界的支持。此外,CORBA所采用的對象概念以及強調網絡透明等在技術上也比較成熟。當然,CORBA的不足之處是不如DCOM的支持工具那么多,另外在不同的開發商提供的CORBA實現之間的兼容性方面還有不少問題。但事物在不斷發展,DCOM和CORBA都會設法在改進自己的不足。
文章來源于領測軟件測試網 http://www.kjueaiud.com/