Corba中間件ORB的學習及應用


  CORBA的大體實現方式:使用IDL實現與其它編程語言的映射;客戶端服務端使用GIOP(主要是IIOP)協議進行通訊;客戶端使用一種映射語言編寫stub(樁)代碼,使用對象引用服務端使用同種或異種映射語言編寫skelecton(骨架)代碼,真正實現服務;上述二者通過CORBA服務進行通訊。

 O、Corba概念(GIOP、IIOP、IOR、ORB、IDL

1. CORBA

  公用對象請求代理(調度)程序體系結構(Common Object Request Broker Architecture),縮寫為 CORBA,是對象管理組織(Object Management Group)對應當今快速增長的軟硬件的協同工作能力的要求而提出的方案。簡而言之,CORBA 允許應用程序和其他的應用程序通訊,而不論他們在什么地方或者由誰來設計。  

  CORBA曾經是分布式計算的主流技術,在電信等領域使用廣泛。開發和部署成本較高,目前屬於已經基本被遺棄的技術,被輕量級的Web服務、RESTful服務等代替了。

2. IOR

  可互操作對象引用。

3. ORB(Object Request Broker)

  對象請求代理。ORB 是一個中間件,他在對象間建立客戶-服務器的關系。通過 ORB,一個客戶可以很簡單地使用服務器對象的方法而不論服務器是在同一機器上還是通過一個網絡訪問。ORB 截獲調用然后負責找到一個對象實現這個請求,傳遞參數和方法,最后返回結果。客戶不用知道對象在哪里,是什么語言實現的,他的操作系統以及其他和對象接口無關的東西。

4. ORB 守護程序

  負責查找 IOR 指定的對象實現,以及建立客戶機和服務器之間的連接。一旦建立了連接,GIOP 將定義一組由客戶機用於請求或服務器用於響應的消息。

5. GIOP(General Inter-ORB Protocol)

  GIOP(通用對象請求代理間通信協議)元件提供了一個標准傳輸語法(低層數據表示方法)和ORB之間通信的信息格式集。GIOP只能用在ORB與ORB之間,而且,只能在符合理想條件的面向連接傳輸協議中使用。它不需要使用更高一層的RPC機制。這個協議是簡單的(盡可能簡單,但不是簡單化),可升級的,使用方便。它被設計為可移動的、高效能的表現、較少依靠其它的低層傳輸協議。當然,由於不同傳輸使用不同版本的GIOP,它們可能不能直接協作工作,但它能很容易的連接網絡域。

6. IIOP (Internet Inter-ORB Protocol)

  IIOP(Internet對象代理間通信協議) 元件指出如何通過TCP/IP連接交換GIOP信息。IIOP為Internet提供了一個標准的協作工作協議,它使兼容的ORB能基於現在流行的協議和產品進行“out of the box”方式的協作工作。它也能被用於兩個半橋(half-bridges )之間的協議。該協議能用於任何ORB與IP(Internet Protocol)域之間的協作工作,除非ORB選擇了特殊的協議。這時,它是TCP/IP環境下基本的inter-ORB 協議,最普遍的傳輸層。
  GIOP 不基於任何特別的網絡協議,OMG 在最廣泛使用的通信傳輸平台 -- TCP/IP 上標准化 GIOP,GIOP 加 TCP/IP 等於 IIOP

7. IDL 

  IDL全稱接口定義語言,是用來描述軟件組件接口的一種規范語言。用戶可以定義模塊、接口、屬性、方法、輸入輸出參數,甚至異常等等。IDL在不同的語言下都有相應的實現,可以把IDL描述的接口編譯為目標語言,包括客戶端代理和服務器端框架,以及相應的幫助類等等。比如Java中提供過了idlj命令用來編譯。

8. CORBA與ORB的關系

  CORBA的分布式對象調用能力依賴於ORB,而ORB之間進行通信是通過GIOP協議完成的。GIOP定義了ORB之間互操作的傳輸語法和標准消息格式,比如請求頭、請求體所包含的字段和長度。 

9. IIOP與GIOP的關系

  IIOP與GIOP的關系就象特特殊語言與OMG IDL之間的關系;GIOP能被映射到不同層,它能指定協議。就象IDL不能見招完整的程序一樣,GIOP 本身也不能提供完整的協作工作。IIOP和不同傳輸層上的其它相似映射,實現抽象的GIOP定義。
GIOP是一個抽象的協議,而IIOP是其一個具體的實現,定義了,如何通過TCP/IP協議交換GIOP消息。 所以通常我們說CORBA是基於IIOP協議的。以上文章轉至http://www.cnblogs.com/nliao/p/3308669.html

  其中在linux中的集中CORBA中間件及獲取方式在該網址已做了信息介紹:http://www.yolinux.com/TUTORIALS/CORBA.html

  OMG已認可並在官網掛載的CORBA組件列表請查看https://www.corba.org/corbadownloads.htm

一、Omni-ORB開源中間件

  下載鏈接http://omniorb.sourceforge.net/,遵守GNU,免費開源的一款中間件。

  omniORB是CORBA(公用對象代理體系架構)的一種開發庫,主要適用C++和Python。CORBA
實現了異構系統的異種語言軟體合並、協作。
  OmniORB 的簡單使用例子https://blog.csdn.net/suwei19870312/article/details/7870268,該例子是結合vs2005來講解的,可能出現的問題可參考https://blog.csdn.net/u010171985/article/details/51234847。也可以在linux中應用。
  親身體驗CORBA: 使用java和C++混合編程:本文作者通過一次使用SUN的 tnameserv命名服務程序,服務器用JAVA編寫,客戶機分別用JAVA和C++(VC6+omniORB)編寫的試驗,希望通過一次編程的具體操作實例來體驗或明了CORBA思想。詳細內容可參考https://www.cnblogs.com/adylee/archive/2008/11/21/1338629.html
 
二、TAO-ORB開源中間件
  TAO(The ACE ORB)是美國華盛頓大學的Douglas C. Schmidt教授領導開發的一個實時CORBA平台,它是一個免費的開放源碼項目,用C++語言開發,符合CORBA2.6規范。
 
外文名TAO==
全    稱The ACE ORB==
定    義一個免費的開放源碼項目
支持語言C++
  支持語言: C++
  支持平台: Win32,常見的各種Unix/Linux,實時操作系統如VxWorks等等。在所有的CORBA實現中,TAO支持的平台是最多的。
  支持的服務: Naming、Event、Notification、Security、Time、Scheduling、Logging、Lifecycle、Trading、Concurrency、Lifecycle、A/V Streaming、Load balancing等。
  在windows上的應用可以參考:TAO使用指南 — 編譯ACE和TAO,Win32+VC6.0下編譯和安裝ACE和TAO https://www.xuebuyuan.com/627942.html
 注意ACE本來是通訊庫。
 
  三、ActiveMQ/ Active Message Queue中間件
   Apache ActiveMQ是Apache軟件基金會所研發的開放源代碼消息中間件;由於ActiveMQ是一個純Java程序,因此只需要操作系統支持Java虛擬機,ActiveMQ便可執行。 

  ActiveMQ是一種開源的,實現了JMS1.1規范的,面向消息(MOM)的中間件,為應用程序提供高效的、可擴展的、穩定的和安全的企業級消息通信。ActiveMQ使用Apache提供的授權,任何人都可以對其實現代碼進行修改。

  ActiveMQ的設計目標是提供標准的,面向消息的,能夠跨越多語言和多系統的應用集成消息通信中間件。ActiveMQ實現了JMS標准並提供了很多附加的特性。這些附加的特性包括,JMX管理(java Management Extensions,即java管理擴展),主從管理(master/salve,這是集群模式的一種,主要體現在可靠性方面,當主中介(代理)出現故障,那么從代理會替代主代理的位置,不至於使消息系統癱瘓)、消息組通信(同一組的消息,僅會提交給一個客戶進行處理)、有序消息管理(確保消息能夠按照發送的次序被接受者接收)。消息優先級(優先級高的消息先被投遞和處理)、訂閱消息的延遲接收(訂閱消息在發布時,如果訂閱者沒有開啟連接,那么當訂閱者開啟連接時,消息中介將會向其提交之前的,其未處理的消息)、接收者處理過慢(可以使用動態負載平衡,將多數消息提交到處理快的接收者,這主要是對PTP消息所說)、虛擬接收者(降低與中介的連接數目)、成熟的消息持久化技術(部分消息需要持久化到數據庫或文件系統中,當中介崩潰時,信息不會丟失)、支持游標操作(可以處理大消息)、支持消息的轉換、通過使用Apache的Camel可以支持EIP、使用鏡像隊列的形式輕松的對消息隊列進行監控等。

  消息中間件及MQ的詳細介紹請查看鏈接:https://segmentfault.com/a/1190000014958916
 
四、IBM 中間件

    (1)CORBA C++ Emitter

     這個是IBM自己做的一個CORBA中間件,目前在外網無法查找和下載,也沒有相關的資料,大部分都是內部使用。

  (2)MQTT(Message Queuing Telemetry Transport,消息隊列遙測傳輸協議)     

     是一種基於發布/訂閱(publish/subscribe)模式的"輕量級"通訊協議,該協議構建於TCP/IP協議上,由IBM在1999年發布。MQTT最大優點在於,可以以極少的代碼和有限的帶寬,為連接遠程設備提供實時可靠的消息服務。作為一種低開銷、低帶寬占用的即時通訊協議,使其在物聯網、小型設備、移動應用等方面有較廣泛的應用。

     MQTT是一個基於客戶端-服務器的消息發布/訂閱傳輸協議。MQTT協議是輕量、簡單、開放和易於實現的,這些特點使它適用范圍非常廣泛。在很多情況下,包括受限的環境中,如:機器與機器(M2M)通信和物聯網(IoT)。其在,通過衛星鏈路通信傳感器、偶爾撥號的醫療設備、智能家居、及一些小型化設備中已廣泛使用。

  后續有發現其它更多被認可且廣泛使用的中間件會在此繼續更新。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM