Corba開發之基於Java實現Service與Client
1 概述
CORBA(Common Object Request Broker Architecture,公共物件請求代理體系結構)是由OMG組織制訂的一種標準的面向物件應用程 序體系規範。或者說 CORBA體系結構是OMG為解決分散式處理環境(DCE)中,硬體和軟體系統的互連而提出的一種解決方案。
OMG:Object Management Group,物件管理組織。是一個國際化的、開放成員的、非盈利性的計算機行業標準協會,該協會成立於1989年,其職責是為應用開發提供一個公共框架,制訂工業指南和物件管理規範,加快物件技術的發展。。任何組織都可以加入OMG並且參與標準制定過程。OMG制定了統一建模語言UnifiedModeling Language?(UML?),模型驅動架構ModelDriven Architecture? (MDA?)等建模標準。使強大的視覺設計,執行和維護軟體等工序成為可能。並且,OMG還制定了廣為人知的中介軟體標準CommonObject Request Broker Architecture (CORBA?)。
通用物件代理體系結構CORBA(Common Object Request BrokerArchitecture)是OMG所定義的用來實現現今大量硬體、軟體之間互操作的解決方案,CORBA也是邁向面向物件標準化和互操作的重要一步。
簡單地說,CORBA允許應用之間相互通訊,而不管它們存在於哪裡以及是誰設計的,即跨平臺、跨語言。CORBA1.1於1991年由OMG釋出,其中定義了介面定義語言(IDL)以及在物件請求代理(ORB)中實現客戶物件與伺服器物件之間互動的應用程式設計介面(API)。CORBA2.0於1994年釋出,規定了各個供應商之間的ORB的通訊規則。
CORBA標準主要分為三個部分:介面定義語言(IDL
IDL是CORBA定義的語言,CORBA還定義了IDL到各種語言的對映,標準對映的有Ada、C、C++、Smalltalk、Java、以及Python。有了這些對映,就可以將IDL翻譯成各種語言,從而實現了跨語言。IDL語言是一種介面定義語言。IDL語言不同於所有已有的程式設計語言,它是一種描述性語言,也就是說,用它描述得到的介面是不能直接被編譯執行。OMG IDL語言採用ISOLatin-1(8859.1)字符集。該字符集可以分為字母、數字、圖形符號、空格符、和格式符號。其中字母包括英文26個字母的大小寫,數字包括10個阿拉伯數字0到9。
ORB是CORBA的核心,是物件之間建立Client/Server關係的中介軟體。使用ORB,客戶可以透明地呼叫一個服務物件上的方法,這個服務物件可以在本地,也可以在通過網路連線的其他機器上。ORB截獲這一呼叫同時負責查詢實現服務的物件並向其傳遞引數、呼叫方法返回最終結果。客戶並不知道服務物件位於什麼地方,它的程式語言和作業系統是什麼,也不知道不屬於物件介面的其他系統部分。這樣,ORB在異構分佈環境下為不同機器上的應用提供了互操作性,並無縫地集成了多種物件系統。
在client端去呼叫server端的程式碼時,ORB對於client端是不可見的,client感覺好像呼叫了自己物件的方法一樣,但是網路傳輸的過程都被封裝在了ORB中。
2 idl檔案建立
在開發之前需要按照上一章中配置好Eclipse外掛開發環境,
1、 客戶端開發idl檔案,idl檔案由服務端介面提供,或者自定義建立,如下圖:
modulehelloapp {
interfaceHello {
string sayHello();
oneway void shutdown();
};
};
2. 選擇IDL檔案,右鍵ORBMenu--->Compile,就自動生成相應的操作檔案
自動生成需要的操作檔案一共7個;
3 服務端開發
1. src上右鍵New--->Other--->CORBAWizard--->Server--->Active object map--->Next如下圖:
2. 在彈出的對話方塊裡IDL filename欄選擇/{projectName}/src/{IDLname}.idl
Interface欄選擇IDL檔案裡定義的介面名
Package欄裡填寫包名
Server classname欄裡填寫服務端類名
--->Next 在彈出的對話方塊,選中Createserver class:項
3. 為生成的服務端類新增未實現的方法,並填寫方法體
至此服務端配置完成,Server_AOM class為服務端啟動入口。
4 客戶端開發
1、新建java project;
2. src上右鍵New--->Other--->CORBA Wizard--->IDL files--->Simple IDL,如下圖:
3.選擇之前的idl檔案,
完成後自動生成客戶端檔案操作,如下圖:
4. 在客戶端類的main方法裡,取消註釋test.getORBInterface().operation1("Amessage in the bottle..."); 並呼叫之前自定義的方法,修改傳遞的String內容。即可完成客戶端呼叫。
備註: 執行服務端程式Server_AOM.java,然後執行客戶端程式MyServiceClientImpl.java
至此簡單的Service and client開發完成!