Ice框架簡介及Vs2013安裝Ice 3.7.0步驟及實例

ICE是什麼?c++

ICE是ZEROC官網的開源通訊協議產品,它的全稱是:The Internet Communications Engine,翻譯爲中文是互聯網通訊引擎,是一個面向對象的中間件,支持C++、Java、C#、VB、Python等,客戶和服務器能夠用不一樣的語言,能夠運行在不一樣的操做系統和機器架構上,支持TCP/UDP。使咱們可以以最小的代價構建分佈式應用程序。ICE使咱們專一於應用邏輯的開發,它來處理全部底層的網絡接口編程,這樣咱們就不用去考慮這樣的細節:打開網絡鏈接、網絡數據傳輸的序列化與反序列化、鏈接失敗的嘗試次數等。編程


爲何會有ICE?服務器

ICE是分佈式應用的一種比較好的解決方案,雖然如今也有一些比較流行的分佈式應用解決方案,如微軟的.NET(以及原來的DCOM)、CORBA及WEBSERVICE等,可是這些面向對象的中間件都存在一些不足:網絡

.NET是微軟產品,只面向WINDOWS系統,而實際的狀況是在當前的網絡環境下,不一樣的計算機會運行不一樣的系統,如LINUX上面就不可能使用.NET;架構

CORBA雖然在統一標準方面作了不少的工做,可是不一樣的供應商實現之間仍是缺少互操做性,而且目前尚未一家供應商能夠針對全部的異種環境提供全部的實現支持,且CORBA的實現比較複雜,學習及實施的成本都會比較高;異步

WEB SERVICE最要命的缺點就是他的性能問題,對於要求比較高的行業是不多會考慮WEB SERVICE的。分佈式

ICE的產生就是源於.NET、CORBA及WEBSERVICE這些中間件的不足,它能夠支持不一樣的系統,如WINDOWS、LINUX等,也能夠支持在多種開發語言上使用,如C++、C、JAVA、RUBY、PYTHON、VB等,服務端能夠是上面提到的任何一種語言實現的,客戶端也能夠根據本身的實際狀況選擇不一樣的語言實現,如服務端採用C語言實現,而客戶端採用JAVA語言實現,底層的通信邏輯經過ICE的封裝實現,咱們只須要關注業務邏輯。工具


ICE是如何工做的?性能

Ice 是一種面向對象的中間件平臺,這意味着 Ice爲構建面向對象的客戶-服務器應用提供了工具、API和庫支持。要與Ice持有的對象進行通訊,客戶端必須持有這個對象的代理(與CORBA的引用是相同的意思),這裏的代理指的是這個對象的實例,ICE在運行時會定位到這個對象,而後尋找或激活它,再把In參數傳給遠程對象,再經過Out參數獲取返回結果。學習

這裏提到的代理又分爲直接代理和間接代理,直接代理其內部保存有某個對象的標識,以及它的服務器的運行地址;間接代理指的是其內部保存有某個對象的標識,以及對象適配器名(objectadaptername),間接代理沒有包含尋址信息,爲了正確地定位服務器,客戶端在運行時會使用代理內部的對象適配器名,將其傳給某個定位器服務,好比IcePack服務,而後,定位器會把適配器名看成關鍵字,在含有服務器地址的表中進行查找,把當前的服務器地址返回給客戶,客戶端run time如今知道了怎樣聯繫服務器,就會像日常同樣分派 (dispatch)客戶請求。

ICE能夠保證在任何的網絡環境或者操做系統下,成功的調用只有一次,它在運行時會盡力的定位到遠程服務器,在鏈接失敗的狀況下會作嘗試性重複性鏈接,確實連不上的狀況會給用戶以提示。

客戶端在調用服務端的方法時,能夠採起同步或異步的方式實現,同步調用就至關於調用本身本地的方法同樣,其它行爲會被阻塞;異步調用是很是有用的調用方式,如服務端須要準備的數據來自於其它異步接口,這個時候客戶端就不須要等待,待服務端數據準備充份後,以消息的方式通知客戶端,服務端就能夠去幹其它的事情了,而客戶端也能夠到服務端獲取數據了。 
Ice應用組成: 
Ice對象——Ice對象是在本地或遠地的地址空間中、能響應客戶請求的實體。先由Slice定義,而後編譯成特定語言版本;每一個Ice對象有多個接口,支持特定操做,客戶經過調用它的接口來發出請求;每一個對象有惟一的對象標識。 
Servants——服務器端編寫的類實例,體現Ice對象行爲。 
代理(Proxies)——代理是Ice對象在客戶端的表明,客戶調用代理上的操做來得到服務端上Ice對象提供的服務。 
通訊器(Ice::Communicator)——通訊時,服務器和客戶創建一個通訊器,爲通訊進程分配和管理資源,是雙方通訊的專用線路。 
對象適配器(object adapter)——專用於服務器端的Ice API,把Ice run time與服務端編寫的Servant類鏈接在一塊兒。每一個適配器綁定一個端口。 
Ice應用的結構以下: 
ICE應用結構 
Slice 
Slice (Specification Language for Ice, Ice規範語言),用於對象接口定義與實現相分離的基礎性抽象機制,能夠把定義好的Ice對象映射成特定語言。 
Slice開發過程見下圖: 
相同開發環境: 
相同開發環境 
不一樣開發環境: 
這裏寫圖片描述

以上內容引用自網絡


安裝 
1.下載並安裝 ICE.7.0 MSI下載點擊這裏,咱們會發現這個版本的文件很小,不到20M,上一個版本都有差很少1G了(爲何這麼小,後面說緣由)

2.下載ICE-builder用於支持Visual Studio的插件擴展,文件爲IceBuilder.vsix,目前只支持2012以上的版本 
vs2010安裝擴展方法:官網有說明,暫時還未驗證,後面補充,文件爲IceBuilder_VS2010.vsix 
聯網安裝方法:工具->擴展和更新->聯機,輸入關鍵字ice查找 ice builder安裝便可. 
離線安裝能夠去微軟或Zeroc官網獲取 微軟連接地址點擊這裏 
全部版本安裝時直接雙擊運行便可,安裝完成,在「工具->屬性->Projects and Solutions->ICE Builder」下面能夠看到「ICE Home Directory」的設置,可是3.7.0版本將全部的dll,lib及include已經所有整合進NuGet擴展包,包括全部的第三方庫,這也是它爲何這麼小的緣由,設置後會出現以下提示: 
「invalid ice home directory」 
設置不了?嗯…,多是微軟的插件未和當前的版本同步致使,緣由其實就是上面說的,找不到重要的libary和C++包含目錄! 
這裏寫圖片描述 
這裏咱們不用理會,這個目錄主要是重編譯源碼的時候使用,除非你有特殊定製需求,正常狀況下,這些文件官方都已經生成好了 
安裝完成後,咱們能夠建立一個工程,反鍵能夠看到對應菜單項 
這裏寫圖片描述 
點擊「add ice builder to project」便可 
點擊」工程->屬性->通用屬性「能夠查看ice映射目錄相關設置,若須要能夠手動修改,我這裏默認generated文件夾下 
這裏寫圖片描述

3.安裝ICE Nuget package,擴展包包含了全部重要lib,dll和include,聯網安裝方法以下: 
「工具->庫程序包管理器->管理解決方案…->聯機」,輸入關鍵字ice查找對應的版本便可,我這裏使用vs2013,選擇」zeroc ice c++ for vs2013」 
這裏寫圖片描述 
離線使用離線包安裝方法以下: 
咱們把下載的nupkg格式的包(zeroc.ice.v120.3.7.0.nupkg)複製到」C:\Users\itsvse\AppData\Local\NuGet\Cache「目錄 
這個目錄如何查找?」工具->包管理器「,點擊瀏覽能夠快速定位 
最後,在nuget控制檯執行以下命令: 
install-package zeroc.ice.v120 -version 3.7.0 
這裏寫圖片描述

或者直接指向包所在的目錄 
install-package zeroc.ice.v120 -version 3.7.0 
-source E:\ZeroC\Ice_install_and_documents 
安裝完成,重啓工程,咱們會發現解決方案管理器中會多出一個Slice Files文件夾,這裏就是利用slice語言生成c++須要的.h和.cpp文件的地方。 
附1:Ice 3.7.0 Doucument 未完待續…

相關文章
相關標籤/搜索