2015-07-01 41 views
2

我讀了很多關於在ICE或Corba等技術中使用的僕人和物體的內容。我有很多資源可以閱讀這樣的內容:僕人和物體 - 關係

一個servant可以處理多個對象(用於資源保存)。 一個對象可以由多個僕人處理(爲了可靠性)。

有人能告訴我這兩個陳述的真實生活的例子嗎?

回答

0

多個對象的一個​​服務人員是例如銀行,每個銀行帳戶都是一個對象,但在這種情況下,您不希望每個銀行帳戶都有內存中的服務人員,因此您擁有所有銀行帳戶的一個服務人員。

由多個服務人員處理的一個對象用於負載平衡和容錯等功能。客戶端不知道它執行的是哪一個。

2

如果我沒有弄錯,這個術語是由道格拉斯施密特在他的論文中描述了通用對象請求體系結構。

下面是一些定義直接引用:

  • 注:參見下面的圖片爲清楚起見

對象 - 這是由一種身份的CORBA編程實體,一個接口和一個被稱爲僕人的實現。

僕人 - 這是一個實現編程語言實體,它定義了支持CORBA IDL接口的操作。僕人可以用各種語言編寫,包括C,C++,Java,Smalltalk和Ada。

CORBA IDL存根和骨架 - CORBA IDL存根和骨架分別用作客戶端和服務器應用之間的``膠 '',以及ORB

ORB接口 - 一個ORB是一個邏輯實體,可以用各種方式實現(例如一個或多個進程或一組庫)。爲了將應用程序與實現細節分離開來,CORBA規範爲ORB定義了一個抽象接口。該接口提供了各種幫助函數,例如將對象引用轉換爲字符串,反之亦然,併爲通過下面描述的動態調用接口進行的請求創建參數列表。

CORBA

的公共對象請求代理體系結構(CORBA)是由設計來方便上部署的不同平臺系統的通信中的對象管理組(OMG)定義的標準。 CORBA支持不同操作系統,編程語言和計算硬件上的系統之間的協作

所以,有客戶端,服務器,客戶端和服務器代理以及ORB核心。客戶端和服務器使用代理通過ORB核心進行通信,ORB核心提供了一種將客戶端請求透明地傳達給目標對象實現的機制。從客戶角度來看,這使得遠程對象的調用看起來像對象在本地地址空間中,因此簡化了分佈式環境中客戶端的設計。

鑑於以上所述,Servant是一個實現,它是遠程客戶端調用的調用目標,並且抽象了實際目標的遠程對象。

至於你的問題,一個僕人可以處理由僕人封裝的多個分佈式對象的調用。請注意,客戶端不直接訪問這些對象,而是通過Servant進行訪問。

enter image description here