余華云 (長江大學(xué)計(jì)算機(jī)科學(xué)學(xué)院,湖北荊州434023)
我國石油行業(yè)信息化起步較早,該行業(yè)的一些專業(yè)處理系統(tǒng)在石油生產(chǎn)中發(fā)揮著很重要的作用。由于這些專業(yè)處理系統(tǒng)在不同時(shí)期開發(fā),所采用的開發(fā)環(huán)境、開發(fā)平臺各不相同,致使各系統(tǒng)之間無法共享信息,使人們在處理不同業(yè)務(wù)時(shí)需進(jìn)入不同的系統(tǒng)。而且對于一些相同數(shù)據(jù),使用者必須在不同的系統(tǒng)中重復(fù)錄入,這給使用者帶來了很大的麻煩。因此,如何在新的生產(chǎn)指揮調(diào)度系統(tǒng)開發(fā)過程中有效方便地利用原有系統(tǒng)成為研究者關(guān)注的重點(diǎn)。為此,筆者討論了石油生產(chǎn)指揮調(diào)度系統(tǒng)中SOA架構(gòu)的設(shè)計(jì)與實(shí)現(xiàn)過程,為解決上述問題提供參考。
為更好地利用原有的一些專業(yè)處理系統(tǒng),該系統(tǒng)整體設(shè)計(jì)采用面向服務(wù)[1](service-oriented architecture,SOA)的體系架構(gòu)。按照 “軟件即服務(wù)、服務(wù)即軟件”的開發(fā)理念構(gòu)建系統(tǒng)。所有服務(wù)之間能以一種通用的方式在企業(yè)總線上進(jìn)行交互。這樣不僅可以使系統(tǒng)具有良好的可擴(kuò)展性,而且可以利用SOA架構(gòu)對其他應(yīng)用系統(tǒng)進(jìn)行升級改造,如對大型企業(yè)的ERP系統(tǒng)、OA系統(tǒng)等進(jìn)行改造、升級。其SOA總體架構(gòu)如圖1所示。
圖1 系統(tǒng)SOA總體架構(gòu)模型
該架構(gòu)的主要特點(diǎn)如下:①該系統(tǒng)內(nèi)的各種數(shù)據(jù)資源都封裝為標(biāo)準(zhǔn)服務(wù),通過企業(yè)服務(wù)總線(ESB)統(tǒng)一注冊管理到該平臺,對服務(wù)進(jìn)行定位、合法性校驗(yàn)、版本控制、監(jiān)控服務(wù)等服務(wù)管理,并通過前臺的個(gè)性化工作平臺服務(wù)調(diào)用,將服務(wù)的結(jié)果展現(xiàn)給用戶。②對其他系統(tǒng),如OA、ERP、HSE等通過適配器與之連接,并進(jìn)行數(shù)據(jù)交互,避免信息的重復(fù)錄入。③系統(tǒng)內(nèi)部各個(gè)層次有一定聯(lián)系,但相互之間保持高度的松散耦合關(guān)系。不同層次可以獨(dú)立進(jìn)行建設(shè)和更新,層次之間支持跨層的調(diào)用方式。任一層次的更新修改基本不影響系統(tǒng)內(nèi)的其他層次,同時(shí)所做的更新工作能快速進(jìn)行重用,以支持其他不同層次對它的使用。當(dāng)系統(tǒng)傳輸數(shù)據(jù)量較大時(shí)能自動(dòng)采用MQ建立專用通道進(jìn)行數(shù)據(jù)傳輸。
該系統(tǒng)SOA基本架構(gòu)主要包括服務(wù)描述、服務(wù)注冊、SOAP協(xié)議 (Simp leObject Access Protocol,簡單對象訪問協(xié)議)和企業(yè)服務(wù)總線。考慮到系統(tǒng)的可移植性、兼容性和可擴(kuò)展性,系統(tǒng)在構(gòu)建SOA架構(gòu)時(shí),采用了J2EE開發(fā)平臺,系統(tǒng)架構(gòu)按照 “數(shù)據(jù)-服務(wù)-應(yīng)用”的邏輯層次來組織,分為用戶體驗(yàn)層、應(yīng)用服務(wù)層和數(shù)據(jù)層。其SOA的具體構(gòu)建如圖2所示。
圖2 基于J2EE的三層SOA基本應(yīng)用架構(gòu)圖
從圖2中可以看出,該系統(tǒng)的核心主要包括企業(yè)服務(wù)總線 (ESB)、SOPA引擎和服務(wù)描述,具體內(nèi)容如下。
1)企業(yè)服務(wù)總線 (ESB) 主要完成元數(shù)據(jù)管理、服務(wù)生命周期管理、消息路由、監(jiān)控服務(wù)以及處理來自不同渠道的業(yè)務(wù)事件等。由于ESB的構(gòu)建直接影響系統(tǒng)的整體性能,因此,在具體實(shí)現(xiàn)中,直接采用了IBM的WebSphere Enterprise Service Bus,以保證系統(tǒng)的穩(wěn)定性和可靠性。
2)服務(wù)描述 采用基于XM L格式標(biāo)準(zhǔn)的WSDL語言,主要包括數(shù)據(jù)類型的定義、消息的傳遞、服務(wù)支持和協(xié)議綁定,其實(shí)現(xiàn)過程比較簡單。
3)SOAP引擎 一般支持RPC和Document 2種調(diào)用和傳輸方式。RPC方式具有速度快、支持工具多的特點(diǎn),但其一般是靜態(tài)Stub,靈活性不足,對于靈活的Input和Output消息格式不能很好地進(jìn)行支持。Document方式非常靈活,可以自定義Soap消息的封裝和解封,支持H ttp、JMS等多種傳輸方式,擴(kuò)展性強(qiáng),但其傳輸速度比RPC方式稍慢。因此,該系統(tǒng)對SOAP引擎采用3個(gè)階段實(shí)現(xiàn)方式:①使用Axis引擎的RPC調(diào)用方式。采用RPC的方式調(diào)用,其開發(fā)速度快,核心架構(gòu)采用靜態(tài)綁定,客戶端Stub可以通過Axis或XFire的工具直接生成;②使用自定義Soap引擎,使用Soap on H ttp方式,即采用Document方式,根據(jù)每個(gè)Service的WSDL接口文檔自定義封裝標(biāo)準(zhǔn)的Soap消息,服務(wù)端自定義基于Servlet的Soap引擎,對Soap消息解封并打包成可理解的POJO對象;③進(jìn)行SOAP引擎的定型。該系統(tǒng)的SOAP引擎在A xis基礎(chǔ)上經(jīng)過改進(jìn)后最后定型,Axis實(shí)質(zhì)上是一個(gè)SOAP引擎,在提供一對一的服務(wù)時(shí)能滿足系統(tǒng)要求,即一個(gè)請求對應(yīng)一個(gè)服務(wù)。如前臺用戶發(fā)送一個(gè)請求,需查看某個(gè)錄井公司的設(shè)備基本信息,在系統(tǒng)后臺,根據(jù)傳遞過來的服務(wù)名,調(diào)用對應(yīng)服務(wù)方法,獲取此信息,然后返回給用戶,一個(gè)服務(wù)即可完成此項(xiàng)工作,并且所有的數(shù)據(jù)都能保持一致狀態(tài)。然而由于系統(tǒng)的復(fù)雜性或需求的多樣性,有時(shí)單個(gè)服務(wù)滿足不了業(yè)務(wù)需求,需要提供一對二,甚至一對多的服務(wù)。如面對不同的鉆探、勘探企業(yè),用戶可能需要錄井公司設(shè)備的基本信息的同時(shí),還需要鉆井、測井的設(shè)備信息或者其他需要的數(shù)據(jù),此時(shí)一個(gè)服務(wù)可能滿足不了要求,需要一個(gè)乃至多個(gè)服務(wù)來同時(shí)為用戶提供服務(wù)。為保證多個(gè)服務(wù)操作后數(shù)據(jù)的一致性,系統(tǒng)在加入一對多服務(wù)的同時(shí),還對其進(jìn)行原子化操作,即將多個(gè)服務(wù)的相關(guān)操作組合為一個(gè)整體的單元,要么都執(zhí)行,要么都不執(zhí)行。事務(wù)完成時(shí),如果執(zhí)行失敗,所有操作回滾,以確保系統(tǒng)的正確性與可靠性。
在系統(tǒng)框架實(shí)現(xiàn)后,整個(gè)系統(tǒng)的開發(fā)過程和執(zhí)行過程都很簡潔,程序員只需關(guān)注用戶的展現(xiàn)層和服務(wù)實(shí)現(xiàn)。系統(tǒng)執(zhí)行過程為:①當(dāng)收到來自用戶層的服務(wù)請求后,先通過SOAP Proxy,打成一個(gè)XM L格式的SOAP包,其中包含了用戶請求的服務(wù)名和參數(shù)等信息,然后向一個(gè)URL地址 (即服務(wù)響應(yīng)地址)發(fā)送,經(jīng)過ESB路由向后臺發(fā)送請求。②后臺服務(wù)接收到請求后,會(huì)根據(jù)定義好的對應(yīng)關(guān)系找到正確的服務(wù),并調(diào)用處理,然后將結(jié)果返回給用戶層。
基于SOA架構(gòu)的石油生產(chǎn)指揮系統(tǒng)是一個(gè)完整的SOA架構(gòu)系統(tǒng),其不僅增加企業(yè)生產(chǎn)指揮調(diào)度與應(yīng)急指揮能力,實(shí)現(xiàn)對作業(yè)現(xiàn)場的遠(yuǎn)程監(jiān)控與技術(shù)指導(dǎo),為管理后移提高了技術(shù)支撐,而且在整合石油行業(yè)的OA系統(tǒng)、ERP系統(tǒng)等具有很強(qiáng)的優(yōu)勢,易于擴(kuò)展,可維護(hù)性好,SOA架構(gòu)還為系統(tǒng)今后升級、擴(kuò)充建立了良好的可擴(kuò)展平臺。
[1]IBM.Patterns:Service-Oriented A rchitecture andW eb Services[EB/QL].http://www.ibm.com/developerw orks,2009-09-23.
[2]Ruslan Bilorusets.W eb Services Reliab le Messaging P rotocol(WS-Reliable Messaging).2005.
[3]劉國強(qiáng).基于SOA技術(shù)的企業(yè)級軟件構(gòu)架方法研究[J].山西建筑,2008,34(2):365~366.