(3)ICE服務員起到的作用

爲什麼叫服務員

Ice 對象是一種具有類型、標識、尋址信息的概念性實體。由此話可以得出的結論是Ice對象相當於通信協議,只是定義了一個通信的規範。也就是規定好了客戶想要的服務(函數調用),享受服務時需要提供的資料信息(函數參數),以及最終的服務結果(函數參數和返回值)。但是至於服務具體是怎麼完成的,Ice對象是不負責的。

爲了完成客戶服務,服務端必須要對請求進行處理。換句話說,就是每個Ice對象都要有相應的負責人,這個負責人當然可以同時負責一個或者多個Ice對象。所謂負責Ice對象,無非就是滿足Ice對象的需求。Ice對象的需求其實只有一個,那就是Ice對象裏面的操作,所以這些負責人最終的工作就是實現Ice對象裏面的操作。這些負責人在Ice框架中有個專門的術語,叫做Ice服務員(servant)。

一個Ice服務源可以只服務一個Ice 對象,也可以同時服務若干Ice 對象。如果是前一種情況, Ice服務員所服務的Ice 對象的標識在這個Ice服務員中是隱含的。如果是後一種情況,在每次收到請求時, Ice服務員也會收到Ice 對象的標識。這樣, Ice服務員可以在處理該請求期間,決定服務於哪一個Ice對象。

反過來,一個Ice 對象也可以擁有多個Ice服務員。例如,我們可以爲某個Ice 對象創建一個代理,這個對象有兩個不同的地址,分別在兩臺機器上。在這種情況下,我們將擁有兩個服務器,每個服務器都有一個Ice服務員,但兩個Ice服務員服務的是同一個Ice 對象。
當客戶調用這樣的Ice 對象上的操作時,客戶端的Ice底層環境只把請求發給一個服務器。換句話說,使用服務於同一個Ice 對象的多個Ice服務員,你可以構建冗餘的系統,來實現容災。
客戶端Ice底層環境在發送請求時,會試着把請求發給其中一個服務器。如果失敗,就把請求發給第二個服務器依次類推。只有在所有嘗試都失敗的情況下,錯誤纔會上報給客戶端應用。

通信框架圖

對象有了,代理也有了,服務員也有了,Ice完成通信所需要的基本組件都已經齊了。
這裏寫圖片描述

servant在Ice中的實現

servant在Ice中又叫負責類,負責一個或多個Ice 對象,類的方法對應於Ice 對象的接口上的操作,並且提供這些操作的行爲。
負責類的命名方式一般是在Ice對象類型後面加大寫字母“I”。接着在服務器端對負責類進行註冊,也就是把這個負責類和負責的Ice對象建立聯繫。
維護這個聯繫信息的東西叫做適配器,也就是下個章節要講的adapter。

發佈了31 篇原創文章 · 獲贊 5 · 訪問量 2萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章