(1)從ICE的對象講起

通信實體、通信信息、鏈路傳輸

從網絡節點層面看,網絡中的通信實體是以計算機爲單位。從tcp編程的角度看,通信實體是以socket爲單位。從ice的角度看,通信實體以對象爲單位。

ice認爲分佈式系統是由對象構成的,所以對分佈式系統建模的時候採用的是面向對象設計方法。ice中的對象和麪向對象領域裏的對象概念上沒有什麼本質區別,只是ice中的對象只包含操作,所以ice中的對象又叫做接口類型的對象。

定義對象之間通信協議的時候,也就是.ice文件裏面命名時,對象的類型用的是interface這個關鍵字,而不是class。

既然通信實體有了,要完成點和點通信這個業務,必須要傳輸通信的信息才行。從網絡節點層面看,通信信息需要通過計算機網卡傳輸才行。從tcp編程角度看,通信信息(也就是二進制數據流)的傳輸需要通信的雙方通過調用read和write才行。從ice的角度看,通信信息的傳輸只需要調用對象中的操作就可以實現。

所以說ice本質就是個RPC調用,只不過原來大多的RPC調用是個全局函數,不便於管理。ice爲了便於管理,加了一層抽象,現在變成是類中的成員函數罷了。這麼做帶來好處跟面向對象編程帶來的好處是一樣的,當然帶來的壞處是一樣的。

通信框架圖

下面這個圖是最初ice對分佈式系統建模時所用的模型,很簡單,就是對象和對象在進行通信。隨着認識的深入,後面對分佈式系統中各個組件的劃分也會越來越細。
這裏寫圖片描述

對象(object)

身份標識唯一性(id)

每個Ice 對象都有一個唯一的對象標識(object identity)。對象標識是用於把一個對象與其他所有對象區別開來的標識值。Ice 對象模型假定對象標識是全局唯一的,也就是說,在一個Ice 通信域中,不會有兩個對象具有相同的對象標識。這個也是ice對象作爲通信實體的基本性質。

特徵多樣性(facets)

每個Ice 對象具有一個特殊的接口,稱爲它的主接口。此外, Ice 對象還可以提供零個或更多其他接口,稱爲facets (面)。客戶可以在某個對象的各個facets 之間進行挑選,選出它們想要使用的接口。提出這個概念主要是爲了對通信信息進行一級分類,其實我覺得沒必要對通信信息進行一級分類,因爲沒有什麼卵用。如果需要用到對通信信息的一級分類,爲什麼不搞另一個ice對象呢?

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