分布式CORBA通訊技術(shù)在冶金自動(dòng)化中的應(yīng)用_第1頁
分布式CORBA通訊技術(shù)在冶金自動(dòng)化中的應(yīng)用_第2頁
分布式CORBA通訊技術(shù)在冶金自動(dòng)化中的應(yīng)用_第3頁
分布式CORBA通訊技術(shù)在冶金自動(dòng)化中的應(yīng)用_第4頁
分布式CORBA通訊技術(shù)在冶金自動(dòng)化中的應(yīng)用_第5頁
全文預(yù)覽已結(jié)束

下載本文檔

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

文檔簡(jiǎn)介

1、分布式CORBA通訊技術(shù)在冶金自動(dòng)化中的應(yīng)用    關(guān)鍵詞:CORBA;客戶機(jī)/服務(wù)器;分布式;冶金自動(dòng)化 1、什么是CORBA CORBA(Common Object Request Broker Architecture,公共對(duì)象請(qǐng)求代理體系結(jié)構(gòu),通用對(duì)象請(qǐng)求代理體系結(jié)構(gòu))是由OMG(對(duì)象管理組織,Object Management Group)組織制訂的一種標(biāo)準(zhǔn)的面向?qū)ο髴?yīng)用程序體系規(guī)范?;蛘哒f CORBA體系結(jié)構(gòu)是對(duì)象管理組織(OMG)為解決分布式處理環(huán)境(DCE)中,硬件和軟件系統(tǒng)的互連而提出的一種解決方案,其核心是一套標(biāo)準(zhǔn)的語言、接口和協(xié)議,

2、以支持異構(gòu)分布應(yīng)用程序間的互操作性及獨(dú)立于平臺(tái)和編程語言的對(duì)象重用;OMG組織是一個(gè)國(guó)際性的非盈利組織,其職責(zé)是為應(yīng)用開發(fā)提供一個(gè)公共框架,制訂工業(yè)指南和對(duì)象管理規(guī)范,加快對(duì)象技術(shù)的發(fā)展。 2、CORBA特點(diǎn) CORBA定義了一種面向?qū)ο蟮能浖?gòu)件構(gòu)造方法,使不同的應(yīng)用可以共享由此構(gòu)造出來的軟件構(gòu)件;每個(gè)對(duì)象都將其內(nèi)部操作細(xì)節(jié)封裝起來,同時(shí)又向外界提供了精確定義的接口,從而降低了應(yīng)用系統(tǒng)的復(fù)雜性,也降低了軟件開發(fā)費(fèi)用;CORBA的平臺(tái)無關(guān)性實(shí)現(xiàn)了對(duì)象的跨平臺(tái)引用,開發(fā)人員可以在更大的范圍內(nèi)選擇最實(shí)用的對(duì)象加入到自己的應(yīng)用系統(tǒng)之中;CORBA的語言無關(guān)性使開發(fā)人員可以在更大的范圍內(nèi)相互利用別人的

3、編程技能和成果, 是實(shí)現(xiàn)軟件復(fù)用的實(shí)用化工具; 利用CORBA系統(tǒng)進(jìn)行分布對(duì)象應(yīng)用的開發(fā)具有下面三個(gè)特點(diǎn): 開發(fā)代價(jià)小、效率高。系統(tǒng)開發(fā)者只需要編寫描述服務(wù)對(duì)象接口的IDL語言文件并安裝描述文件,實(shí)現(xiàn)服務(wù)對(duì)象的功能即完成了全部的任務(wù)。其它的相關(guān)代碼或者是由IDL編譯器自動(dòng)創(chuàng)建,或者是由ORB 類庫提供,應(yīng)用程序員并不需要編寫例如網(wǎng)絡(luò)通信、數(shù)據(jù)編碼/解碼、名址映射和安全管理的程序代碼,從而可以把工作重點(diǎn)放到服務(wù)對(duì)象實(shí)現(xiàn)的過程中去。 通過CORBA系統(tǒng)的支持,一個(gè)服務(wù)對(duì)象可以透明地被分布在本地和網(wǎng)絡(luò)上的客戶所調(diào)用,擴(kuò)大了服務(wù)對(duì)象的使用范圍,為分布的客戶所共享。 CORBA系統(tǒng)作為“軟件總線”,可以

4、為服務(wù)對(duì)象提供“ 即插即用”的功能,而且當(dāng)對(duì)象實(shí)現(xiàn)改進(jìn)或升級(jí)時(shí),只要接口保持不變,客戶代碼無需作任何改動(dòng)。 3、CORBA原理 CORBA體系結(jié)構(gòu)的主要目的是定義一個(gè)描述客戶機(jī)如何能向遠(yuǎn)程的對(duì)象實(shí)現(xiàn)發(fā)送請(qǐng)求的框架,并潛在地從對(duì)象處得到回應(yīng)。對(duì)象接口用與編程語言無關(guān)的接口定義語言描述?;旧嫌袃煞N不同的方式來讓客戶機(jī)和對(duì)象實(shí)現(xiàn)發(fā)送和接收請(qǐng)求:靜態(tài)方法和動(dòng)態(tài)方法。靜態(tài)方法要求所有的IDL接口在編譯時(shí)已知,這樣IDL編譯器就能生成樁和框架代碼,這些都必須鏈接到實(shí)現(xiàn)。動(dòng)態(tài)方法使用戶在編譯時(shí)不用了解不同的IDL接口就能實(shí)現(xiàn)用程序來處理任何類型的請(qǐng)求。處理請(qǐng)求的動(dòng)態(tài)方式要求在客戶端使用動(dòng)態(tài)激發(fā)接口( Dy

5、namic Invocation Interface,DII)以及在服務(wù)器端使用動(dòng)態(tài)框架接口(Dynamic Skeleton Interface,DSI)。DII和DSI通常用來構(gòu)建如橋接器等一般的系統(tǒng)級(jí)組件。 對(duì)于正常的應(yīng)用程序,靜態(tài)樁和框架的使用更加普遍。靜態(tài)方法的好處是使用戶能很好 地使用CORBA對(duì)象,就好像它們是編程語言中的普通元素一樣。在客戶端,這通過使用代理對(duì)象來完成。代理是遠(yuǎn)程目標(biāo)對(duì)象的本地代表。代理包含足夠的信息來向遠(yuǎn)程目標(biāo)對(duì)象發(fā)送請(qǐng)求,封裝網(wǎng)絡(luò)地址、端口號(hào)等細(xì)節(jié)。代理對(duì)象通過使用客戶機(jī)編程語言的標(biāo)準(zhǔn)類型,提供了以類型安全的方式來訪問目標(biāo)對(duì)象的方法。如果客戶機(jī)想使用實(shí)現(xiàn)了S

6、tock IDL接口的對(duì)象,樁代碼就會(huì)向它提供等價(jià)的用特定編程語言編寫的Stock接口,例如C 的Stock類。如果客戶機(jī)想向遠(yuǎn)程Stock對(duì)象實(shí)現(xiàn)發(fā)送消息,它只需簡(jiǎn)單地激發(fā)本地代理的一個(gè)方法。樁代碼,即生成的代理實(shí)現(xiàn),負(fù)責(zé)打包(marshal)請(qǐng)求的參數(shù),這樣客戶機(jī)的ORB運(yùn)行時(shí)模塊就能向目標(biāo)服務(wù)器發(fā)送消息。服務(wù)器的ORB運(yùn)行時(shí)模塊讀取從網(wǎng)絡(luò)傳來的消息,并把消息傳給生成的框架代碼,使得框架代碼解包請(qǐng)求的參數(shù),這樣它就能把這些參數(shù)傳遞到目標(biāo)對(duì)象的實(shí)現(xiàn)。生成的框架把請(qǐng)求作為服務(wù)器端的正常方法調(diào)用來傳遞,使得客戶機(jī)和服務(wù)器都像對(duì)待普通的編程語言對(duì)象一樣來對(duì)待CORBA對(duì)象。請(qǐng)求的回答能以同樣的方式

7、發(fā)送回客戶機(jī)。因?yàn)殪o態(tài)接口比動(dòng)態(tài)接口使用得更普遍,這里著重講述靜態(tài)接口。圖2-1總結(jié)了使用靜態(tài)接口的CORBA遠(yuǎn)程激發(fā)的原理。請(qǐng)求的CORBA模型假定每個(gè)請(qǐng)求都有一個(gè)目標(biāo)、一個(gè)操作和一系列參數(shù)。目標(biāo)標(biāo)識(shí)目標(biāo)對(duì)象,操作描述所激發(fā)操作的名稱,而參數(shù)則是需要傳遞的數(shù)據(jù)。一個(gè)請(qǐng)求必須提供一種激發(fā)功能。激發(fā)功能可以有不同的語義,例如阻塞和非阻塞的調(diào)用,或是單向的語義。 3.1基于C 的CORBA通訊架構(gòu) 如圖2為基于C 的CORBA通訊示意圖,其中最底層為CORBA庫支持,中間為C 代碼,最頂層為IDL接口文件。使用IDL編譯工具生成IDLC(客戶端)代碼和IDLS(服務(wù)端)代碼。再使用編譯工具將生成的

8、代碼分別與服務(wù)器、客戶端程序一同編譯成CORBA應(yīng)用程序。 4、CORBA通訊應(yīng)用舉例 某鋼廠過程控制系統(tǒng)由核心程序和代理程序組成;其中代理程序負(fù)責(zé)調(diào)用核心程序或被其它代理程序調(diào)用;核心程序負(fù)責(zé)業(yè)務(wù)邏輯模型處理;        CORBA通信應(yīng)用創(chuàng)建步驟如下: 4.1、首先定義接口的IDL文件。 假設(shè)代理A的 IDL接口如下: interface A_IDL oneway void OnXXX 1(in OctetSequence seq); oneway void OnXXX 2(in OctetSequence

9、 seq); oneway void OnXXX 3(in OctetSequence seq); oneway void OnXXX 4(in OctetSequence seq); oneway void OnXXX 5(in OctetSequence seq); ; 表示A中OnXXX1, OnXXX2, OnXXX3, OnXXX4, OnXXX5個(gè)接口 oneway異步傳輸,顧名思義,oneway就是"單向",即客戶機(jī)發(fā)出它們的激發(fā),然后繼續(xù)處理,而用不著在發(fā)出一請(qǐng)求后阻塞,直到結(jié)果返回,當(dāng)服務(wù)器完成對(duì)該請(qǐng)求的處理后,它可以通過向客戶機(jī)發(fā)回一相應(yīng)的單向激發(fā)把結(jié)果

10、返回,也可以不返回結(jié)果。 4.2、編譯IDL文件。 4.3、編寫服務(wù)器端程序。 /file:A.cpp #include"A.hpp"/always include own header first void A:f() /do something 4.4、編寫客戶端程序。 #include “TelegramPtr.hpp” #include “ExampleIDLC.h” #include “MyStruct.hpp” #include "Dbg.hpp" void callServer() Dbg d("callServer")

11、; TelegramPtr telegram; / the “telegram” telegram->x=3;/assign fields through operator-> telegram->y = 4; / get a CORBA object CORBAObjectWrapperserver(“server”,“A1”); / call f on the object TRY_INVOKE_DBG(server->f(telegram), d); / passing telegram as OctetSequence by implicit conversion 調(diào)用方式: TRY_INVOKE_DBG_PROC(m_A,OnXXX (seq),d); 其中m_A為A類的對(duì)象,或稱是服務(wù)器,OnXXX為A類的成員函數(shù)。 4.5、某廠分布式CORBA通訊結(jié)構(gòu) 如下圖為通訊模塊關(guān)系圖,其中,白底黑框?yàn)榉枪δ苣K、白底粗框?yàn)榇砟K、黑底為核心模塊。所有帶箭頭直線間通訊為CORBA通訊。 該系統(tǒng)先進(jìn)可靠,模塊劃分清晰分明,模塊之間耦合較小,且該系統(tǒng)可靈活配置,維護(hù)、擴(kuò)充方便,可以快速運(yùn)用在治金自動(dòng)化及其它系統(tǒng)中。對(duì)其它同類系統(tǒng)有借鑒作用。 參考

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(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)論