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

下載本文檔

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

文檔簡介

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

-ProjectSettings>>C/C++(Tab)>>Category:Preprocessor>>Additionalincludedirectories:(在此項中填入一個點".",表示根目錄)

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

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

溫馨提示

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

評論

0/150

提交評論