1 間接代理
參考http://blog.sina.com.cn/s/blog_53e8499c0100lkoo.html
IceGrid用于支持分布式網絡服務應用,一個IceGrid域由一個注冊表(Registry)和任何數目的節點(Node)構成。注冊表(Registry)和節點(Node)一起合作管理一些信息以及包含一些應用(Application)的服務進程。每項應用(Application)被指定在特定節點上的服務。這個注冊表(Registry)持久記錄了這些信息,而節點(Node)負責啟動和監測其指定的服務器進程。對于一個典型的配置,一個節點(Node)運行在一臺計算機(稱之為Ice服務器主機)。注冊表(Registry)并不消耗很多處理器時間,所以它常常是和一個節點(Node)運行在同一臺計算機上的,注冊表(Registry)還可以和一個節點(Node)可以運行在同一進程中.如果需要容錯,注冊表(Registry)還可以用主從式的設計支持復制(Replication)。
注冊表(Registry)的主要責任,是解決作為Ice定位服務的間接代理問題,當客戶端第一次嘗試使用一種間接代理,客戶端Ice run time首先連接注冊表(registry),注冊表將間接代理的符號信息轉化為直接代理的endpoint,然后客戶端和直接代理建立一個連接。通過適配器復制,同名適配器可以分布在多個節點上,間接代理可以映射到多個節點上的直接代理,在運行時由注冊表服務根據負載均衡自動選擇一個直接代理給客戶端。
使用間接代理時,客戶端可以用以下方式直接獲取服務對象代理:
MyProxy=theObject@theAdapter??//?對象@適配器
更簡單一點的話可以用以下方式
MyProxy=theObject??//?對象
2.6.1?分布式部署
在部署IceGrid分布式服務時,需要啟動注冊表服務(icegridregistry),并配置注冊表服務地址端口、通信協議和注冊信息保存的目錄地址(ICE的注冊信息保存為BerkeleyDB的數據庫文件):
IceGrid.Registry.Client.Endpoints=tcp-p 4061
IceGrid.Registry.Data=/opt/ripper/registry
?
在服務器節點中和客戶端都需要配置注冊表服務的地址端口和通信協議:
Ice.Default.Locator=IceGrid/Locator:tcp -h 172.0.0.1 -p4061
參考這個位置http://blog.chaoskey.com/2008/04/24/10
????communicator?>stringToProxy("factory@EncoderAdapter");
Ripper::MP3EncoderFactoryPrx?factory?=
????Ripper::MP3EncoderFactoryPrx::checkedCast(proxy);
Ripper::MP3EncoderPrx?encoder?=?factory?>createEncoder();