一 簡(jiǎn)介
Ice(Internet Communications Engine)是ZeroC公司的杰作,是新一代的面向?qū)ο蟮姆植际较到y(tǒng)中間件。Ice是RPC通訊領(lǐng)域里最穩(wěn)定、強(qiáng)大、高性能、跨平臺(tái)、多語(yǔ)言支持的老牌開(kāi)源中間件,特別適合于當(dāng)前互聯(lián)網(wǎng)領(lǐng)域中一個(gè)平臺(tái)存在多種開(kāi)發(fā)語(yǔ)言編程,以及網(wǎng)站和app應(yīng)用并存的復(fù)雜大型項(xiàng)目。
RPC(Remote Procedure Call Protocol 遠(yuǎn)程過(guò)程調(diào)用協(xié)議),是一種通過(guò)網(wǎng)絡(luò)從遠(yuǎn)程計(jì)算機(jī)程序上請(qǐng)求服務(wù),而不需要了解底層網(wǎng)絡(luò)技術(shù)的協(xié)議。RPC假定某些傳輸協(xié)議的存在,如TCP或UDP,為通訊程序之間攜帶信息數(shù)據(jù);在OSI網(wǎng)絡(luò)通訊模型中,RPC跨越了傳輸層和應(yīng)用層。
Ice通過(guò)與編程語(yǔ)言無(wú)關(guān)的中立語(yǔ)言Slice(Specification Language fro Ice)來(lái)描述服務(wù)的接口,從而達(dá)到對(duì)象接口與其實(shí)現(xiàn)想分離的目的。
目前Ice平臺(tái)支持客戶端API的語(yǔ)言有C++、.NET、Java、Python、Object-C、Ruby、PHP、JavaScript等。在服務(wù)器可以使用C、.NET、Java、Python等來(lái)開(kāi)發(fā)。
二 環(huán)境搭建
1.在 ice官網(wǎng) 下載 Ice-3.6.3.msi ?并安裝 ?
2.配置環(huán)境變量 ? ?
新建變量 ICE_HOME 值為你的安裝路徑
在PATH 中加入 %ICE_HOME%/bin
在ClassPath中加入 %ICE_HOME%/lib/bd.jar ? ? %ICE_HOME%/lib/Ice.jar
在cmd中輸入slice2java ?如有信息則成功
3.MyEclipse ice Builder插件下載(以MyEclipse10.7為例)(可跳過(guò)此步,直接用命令行形式編譯ice文件亦可)
打開(kāi)菜單欄? Help--》MyEclipse Configuration Center? --》SoftWare? 輸入http://www.zeroc.com/download/eclipse ?下載安裝后重啟MyEclipse即可
4.配置Ice安裝路徑
三 HelloWorld
1.在MyEclipse中新建一個(gè)工程,右鍵工程,選擇Ice Builder --》Add Ice Builder
自動(dòng)幫我們導(dǎo)入了Ice的jar包,并生成兩個(gè)文件夾
generated 為自動(dòng)生成的slice2java文件目錄
slice為我們存放ice文件的路徑
2.在Slice文件夾中新建一個(gè)后綴名為ice的文件,如printer.ice
用slice語(yǔ)言編寫(xiě)我們的ice代碼(ice中只申明接口,不做實(shí)現(xiàn))
module Demo {
? ?interface Printer {
? ? ? ?void printString(string s);
? };
};
3.generated文件夾中會(huì)自動(dòng)生成下列文件(使用cmd命令 ?slice2java編譯printer.ice文件也是一樣的效果)
4. 創(chuàng)建servant class,實(shí)現(xiàn)ice接口
官方文檔如圖
我們按照文檔所示,在項(xiàng)目中新建一個(gè)類(lèi),命名為xxxxxI ,并繼承自 _xxxxDisp,實(shí)現(xiàn)接口中的方法
5.創(chuàng)建server類(lèi) (注釋很詳細(xì),就不做過(guò)多講解)
6.創(chuàng)建client類(lèi)
如果服務(wù)端和客戶端分離開(kāi)來(lái),則在stringToProxy中加入 ?-h 192.168.1.62(你的ip地址)即可
7.先運(yùn)行server,然后運(yùn)行client,即可看到服務(wù)端輸出Hello World 了