基本概念:
•服務器/客戶端(server/client):這個的定義與一般的定義相同,主動的一方被認為是client .
•ICE對象:跟OOP中的對象類似,不同之處在於,在分布式的環境中,同一個ICE對象在不同的地址空間中都可能存在着.ICE對象也提供了一組接口(facets).ICE對象還有一個特殊的接口:主接口.
•代理(proxies):是ICE對象引用,代理是在客戶地址空間,客戶對ICE對象的操作就是通過代理來進行的.代理封裝了完成:ICE對象的尋址(包括服務器的尋址),激活ICE對象,傳入參數,等待執行並返回執行結果.
•servant:在服務器上的執行體,ICE對象對服務器的操作就是通過調用servant.
•"最多一次"原則:一次對目的的訪問,只會執行一次(並不排除出錯重試) .
組成部分:
Slice ICE的規范語言,跟CORBA的IDL(Interface Definition Language)等價的東西,是一種中間語言。Slice建立了客戶端和服務器端共同遵守的契約:接口。Slice也用來描述對象持久數據。
Slice Compilers Slice的規范語言可以映射成多種編程語言。目前ICE支持C++,Java,Python,PHP,C#和VB的語言映射。Ice的客戶端和服務器端協同工作,而不會知道分別實現的是何種編程語言。
Ice Ice的核心庫。在眾多的特性當中,Ice核心庫通過一個高效的協議(包含TCP/UDP層上協議壓縮)來管理所有的通信任務,為多線程服務器提供了一個靈活的線程池,並且有特別的功能來支持上百萬對象的可擴展性。
IceUtil 一些常用的功能函數集。例如Unicode處理和多線程編程,是用C++寫成。
IceBox 一個專用於ICE應用的應用服務器。ICEBox可以方便地運行和管理動態加載、共享庫或java類的形式Ice的服務。
IcePack 一個成熟的服務激活和部署工具。IcePack能大大簡化在異構網絡之間部署應用的復雜性。只要簡單的編寫XML格式的一個部署描述文件,IcePack就能自動處理剩下的工作。
Freeze Freeze提供了Ice Servants對象的自動持久性。通過幾行代碼,一個應用就可以生成一個高度可擴展的逐出器(evictor)來高效地管理持久對象。
FreezeScript 在大的軟件項目里,持久對象的數據類型改變很常見。為了最小化這些變化的影響,FreezeScript提供了相應的工具來檢查和移植Freeze生成的數據庫。這些工具支持XML格式的配置腳本,易於使用。
IceSSL 用於Ice核心的動態的SSL傳輸插件。提供了認證、加密和消息完整性,使用工業標准的SSL協議來實現。
Glacier 面向對象中間件平台的一個最大的挑戰是安全性和防火牆。Glacier是Ice的防火牆解決方案,它大大簡化了安全程序的部署。Glacier認證和過濾客戶的請求並允許服務器通過安全的方式回調客戶端對象。結合IceSSL的使用,Glacier提供了強大的安全解決方案,即安全,又易於配置管理。
IceStorm 一個支持聯盟的消息服務。和大多數的其他消息和事件服務相比,IceStorm支持有類型的事件,這意味着通過聯盟廣播一個消息和調用一個接口上的一個方法一樣容易。
IcePatch 一個軟件修補和分發的服務。為確保運行的軟件是最新的版本,要經常更新軟件,這是一件乏味的工作。IcePatch自動更新在某個目錄層次下的文件。只有需要更新的文件會下作到客戶端,為了快速的下載更新,IcePatch使用的高效的壓縮算法。
5 個服務:
Ice為分布式開發提供了技術完善的客戶-服務平台。實際上,現實的應用不僅僅只需要具備遠程通訊能力,通常的,還需要隨需啟動服務,把代理分布到客戶端,分發異步事件,配置應用,發布補丁等等。
Ice自帶了一些服務,這些服務具備了上面所說的特征和一些其它的特征。這些服務實現以服務器的形式實現並向你的應用提供服務。他們分別是:
a、IcePack
IcePack是Ice的定位服務。當使用間接綁定時,用來將符號化的適配器名稱轉換為協議-地址對。除了定位服務之外,IcePack還提供了如下的服務: •IcePack允許你注冊一個自動啟動的服務:即當客戶端進行請求時,服務器不需要處於運行狀態,只要第一個客戶端進行請求時,服務會自動啟動。 •IcePack支持腳本描述部署,可以輕易的配置包含了若干個服務的復雜的應用 •IcePack提供了簡單的對象查找服務,允許客戶端獲取他們感興趣的對象代理。
b、IceBox
IceBox是一個簡單的應用服務器,它可以協調多個應用組件啟動和停止。
應用組件可以用動態鏈接庫的形式發布而不是一個進程。這就減輕了系統的負載。例如,你可以在一個JVM中運行若干個應用組件而不是有多個進程,每一個進程都有自己的JVM。
c、IceStorm
IceStorm是一個發布-訂閱服務,它減除了客戶端和服務器的耦合度。本質上說,IceStorm作為一個事件分發的交換機運行。發布者將事件發給服務,IceStorm按照順序將事件傳遞給訂閱者。使用這種方法,一個事件發布者就可以把一個事件發布給多個訂閱者。事件按照主題分類,訂閱者可以指定他們感興趣的主題。只有訂閱者感興趣的主題才會發送給訂閱者。服務允許指定服務的質量,從而允許應用在可伸縮性和性能之間進行適當的折中。
如果你需要將信息發布到大量的應用組建,那么IceStorm是一個不錯的選擇。(一個很典型的例子就是股票報價的應用)。IceStorm減除了信息的發布者和訂閱者之間的耦合,同時也能重新發布已經發布的信息。另外,IceStorm可以作為聯合服務運行,即多個服務的實例可以運行在不同的機器上,從而降低了CPU的負載。
d、IcePatch
IcePatch是一個軟件補丁服務。它允許你輕松的把軟件的更新發布給客戶。客戶連接到IcePatch然后請求更新一個特定的應用。服務就自動檢查客戶軟件的版本然后下載需要更新的組件。而這些下載的組件都是放在一個壓縮包里的,從而減少了帶寬的占用。軟件補丁也可以通過結合Glacier服務發布,這樣可以讓只有經過授權的客戶才能下載軟件更新。
e、Glacier
Glacier是Ice防火牆服務:它允許客戶和服務器通過防火牆安全的通訊。客戶-服務器的通訊通過使用公鑰認證完全加密,並且通訊是雙向的。Glacier提供了相互認證和安全的會話管理支持。