CORBA:Common Object Request Broker Architecture

1.CORBA:Common Object Request Broker Architecture,通用對象請求代理體系。是由對象管理組(Object Management Group, OMG)制定的一種標準的面向對象分佈式應用程序體系規範,旨在爲異構分佈式環境中,硬件和軟件系統的互聯而提出的一種解決方案。

2.解決異構分佈式系統兩條主要原則:

(1).尋求獨立於平臺的模型和抽象,這樣有助於解決大部分問題。

(2).在不犧牲太多性能的前提下,儘可能隱藏底層的複雜細節。

3.對象管理組(OMG)定義的兩類與平臺無關的分佈式對象模型:

(1).對象模型(Object Model):用來定義在一個異構環境中,如何描述分佈式對象接口。對象模型將對象定義爲永恆不變、始終唯一的,對象模型封裝實體,這些實體只能被嚴格定義的接口訪問,客戶機通過向對象發請求,才能使用對象提供的服務,對象的實現細節和它的位置對於客戶機上隱藏的。

(2).引用模型(Reference Model):用來說明對象之間如何交互。引用模型提供的接口種類,通常是按對象接口編組,所有接口種類有一個對象請求代理(Object Request Broker,ORB)按概念鏈接在一起。通常,一個ORB可以在客戶機和對象之間進行通信,當請求發送給對象時,透明地激活那些沒有運行的對象。

4.對象管理組(OMG)的接口種類:

(1).對象服務接口:Object Services,OS.是與領域無關(水平定向)的接口,對象管理組定義的命名服務(Naming Service)和交易服務(Trading Service)都是對象服務。對象服務通常被認爲是分佈式計算架構的核心部分。

(2).領域接口:Domain Interface,DI.其作用與對象服務接口類似,但是領域接口針對領域而已,它與特定領域相關(垂直定向)。

(3).應用程序接口:Application Interface,AI.是專門爲特定應用程序而開發的,並不是對象管理組所制定的標準。但是如果某些應用程序的接口出現在許多不同的應用程序中,那麼這些應用程序接口應作爲其他接口種類中的一類成爲接口標準化的備選項。

5.CORBA常用術語:

(1).ORB:Object Request Broker,對象請求代理,在一個面向對象的分佈式環境中,ORB可以爲應用程序、服務器、網絡設施之間分發消息提供關鍵通信設施。可以將ORB想象成一組軟件總線,它提供了一個公用消息傳遞接口,通過這個接口,不同類型的對象可以以對等層策略進行通信。ORB是CORBA的核心組件,提供了識別和定位對象、處理連接管理、傳送數據和請求通信的框架結構。

(2).CORBA對象:CORBA Object,是一個“虛擬”的實體,可以有對象請求代理(ORB)定位,並且可以被客戶程序請求調用。

(3).目標對象:Target Object,在一個CORBA請求調用的上下文中,目標對象是指這個請求目標的CORBA對象。CORBA對象模型是一個單調度模型(single-dispatching model),即一個請求的目標對象只能由這個請求的對象引用來確定。

(4).客戶程序:Client,是一個實體,由它來向CORBA對象發出調用請求。

(5).服務程序:Server,是一個擁有一個或多個CORBA對象的應用程序,用於處理客戶程序請求。

(6).請求:Request,是一個由客戶程序所提出的CORBA對象的調用操作。請求從一個客戶機傳給服務器中的目標對象,如果這個請求要求一個CORBA對象作爲響應,目標對象負責返回結果。

(7).伺服程序:Servant,是一個編程語言實體,用來實現一個或多個CORBA對象。伺服程序也稱爲具體化的CORBA對象,伺服程序存在於服務器應用程序上下文中,是一個特定類的對象實例。CORBA只是一個規範,CORBA使用對象定義語言(Interface Definition Language,IDL)定義分佈式程序的對象,以及對象之間的交互操作,具體的實現由不同的編程語言如C++或Java來提供,伺服程序就是這些具體編程語言中的程序對象。

(8).可互操作的對象引用:Interoperable Object Reference,IOR.存儲幾乎所有ORB間協議信息,用於建立客戶機和目標對象之間的通信,爲ORB的互操作提供標準化的對象引用格式。每個IOR指定一個或多個所支持的協議,對於每個協議,IOR包括那個協議所專有的信息。對於IIOP,每個IOR包括一個主機名,TCP/IP端口號和一個對象密鑰,密鑰根據所給出的主機名和端口組合來識別目標對象。

一個IOR主要有三個部分組成:倉庫ID,終點信息和對象密鑰。

個人理解IOR類似於數據庫連接信息或者JNDI連接信息對象等,用於傳輸對象之間的操作信息。

6.CORBA體系:

(1).客戶端調用靜態存根(static stubs)向服務器發出請求,存根(stubs)是代理對象支持的客戶端程序。

(2).服務器端調用靜態框架(static skeleton)處理客戶端請求,框架(skeleton)是服務器端程序。

7.CORBA的接口定義語言:

Interface Definition Lanuage,IDL.IDL是CORBA的基本抽象,它從實現中分離出對象接口,用於描述客戶機和服務器程序之間交互操作用到的數據類型和對象接口。因爲IDL只描述接口,不描述實現,它是一個純說明性語言,因此IDL無法編寫可執行的語句,也無法解說對象的狀態,IDL定義把焦點集中在對象接口、其他接口所支持的操作和操作時可能引發的異常上。IDL與編程語言無關,這是CORBA支持異構系統和獨立開發應用程序集成的關鍵。

IDL定義由一個IDL編譯器編譯成一個具體的實現語言如C++等,IDL編譯器將IDL中這些與編程語言無關的對象和接口定義翻譯成特定編程語言的類型定義和API,開發者使用這些編譯處理的類型和API來提供應用程序功能和與ORB交互。

IDL編譯成特定編程語言的轉換算法由CORBA來確定,併成爲語言映射(Language Mapping)。

8.對象管理組的生命週期服務(Life Cycle Service):包括對象的創建、拷貝、移動和撤銷,以及使用回收(Evictor)模式實現對大對象內存消耗限制和無用存儲單元回收策略。

對象管理器的生命週期服務類似於EJB中EJB對象的創建、鈍化、激活以及被Java虛擬機垃圾回收等。

9.CORBA對象請求代理(ORB)間協議:

(1).GIOP:General Inter ORB Protocol,通用ORB間協議,是一類抽象的協議,指定了轉換語法和消息格式的標準集,運行獨立開發的ORB可以在任何一個面向連接的傳遞中進行通信。

(2).IIOP:Internet Inter-ORB Protocol,因特網ORB間協議,指定GIOP如何在TCP/IP上實現。

10.GIOP消息格式:

(1).Request:

從客戶機發送到服務器,請求調用服務器一個操作或讀寫一個屬性。

(2).Reply:

從服務器發送到客戶機,只是爲了響應客戶機的請求,包含一個操作調用的結果。

(3).CancelRequest;

客戶機通知服務器它已對一個操作的結果失去了興趣。

注意:當操作執行時,一個CancelRequest將不會中止一個操作,相反,它只是通知服務器當操作完成時,不再需要向客戶機傳遞應答。

(4).LocateRequest:

客戶機使用該請求從一個對象中獲得當前的地址信息。

(5).LocateReply:

服務器使用該響應消息對客戶機的LocateRequest進行應答,LocateRequest和LocateReply可以降低定位對象的開銷。

(6).CloseConnection:

服務器使用該消息通知客戶機該服務器程序準備關閉連接。

(7).MessageError:

客戶機/服務器都可以發送該消息,用於響應任何錯誤的GIOP消息。

(8).Fragment:

客戶機/服務器都可以發送的消息,用於決定是否已存儲片方式發送消息。

11.IOR結構:

CORBA使用可互用的對象引用(IOR)作爲識別一個對象的通用手段,IOR包含一個對象的接口類型和一個/多個的協議配置文件。每個配置文件包含客戶機使用一個特定協議發送一個請求所需的信息。單個IOR可能同時包含幾個協議的尋址信息,使得單個CORBA對象可以通過不同的傳輸進行訪問。

12.CORBA請求調用步驟:

客戶機通過發送消息來調用CORBA操作,當客戶機調用CORBA操作時,ORB完成以下操作流程:

(1).定位目標對象。

(2).調用服務器應用程序。

(3).傳遞調用所需的參數。

(4).必要時,激活調用目標對象的伺服程序。

(5).等待請求結束。

(6).如果調用成功,返回out/inout參數和將返回值傳給客戶機。

(7).如果調用失敗,返回一個異常給客戶機。

作者:chjttony
來源:CSDN
原文:https://blog.csdn.net/chjttony/article/details/6543116
版權聲明:本文爲博主原創文章,轉載請附上博文鏈接!1.CORBA:Common Object Request Broker Architecture,通用對象請求代理體系。是由對象管理組(Object Management Group, OMG)制定的一種標準的面向對象分佈式應用程序體系規範,旨在爲異構分佈式環境中,硬件和軟件系統的互聯而提出的一種解決方案。

2.解決異構分佈式系統兩條主要原則:

(1).尋求獨立於平臺的模型和抽象,這樣有助於解決大部分問題。

(2).在不犧牲太多性能的前提下,儘可能隱藏底層的複雜細節。

3.對象管理組(OMG)定義的兩類與平臺無關的分佈式對象模型:

(1).對象模型(Object Model):用來定義在一個異構環境中,如何描述分佈式對象接口。對象模型將對象定義爲永恆不變、始終唯一的,對象模型封裝實體,這些實體只能被嚴格定義的接口訪問,客戶機通過向對象發請求,才能使用對象提供的服務,對象的實現細節和它的位置對於客戶機上隱藏的。

(2).引用模型(Reference Model):用來說明對象之間如何交互。引用模型提供的接口種類,通常是按對象接口編組,所有接口種類有一個對象請求代理(Object Request Broker,ORB)按概念鏈接在一起。通常,一個ORB可以在客戶機和對象之間進行通信,當請求發送給對象時,透明地激活那些沒有運行的對象。

4.對象管理組(OMG)的接口種類:

(1).對象服務接口:Object Services,OS.是與領域無關(水平定向)的接口,對象管理組定義的命名服務(Naming Service)和交易服務(Trading Service)都是對象服務。對象服務通常被認爲是分佈式計算架構的核心部分。

(2).領域接口:Domain Interface,DI.其作用與對象服務接口類似,但是領域接口針對領域而已,它與特定領域相關(垂直定向)。

(3).應用程序接口:Application Interface,AI.是專門爲特定應用程序而開發的,並不是對象管理組所制定的標準。但是如果某些應用程序的接口出現在許多不同的應用程序中,那麼這些應用程序接口應作爲其他接口種類中的一類成爲接口標準化的備選項。

5.CORBA常用術語:

(1).ORB:Object Request Broker,對象請求代理,在一個面向對象的分佈式環境中,ORB可以爲應用程序、服務器、網絡設施之間分發消息提供關鍵通信設施。可以將ORB想象成一組軟件總線,它提供了一個公用消息傳遞接口,通過這個接口,不同類型的對象可以以對等層策略進行通信。ORB是CORBA的核心組件,提供了識別和定位對象、處理連接管理、傳送數據和請求通信的框架結構。

(2).CORBA對象:CORBA Object,是一個“虛擬”的實體,可以有對象請求代理(ORB)定位,並且可以被客戶程序請求調用。

(3).目標對象:Target Object,在一個CORBA請求調用的上下文中,目標對象是指這個請求目標的CORBA對象。CORBA對象模型是一個單調度模型(single-dispatching model),即一個請求的目標對象只能由這個請求的對象引用來確定。

(4).客戶程序:Client,是一個實體,由它來向CORBA對象發出調用請求。

(5).服務程序:Server,是一個擁有一個或多個CORBA對象的應用程序,用於處理客戶程序請求。

(6).請求:Request,是一個由客戶程序所提出的CORBA對象的調用操作。請求從一個客戶機傳給服務器中的目標對象,如果這個請求要求一個CORBA對象作爲響應,目標對象負責返回結果。

(7).伺服程序:Servant,是一個編程語言實體,用來實現一個或多個CORBA對象。伺服程序也稱爲具體化的CORBA對象,伺服程序存在於服務器應用程序上下文中,是一個特定類的對象實例。CORBA只是一個規範,CORBA使用對象定義語言(Interface Definition Language,IDL)定義分佈式程序的對象,以及對象之間的交互操作,具體的實現由不同的編程語言如C++或Java來提供,伺服程序就是這些具體編程語言中的程序對象。

(8).可互操作的對象引用:Interoperable Object Reference,IOR.存儲幾乎所有ORB間協議信息,用於建立客戶機和目標對象之間的通信,爲ORB的互操作提供標準化的對象引用格式。每個IOR指定一個或多個所支持的協議,對於每個協議,IOR包括那個協議所專有的信息。對於IIOP,每個IOR包括一個主機名,TCP/IP端口號和一個對象密鑰,密鑰根據所給出的主機名和端口組合來識別目標對象。

一個IOR主要有三個部分組成:倉庫ID,終點信息和對象密鑰。

個人理解IOR類似於數據庫連接信息或者JNDI連接信息對象等,用於傳輸對象之間的操作信息。

6.CORBA體系:

(1).客戶端調用靜態存根(static stubs)向服務器發出請求,存根(stubs)是代理對象支持的客戶端程序。

(2).服務器端調用靜態框架(static skeleton)處理客戶端請求,框架(skeleton)是服務器端程序。

7.CORBA的接口定義語言:

Interface Definition Lanuage,IDL.IDL是CORBA的基本抽象,它從實現中分離出對象接口,用於描述客戶機和服務器程序之間交互操作用到的數據類型和對象接口。因爲IDL只描述接口,不描述實現,它是一個純說明性語言,因此IDL無法編寫可執行的語句,也無法解說對象的狀態,IDL定義把焦點集中在對象接口、其他接口所支持的操作和操作時可能引發的異常上。IDL與編程語言無關,這是CORBA支持異構系統和獨立開發應用程序集成的關鍵。

IDL定義由一個IDL編譯器編譯成一個具體的實現語言如C++等,IDL編譯器將IDL中這些與編程語言無關的對象和接口定義翻譯成特定編程語言的類型定義和API,開發者使用這些編譯處理的類型和API來提供應用程序功能和與ORB交互。

IDL編譯成特定編程語言的轉換算法由CORBA來確定,併成爲語言映射(Language Mapping)。

8.對象管理組的生命週期服務(Life Cycle Service):包括對象的創建、拷貝、移動和撤銷,以及使用回收(Evictor)模式實現對大對象內存消耗限制和無用存儲單元回收策略。

對象管理器的生命週期服務類似於EJB中EJB對象的創建、鈍化、激活以及被Java虛擬機垃圾回收等。

9.CORBA對象請求代理(ORB)間協議:

(1).GIOP:General Inter ORB Protocol,通用ORB間協議,是一類抽象的協議,指定了轉換語法和消息格式的標準集,運行獨立開發的ORB可以在任何一個面向連接的傳遞中進行通信。

(2).IIOP:Internet Inter-ORB Protocol,因特網ORB間協議,指定GIOP如何在TCP/IP上實現。

10.GIOP消息格式:

(1).Request:

從客戶機發送到服務器,請求調用服務器一個操作或讀寫一個屬性。

(2).Reply:

從服務器發送到客戶機,只是爲了響應客戶機的請求,包含一個操作調用的結果。

(3).CancelRequest;

客戶機通知服務器它已對一個操作的結果失去了興趣。

注意:當操作執行時,一個CancelRequest將不會中止一個操作,相反,它只是通知服務器當操作完成時,不再需要向客戶機傳遞應答。

(4).LocateRequest:

客戶機使用該請求從一個對象中獲得當前的地址信息。

(5).LocateReply:

服務器使用該響應消息對客戶機的LocateRequest進行應答,LocateRequest和LocateReply可以降低定位對象的開銷。

(6).CloseConnection:

服務器使用該消息通知客戶機該服務器程序準備關閉連接。

(7).MessageError:

客戶機/服務器都可以發送該消息,用於響應任何錯誤的GIOP消息。

(8).Fragment:

客戶機/服務器都可以發送的消息,用於決定是否已存儲片方式發送消息。

11.IOR結構:

CORBA使用可互用的對象引用(IOR)作爲識別一個對象的通用手段,IOR包含一個對象的接口類型和一個/多個的協議配置文件。每個配置文件包含客戶機使用一個特定協議發送一個請求所需的信息。單個IOR可能同時包含幾個協議的尋址信息,使得單個CORBA對象可以通過不同的傳輸進行訪問。

12.CORBA請求調用步驟:

客戶機通過發送消息來調用CORBA操作,當客戶機調用CORBA操作時,ORB完成以下操作流程:

(1).定位目標對象。

(2).調用服務器應用程序。

(3).傳遞調用所需的參數。

(4).必要時,激活調用目標對象的伺服程序。

(5).等待請求結束。

(6).如果調用成功,返回out/inout參數和將返回值傳給客戶機。

(7).如果調用失敗,返回一個異常給客戶機。

作者:chjttony
來源:CSDN
原文:https://blog.csdn.net/chjttony/article/details/6543116
版權聲明:本文爲博主原創文章,轉載請附上博文鏈接!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章