最近項目中運用到了ICE文件傳輸。第一課(ICE的介紹)
一、 介紹ICE
ICE(Internet Communications Engine)是Zeroc提供的一款高性能的中間件。使用ICE能使得(C#、php、c++、java或python)與java,c++,.net,python等進行交互。基於ICE可以實現電信級的解決方案。 ICE ,是一種流行的面向對象的中間件,用來作網絡通訊引擎。
二、ICE 的好處
- 面向對象的語義,所有的操作調用都使用遲后綁定。
- 支持同步和異步的消息傳遞,提供了同步和異步的操作調用和分派,提供了發布——訂閱消息傳遞機制。
- 與硬件架構無關,客戶端及服務器與底層的硬件架構屏蔽開來。對於應用代碼而言,像字節序和填充這樣的問題都隱藏了起來。
- 與上層的編程語言無關,客戶端和服務器可以分別部署,所用語言也可以不同,支持C#、C++、Java語言,客戶端支持PHP語言。
- 與采用的操作系統無關,ICE完全是可移植的,同樣的源碼能夠在Windows、Linux、MacOS和UNIX上編譯和運行。
- 完全是線程化的,其API是線程安全的。
- 采用TCP、IP 和UDP作為傳輸協議,客戶端和服務器代碼都不需要了解底層的傳輸機制。
- 服務器的位置是對用戶透明的,ICE例程負責定位對象,並管理底層的傳輸機制,比如打開和關閉連接。客戶與服務器之間的交互顯得像是無連接的。服務器可以遷移到不同的物理地址,而不會使客戶持有的代理失效,而客戶完全不知道對象實現是怎樣分布在多個服務器進程上的。
三、為什么要使用中間件?
設想一個這樣的場景:對於一個大型網站來說,往往有很多個web服務器,每個web服務器都存在很多對於數據庫的操作。如果直接在程序上直接操作數據庫,那么勢必要在每台web
服務器都配置數據庫的用戶名,密碼等信息,這是極度不安全的。並且如果我們要統一對數據庫的操作進行管理和修改等,那么久要去每個web服務器上修改。因此,這時候中間件就產
了。
它是基於SOA(面向服務架構)的思想,將對數據庫的操作統一成一個服務,放置於一台服務機上,每個web服務器要對數據庫進行操作,就可以直接訪問這個提供中間件服務的服務
器。還有一點,考慮到性能問題,這里的提供服務的機子我們不使用html和xml傳輸數據,一般使用TCP,UDP這層的通信。因此ICE就是現在非常流行的網站開發中間件之一。
四、ICE通信結構圖
ICE有分為提供服務的一方Server和尋求服務的一方Client,兩台機子上都需要安裝ICE組件,他們的通信結構如下:

Client端應該事先知道Server端能提供的服務是什么,有什么格式?這就是圖中的Proxy Code,在Proxy Code中定義好了類和接口。Server端中接口定義的就是Skeleton,具體實現接
口的是Server Application,Server Application可以是C++,java,C#等寫的,但是ICE不提供PHP寫Server端。
