ICE網(wǎng)絡(luò)編程利用ICE通信中間件構(gòu)建分布式應(yīng)用程序開發(fā)框架_第1頁(yè)
ICE網(wǎng)絡(luò)編程利用ICE通信中間件構(gòu)建分布式應(yīng)用程序開發(fā)框架_第2頁(yè)
ICE網(wǎng)絡(luò)編程利用ICE通信中間件構(gòu)建分布式應(yīng)用程序開發(fā)框架_第3頁(yè)
ICE網(wǎng)絡(luò)編程利用ICE通信中間件構(gòu)建分布式應(yīng)用程序開發(fā)框架_第4頁(yè)
ICE網(wǎng)絡(luò)編程利用ICE通信中間件構(gòu)建分布式應(yīng)用程序開發(fā)框架_第5頁(yè)
已閱讀5頁(yè),還剩11頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

ICE網(wǎng)絡(luò)編程利用ICE通信中間件構(gòu)建分布式應(yīng)用程序開發(fā)框架NISEC講座系列之---演講人:牽牛散步時(shí)間地點(diǎn):JCB-410ICE網(wǎng)絡(luò)編程---利用ICE通信中間件構(gòu)建網(wǎng)絡(luò)應(yīng)用程序開發(fā)框架一.ICE的有關(guān)概念1.什么是ICE?ICE,夏天我最容易想的是冰激淋:--)在這里我們要講的可不是冰激淋,而是一種用于分布式程序設(shè)計(jì)的網(wǎng)絡(luò)通信中間件ICE(InternateCommunicationsEngine).ICE的設(shè)計(jì)目標(biāo)主要是以下幾點(diǎn):?提供適用于異種環(huán)境的面向?qū)ο笾虚g件平臺(tái)。在用ICE進(jìn)行分布式程序設(shè)計(jì)時(shí),你可以不必考慮客戶端或者效勞器端程序所運(yùn)行的平臺(tái)(WINDOWS或者是LINUX,UNIX),也可以不用關(guān)心程序使用的開發(fā)語(yǔ)言(不過(guò)有一點(diǎn)需要注意,目前,利用PHP,RUBY等WEB腳本語(yǔ)言只能編寫ICE程序的客戶端,而效勞器端一般利用C++或者JAVA來(lái)實(shí)現(xiàn)).?提供一組完整的特性,支持廣泛的領(lǐng)域中的實(shí)際的分布式應(yīng)用的開發(fā)。?防止不必要的復(fù)雜性,使平臺(tái)更易于學(xué)習(xí)和使用。ICE的學(xué)習(xí)比較曲線比較短,很容易上手.只要你熟悉某一種語(yǔ)言(例如C++或JAVA),了解了ICE編程范式之后,很快就能開發(fā)出實(shí)際的應(yīng)用.?提供一種在網(wǎng)絡(luò)帶寬、內(nèi)存使用和CPU開銷方面都很高效的實(shí)現(xiàn)。?提供一種具有內(nèi)建平安性的實(shí)現(xiàn),使它適用于不平安的公共網(wǎng)絡(luò)。支持SSL協(xié)議(要使用此協(xié)議必須裝OPENSSL開發(fā)包)ICE網(wǎng)絡(luò)編程---利用ICE通信中間件構(gòu)建網(wǎng)絡(luò)應(yīng)用程序開發(fā)框架2.中間件技術(shù)與物流公司中間件是在計(jì)算機(jī)硬件和操作系統(tǒng)之上,支持應(yīng)用軟件開發(fā)和運(yùn)行的系統(tǒng)軟件,它能夠使應(yīng)用軟件相對(duì)獨(dú)立于計(jì)算機(jī)硬件和操作系統(tǒng)平臺(tái).中間件具有標(biāo)準(zhǔn)的程序接口和協(xié)議,可以實(shí)現(xiàn)不同硬件和操作系統(tǒng)平臺(tái)上的數(shù)據(jù)共享和應(yīng)用互操作。在具體實(shí)現(xiàn)上,中間件是一個(gè)用API定義的分布式軟件管理框架,具有強(qiáng)大的通信能力和良好的可擴(kuò)展性。從開發(fā)者的角度來(lái)看,中間件技術(shù)為其提供了一個(gè)開發(fā)分布式程序的框架即一套API,使其不需要進(jìn)行枯燥乏味,而且需要花費(fèi)大量時(shí)間和精力的根底設(shè)施的開發(fā).使開發(fā)者能把大量的精力放在業(yè)務(wù)程序的開發(fā)上,提高應(yīng)用程序的質(zhì)量和開發(fā)效率.這就好比一個(gè)生產(chǎn)的廠商,它的客戶可能分布在世界的很多地方(這里假設(shè)這個(gè)廠商只在一個(gè)地方生產(chǎn)),當(dāng)生產(chǎn)出來(lái)后,廠商有兩個(gè)方案,一是自己建立物流部門去配送.二是把這些配送業(yè)務(wù)交給專業(yè)的物流公司去處理.顯然第一種方案是比較適宜的,因?yàn)樵搹S商的專長(zhǎng)是設(shè)計(jì)制造,而不是進(jìn)行物流配送.對(duì)該廠商來(lái)說(shuō),他只需要按照物流公司的流程,把貨交給物流公司,剩下的事情就由物流公來(lái)辦,至于公司的產(chǎn)品是用飛機(jī)還是輪船運(yùn)送的,廠商可以完全不關(guān)心,它只需要知道產(chǎn)品是否平安,完整的到達(dá)目的地了.對(duì)于這家廠商來(lái)說(shuō),此物流公司就是一個(gè)〞中間件〞.它們就可以把更多的精力放在如何設(shè)計(jì)和生產(chǎn)更好的產(chǎn)品上.ICE網(wǎng)絡(luò)編程---利用ICE通信中間件構(gòu)建網(wǎng)絡(luò)應(yīng)用程序開發(fā)框架ICE網(wǎng)絡(luò)編程---利用ICE通信中間件構(gòu)建網(wǎng)絡(luò)應(yīng)用程序開發(fā)框架3.ICE對(duì)于發(fā)者來(lái)說(shuō)有何優(yōu)點(diǎn)??支持同步和異步的消息傳遞?支持多個(gè)接口?機(jī)器無(wú)關(guān)性?語(yǔ)言無(wú)關(guān)性?實(shí)現(xiàn)無(wú)關(guān)性?操作系統(tǒng)無(wú)關(guān)性?多線程支持?傳輸機(jī)制無(wú)關(guān)性?平安性?開放源代碼ICE網(wǎng)絡(luò)編程---利用ICE通信中間件構(gòu)建網(wǎng)絡(luò)應(yīng)用程序開發(fā)框架4.ICE的相關(guān)術(shù)語(yǔ)?Slice〔Ice標(biāo)準(zhǔn)語(yǔ)言〕每個(gè)Ice對(duì)象都有一個(gè)接口,該接口具有一些操作。接口、操作,還有在客戶及效勞器間交換的數(shù)據(jù)的類型,都是用Slice語(yǔ)言定義的。Slice允許你以一種獨(dú)立于特定編程語(yǔ)言〔比方C++或Java〕的方式定義客戶-效勞器的合約。Slice定義由一個(gè)編譯器編譯成特定編程語(yǔ)言的API,也就是說(shuō),與你所定義的接口和類型對(duì)應(yīng)的那一局部API,會(huì)由生成的代碼組成。?通信器(Ice::Communicator)ICE在進(jìn)行通信時(shí),效勞器和客戶端都必須建立一個(gè)通信器,通信器為該通信進(jìn)程分配和管理資源,可以把通信器看做通信雙方的一個(gè)專用線路.?對(duì)象適配器(Ice::ObjectAdapter)對(duì)象適配器實(shí)現(xiàn)了一個(gè)向上調(diào)用接口,把Iceruntime與效勞器中的應(yīng)用代碼連接在一起.它提供一個(gè)或更多傳輸端點(diǎn)??蛻敉ㄟ^(guò)這些端點(diǎn)訪問(wèn)適配器所提供的Ice對(duì)象,即通過(guò)適配器訪問(wèn)servant.一個(gè)對(duì)象適配器與一個(gè)端口綁定.如果效勞器端同時(shí)監(jiān)聽(tīng)兩個(gè)端口的話必須建立兩個(gè)適配器.ICE網(wǎng)絡(luò)編程---利用ICE通信中間件構(gòu)建網(wǎng)絡(luò)應(yīng)用程序開發(fā)框架?用戶代理客戶端通過(guò)用戶代理來(lái)調(diào)用效勞器端提供的servant.可以把用戶代理想象本錢地C++程序里的類指針,通過(guò)類指針來(lái)對(duì)實(shí)例進(jìn)行操作.?Servant即ICE效勞器端提供給客戶端的效勞.也是我們建立最關(guān)心的部份.它映射在效勞器端就是我們通過(guò)SLICE定義編譯生成后的接口類.一個(gè)接口類為一個(gè)效勞.Servant必須和某個(gè)適配器綁定.ICE網(wǎng)絡(luò)編程---利用ICE通信中間件構(gòu)建網(wǎng)絡(luò)應(yīng)用程序開發(fā)框架二.ICE的安裝1.ICE在WINDOWS下的安裝(FORVC++6.0WITHSP2)?下載windows平臺(tái)下的安裝軟件包,ICE支持多種開發(fā)程序,在這里我們安裝Ice-3.0.0-VC60.msi.軟件包可以到官方網(wǎng)站去下載?一路NEXT完成安裝.然后需要配置ICE的環(huán)境變量.在系統(tǒng)環(huán)境變量中配置以下變量: ICE_HOME=<Iceinstallationrootdirectory> PATH=%ICE_HOME%\bin;%PATH%配置好后翻開命令控制臺(tái),輸入命令〞slice2cpp〞如果能看到以下內(nèi)容那么說(shuō)明ICE安裝成功.ICE網(wǎng)絡(luò)編程---利用ICE通信中間件構(gòu)建網(wǎng)絡(luò)應(yīng)用程序開發(fā)框架2.配置ICE開發(fā)環(huán)境?配置IDE的開發(fā)環(huán)境,在VC++軟件中做以下配置:-Tools->Options->Directories-選擇“Includefiles〞標(biāo)簽欄-增加<Iceinstallationrootdirectory>\include和<Iceinstallationroot directory>\include\stlport到列表.然后移動(dòng)“\include\stlport〞目錄到列表的頂部.-選擇“Libraryfiles〞標(biāo)簽欄-增加<Iceinstallationrootdirectory>\lib到列表.-選擇“Executablefiles〞標(biāo)簽欄-增加<Iceinstallationrootdirectory>\bin到列表.?配置具體開發(fā)工程(以下為配置DEBUG版本,RELEASE版本類似),在VC++軟件中做以下配置:-ProjectSettings>>C/C++(Tab)>>Category:CodeGeneration>>Userrun-timeddlibrary:DebugMultithreadedDLL(ICE是多線程的)

-ProjectSettings>>C/C++(Tab)>>Category:Preprocessor>>Additionalincludedirectories:(在此項(xiàng)中填入一個(gè)點(diǎn)".",表示根目錄)

-ProjectSettings>>C/C++(Tab)>>Category:C++Language>>勾選"EnableRun-TimeTypeInformation(RTTI)"項(xiàng)

-ProjectSettings>>Link(Tab)>>Category:General>>在"Object/librarymodules:"框中的未首參加兩個(gè)包"iced.lib"和"iceutild.lib"ICE網(wǎng)絡(luò)編程---利用ICE通信中間件構(gòu)建網(wǎng)絡(luò)應(yīng)用程序開發(fā)框架2.ICE在LINUX(RedHat9)下的安裝(FORC++)?安裝要求:-系統(tǒng)中必須有GCC3.0以上版本(我們通過(guò)源碼安裝)-需要至少三個(gè)軟件包:bzip2-1.0.3.tar.gz,,Ice-3.0.0.tar.gz.如果需要ICE的其它效勞的話應(yīng)安裝相應(yīng)軟件包.在這里我們假設(shè)這三個(gè)軟件包都在系統(tǒng)的/usr/drc目錄下.?安裝bzip2:#>make#>cpbzlib.h/usr/include?安裝bzip2-devel:?安裝ICE:#>make–i#>makeinstall–iICE網(wǎng)絡(luò)編程---利用ICE通信中間件構(gòu)建網(wǎng)絡(luò)應(yīng)用程序開發(fā)框架?設(shè)置環(huán)境變量:#>exportPATH=/usr/drc/Ice-3.0.0/bin:$PATH?至此ICE安裝完成,在SHELL里輸入命令〞slice2cpp〞如能看到以下提示,那么說(shuō)明ICE安裝成功.ICE網(wǎng)絡(luò)編程---利用ICE通信中間件構(gòu)建網(wǎng)絡(luò)應(yīng)用程序開發(fā)框架下面,我們用一個(gè)類似helloworld的程序來(lái)給大家演示一下,一個(gè)ICE通信程序是如何編寫的.此程序包括兩端,一個(gè)是客戶端程序client,一個(gè)是效勞端程序server.此程序的功能是:server偵聽(tīng)一個(gè)端口60018,client去連接server,連接上后,給server發(fā)送一個(gè)字符串,server收到字符串后在其屏幕上打印此字符串,并返回一個(gè)表示接收成功的串給client,client接收到此串后打印在其屏幕上.1.首先,我們要定義通信雙方的通信接口,既然是接口,那么接口信息是通信雙方共享的信息.定義接口通過(guò)編寫ICE的Slice文件來(lái)完成.以下是我們此程序的Slice文件內(nèi)容://3.0以后的版本必須把接口定義在模塊(module),模塊映射為C++里的名字空間moduleNisecICE{ //定義ICE接口,映射為C++里同名的一個(gè)類〔純虛類,因此不能實(shí)例化,必須繼承并重載類中的相應(yīng)方法〕 interfaceHelloICE { //定義接口里的操作,映射為C++里同名的一個(gè)純虛擬方法 stringSayHello(stringcontent); };};三.ICE的編程范型ICE網(wǎng)絡(luò)編程---利用ICE通信中間件構(gòu)建網(wǎng)絡(luò)應(yīng)用程序開發(fā)框架2.編譯Slice文件,生成相應(yīng)的.CPP和.H文件:利用ICE提供的命令〞Slice2cpp〞對(duì)剛剛定義的.ice文件進(jìn)行編譯,會(huì)生成一個(gè).cpp文件和一個(gè)相應(yīng)的.h文件.這兩個(gè)文件里就是實(shí)現(xiàn)我們接口的相關(guān)骨架類.這兩個(gè)文件通信雙方都需要用到.3.編寫效勞器端程序,效勞器端的程序,一般都是按以下步驟來(lái)編寫的:-繼承相關(guān)的接口類,并實(shí)現(xiàn)其純虛函數(shù)建立通信器,并初始化(包括設(shè)置通信協(xié)議,監(jiān)聽(tīng)端口,線程池大小等)創(chuàng)立適配器創(chuàng)立代理接口并設(shè)置代理標(biāo)識(shí)增加代理到適配器激活適配器通信器啟動(dòng)并阻塞,等待處理客戶端的請(qǐng)求關(guān)閉通信器,釋放相關(guān)資源ICE網(wǎng)絡(luò)編程---利用ICE通信中間件構(gòu)建網(wǎng)絡(luò)應(yīng)用程序開發(fā)框架4.編寫客戶端程序,一般可以按照以下步驟:-建立通信器,并初始化(包括設(shè)置server的IP,協(xié)議,端口,連接超時(shí)時(shí)間,目標(biāo)代理名等)-建立代理對(duì)象-尋找server代理-如代理存在,即可通過(guò)代理對(duì)象調(diào)用server上此代理類型所有的操作.-操作完畢,銷毀通信器,釋放相關(guān)資源5.用ICE進(jìn)行編程時(shí)應(yīng)注意的問(wèn)題:-client連接server時(shí)一定要注意設(shè)置超時(shí)時(shí)間,不然很容易導(dǎo)致網(wǎng)絡(luò)阻塞-在涉及到一些傳遞通信所需要的參數(shù),如端口,IP,協(xié)議等的時(shí)候,這些參數(shù)應(yīng)該從配置文件里讀取,或者通過(guò)參數(shù)傳遞,不要進(jìn)行硬編碼.還有在C++里字符變量的類型應(yīng)該用std::string,而不要用C語(yǔ)言風(fēng)格的char[].以防止內(nèi)存泄漏和指針越界.-在利用多線程進(jìn)行異步程序開發(fā)時(shí),要注意給共享資源加鎖,以免導(dǎo)致數(shù)據(jù)被破壞.-我們利用C++進(jìn)行ICE程序開發(fā),因此在編寫ICE的程序時(shí),例如客戶端建立連接ICE網(wǎng)絡(luò)編程---利用ICE通信中間件構(gòu)建網(wǎng)絡(luò)應(yīng)用程序開發(fā)框架-我們用C++進(jìn)行ICE程序開發(fā),因此在編寫ICE的程序時(shí),例如客戶端建立連接客戶端時(shí),應(yīng)該寫成一個(gè)類,這類至少要包括三個(gè)方法,初始化通信器,調(diào)用相關(guān)操作,銷毀通信器.這樣當(dāng)工程組成員需要與效勞器進(jìn)行通信時(shí),只需要實(shí)例化此類即可.提高了效率.而不用再自己去寫ICE通信客戶端.*代碼見(jiàn)源程序PPT〔全名:PowerPoint〕是美國(guó)微軟公司出品的辦公軟件系列重要組件之一〔另外還有Excel、Word等〕;最常用的就是用來(lái)制作幻燈片。MicrosoftOfficePowerPoint是一種演示文稿圖形程序,該軟件是功能強(qiáng)大的演示文稿制作軟件;可協(xié)助用戶單獨(dú)或聯(lián)機(jī)創(chuàng)立永恒的視覺(jué)效果;它增強(qiáng)了多媒體支持功能,利用該軟件制作的文稿,可以通過(guò)不同的方式播放,也可將演示文稿打印成一頁(yè)一頁(yè)的幻燈片,使用幻燈片機(jī)或投影儀播放,可以將演示文稿保存到光盤中以進(jìn)行分發(fā),并可在幻燈片放映過(guò)程中播放音頻流或視工程列表;新增工程;修改工程;刪除工程;工程授權(quán);工程任務(wù)統(tǒng)計(jì);工程資源管理;工程進(jìn)度管理;工程任務(wù)包管理;工程文檔管理;工程費(fèi)用管理;工程歸檔;工程查詢;當(dāng)前任務(wù);工程統(tǒng)計(jì)分析。4.庫(kù)存管理——掌握庫(kù)存的動(dòng)態(tài)流動(dòng)狀況,減少庫(kù)存資金的占用,加強(qiáng)資金的合理使用。選擇“庫(kù)存管理〞模塊后,在主菜單下將出現(xiàn)"庫(kù)存資料維護(hù)"、"入庫(kù)"、"出庫(kù)"、"庫(kù)存查詢"、"倉(cāng)庫(kù)資料維護(hù)"、"業(yè)務(wù)類型維護(hù)"、"貨物單位資料維護(hù)"幾個(gè)子菜單。左方出現(xiàn)“存貨管理〞模塊的樹狀結(jié)構(gòu)的庫(kù)存分類信息。右邊會(huì)出現(xiàn)庫(kù)存列表,當(dāng)沒(méi)有選擇庫(kù)存分類的時(shí)候,庫(kù)存資料列表將顯示所有庫(kù)存工程,按錄入時(shí)間排序;在選擇某個(gè)分類的時(shí)候,將顯示該分類下的庫(kù)存列表,庫(kù)存列表會(huì)把當(dāng)前的庫(kù)存數(shù)量顯示出來(lái),點(diǎn)擊某庫(kù)存的鏈接將顯示庫(kù)存工程的詳細(xì)信息。此模塊包含以下主要功能:新增分類;修改分類;刪除分類;新增存貨工程;修改存貨資料;刪除存貨資料;庫(kù)存查詢;入庫(kù)登記;出庫(kù)登記;查詢存貨收發(fā)記錄;倉(cāng)庫(kù)資料維護(hù);業(yè)務(wù)類型資料維護(hù);貨物單位資料維護(hù)。=========================================================================================================================================================原文出自【比特網(wǎng)】,轉(zhuǎn)載請(qǐng)保存原文鏈接:頻流。對(duì)用戶界面進(jìn)行了改進(jìn)并增強(qiáng)了對(duì)智能標(biāo)記的支持,可以更加便捷地查看和創(chuàng)立高品質(zhì)的演示文稿一套完整的PPT文件一般包含:片頭動(dòng)畫、PPT封面、前言、目錄、過(guò)渡頁(yè)、圖表頁(yè)、圖片頁(yè)、文字頁(yè)、封底、片尾動(dòng)畫等;所采用的素材有:文字、圖片、圖表、動(dòng)畫、聲音、影片等;國(guó)際領(lǐng)先的PPT設(shè)計(jì)公司有:themegallery、poweredtemplates、presentationload等;近年來(lái),中國(guó)的PPT應(yīng)用水平逐步提高,應(yīng)用領(lǐng)域越來(lái)越廣;PPT正成為人們工作生活的重要組成局部,在工作匯報(bào)、企業(yè)宣傳、產(chǎn)品推介、婚禮慶典、工程競(jìng)標(biāo)、管理咨詢等領(lǐng)域。敘利亞內(nèi)戰(zhàn)局勢(shì)急劇升級(jí),國(guó)營(yíng)電視臺(tái)證實(shí),國(guó)防部長(zhǎng)拉杰哈今天在首都的一次自殺式襲擊中被炸死,是敘利亞國(guó)內(nèi)沖突爆發(fā)以來(lái),政府軍損失的最高級(jí)軍方官員,另外,內(nèi)政部長(zhǎng)、情報(bào)首長(zhǎng)也被炸傷。襲擊者是總統(tǒng)巴沙爾的一名近身侍衛(wèi)。敘利亞自由軍和伊斯蘭旅兩個(gè)反政府組織都宣稱對(duì)襲擊負(fù)責(zé),但否認(rèn)事件是國(guó)營(yíng)電視臺(tái)所說(shuō)的自殺式襲擊,而是將fgdfgdfg

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論