CORBA(Common Object Request Broker Architecture,通用物件請求代理架構)是 OMG(Object Management Group)制定的開放標準,旨在解決異構環境下分散式物件的透明互操作問題。本文系統梳理 CORBA 核心架構、關鍵組件與運作機制。
發展歷程與核心價值
- CORBA 1.1 (1991):提出 IDL(Interface Definition Language)與 ORB 基礎概念
- CORBA 2.0 (1994):引入 IIOP(Internet Inter-ORB Protocol),實現不同廠商 ORB 間真正互操作
- 核心價值:語言無關、平台無關、位置透明、協議標準化,讓開發者專注業務邏輯而非通訊細節
核心架構組件
ORB(Object Request Broker,物件請求代理)
CORBA 系統的「總線」,負責:
- 建立客戶/伺服器連接
- 尋找並啟動目標物件
- 參數編碼/解碼(封送處理)
- 跨進程/跨機器通訊透明化
- 提供命名、事件、交易等核心服務
IDL(Interface Definition Language,介面定義語言)
語言中立的介面描述語言,定義:
- 物件介面:操作名稱、參數型別、返回型別、異常
- 資料型別:基本型別、結構、聯合、序列、陣列、列舉、介面型別
- 屬性與異常
IDL 編譯器(IDL Compiler)將定義映射為特定程式語言的存根/骨架代碼。
物件適配器
- BOA (Basic Object Adapter):標準適配器,提供物件引用生成/解析、啟用/停用、方法分派等基礎功能
- POA (Portable Object Adapter):CORBA 2.2 引入,更可移植、支援多執行緒、物件生命週期精細控制
動態調用介面 (DII) 與動態骨架介面 (DSI)
- DII:客戶端無需存根代碼,運行時構建請求(
Request 物件)動態調用
- DSI:伺服端無需骨架代碼,通用
DynamicImplementation 處理所有請求
請求處理流程
- 客戶端持有物件引用,透過存根或 DII 發起調用
- ORB 核心透過物件引用定位目標物件(可能啟動伺服進程)
- 請求經 IDL 骨架或 DSI 轉發給物件實作
- 物件實作執行業務邏輯,可回呼 ORB 服務
- 結果/異常經反向路徑返回客戶端
關鍵技術特性
| 特性 | 說明 |
| 位置透明 | 客戶端無需知道物件部署位置(同進程/跨進程/跨機器) |
| 語言映射 | 標準化映射規則:C、C++、Java、Ada、Smalltalk、COBOL、Python 等 |
| 物件引用 | 不透明識別符,封裝物件位置與介面資訊,支援字串化(IOR) |
| 介面儲存庫 (IFR) | 運行時查詢介面定義,支援動態發現與工具開發 |
| 實作儲存庫 | 儲存物件實作資訊,支援啟動策略與負載平衡 |
多 ORB 協作
系統可同時存在多個 ORB 實作(不同廠商/版本),透過:
- 物件引用區分歸屬 ORB
- ORB 核心提供基礎命名與請求路由
- 跨 ORB 呼叫經由 IIOP 協議橋接
總結
CORBA 確立了分散式物件計算的理論基石與工程標準,雖然後來 Web Services (SOAP/REST) 在企業級應用佔據主流,但 CORBA 在電信、航太、國防、金融等高效能、強一致性、異構整合領域仍具不可替代價值。理解 CORBA 有助於深入掌握分散式系統設計精髓:介面契約、位置透明、協議標準化、語言中立。