IceBox是Ice服務(wù)的容器,它的設(shè)計(jì)來(lái)源于
Service Configurator模式,該模式采取集中式的策略對(duì)服務(wù)進(jìn)行加載,管理,服務(wù)被設(shè)計(jì)為可動(dòng)態(tài)加載的組件,服務(wù)主要是動(dòng)態(tài)庫(kù)的形式,然后按需配置到IceBox,這種方式解耦了服務(wù)器和服務(wù),使開(kāi)發(fā)人員更專注于業(yè)務(wù)邏輯服務(wù)的開(kāi)發(fā)。
IceBox的基本開(kāi)發(fā)步驟:
1。服務(wù)類從IceBox::Service派生
2。實(shí)現(xiàn)服務(wù)啟動(dòng)接口:start接口
3。實(shí)現(xiàn)服務(wù)關(guān)閉接口:stop接口
4。當(dāng)IceBox加載服務(wù)完成時(shí),start接口被調(diào)用,start接口一般包含服務(wù)初始化的內(nèi)容,例如申請(qǐng)資源,創(chuàng)建適配器和servants。Stop正好和start相反,如果將start理解為服務(wù)的構(gòu)造函數(shù),則stop就是析構(gòu)函數(shù)
開(kāi)發(fā)實(shí)例:已知A點(diǎn)的坐標(biāo)(x,y),和點(diǎn)集合S,求出S中與A距離最近的點(diǎn),例子沒(méi)啥難度,代碼就不貼了,附近有詳細(xì)的代碼及必要的注釋,想運(yùn)行實(shí)例參考README文件,由于配置文件比較多,做一些說(shuō)明,配置文件弄明白了,其它的都好理解了。
1。Config.client,客戶端配置文件,主要用來(lái)定位服務(wù),主要包含服務(wù)的IP,端口,協(xié)議,服務(wù)的Identity
2。Config.service,服務(wù)的配置文件,主要包含服務(wù)的IP(有可能多網(wǎng)卡),端口,協(xié)議,和config.client對(duì)應(yīng)
3。Config.Icebox,主要包含需要加載的服務(wù)的名字以及服務(wù)的創(chuàng)建方式,同時(shí),可以指定服務(wù)的配置文件,即config.service;此外還包含,監(jiān)聽(tīng)iceboxadmin管理工具的連接信息
4。Config.admin,iceboxadmin管理工具的配置文件,主要包含連接到icebox的連接信息
5。Config.client和config.service中SSL配置,需要配置有關(guān)加密的文件路徑,ice的demo中不用配置該路徑,是因?yàn)橐呀?jīng)用相對(duì)路徑的方式默認(rèn)提供了
6。這么多的配置文件,不是必須的,只是為了方便組織,文件名是可以變化的,愿意的話,可以都寫到一個(gè)配置文件
最后有兩點(diǎn)需要特別說(shuō)明,一是在Ice的安裝目錄的bin目錄下,有兩個(gè)版本的icebox,release版icebox.exe和debug版iceboxd.exe,開(kāi)發(fā)的服務(wù)必須和icebox的版本保持一致,否則icebox無(wú)法啟動(dòng)。二是由于IceBox服務(wù)是以DLL開(kāi)發(fā)的,如果你用的debug版iceboxd.exe,那么在config.icebox的配置文件中,你傳遞的DLL的名字,他會(huì)自動(dòng)追加上一個(gè)d,比如下面的配置項(xiàng):IceBox.Service.Location=LocationService:create --Ice.Config=config.service,iceboxd.exe會(huì)查找LocationServiced.dll,然后調(diào)用該DLL中導(dǎo)出的create函數(shù)創(chuàng)建IceBox服務(wù),該服務(wù)的配置文件為config.service www.shnenglu.com/Files/true/IceBoxApp.zip