1 引言
隨著軟件開發(fā)方法研究的發(fā)展和分布式技術(shù)應(yīng)用的深人,基于多種開發(fā)平臺和工具的商業(yè)系統(tǒng)得到大量應(yīng)用,使得企業(yè)中的軟件系統(tǒng)變得日益龐大和復(fù)雜。由于傳統(tǒng)的軟件開發(fā)使用的平臺、開發(fā)工具、操作系統(tǒng)在結(jié)構(gòu)上的緊藕合,以致這些位置上分散的獨立系統(tǒng)逐漸形成了所謂的“信息孤島”。為了更好地重用已有模塊、加快軟件開發(fā)速度,使這種重用可以不用考慮各自運行平臺和開發(fā)環(huán)境的差異,并使被重用的模塊可以方便地由舊系統(tǒng)納人新系統(tǒng),一種面向服務(wù)的體系結(jié)構(gòu)SOA ( ServiceOriented Architecture)的軟件設(shè)計方法被提了出來,這種通過對服務(wù)流程化的組織來構(gòu)建分布式系統(tǒng)的方法既是體系結(jié)構(gòu)模型,又是編程模型。
本文討論了如何利用SOA提供的這種較面向?qū)ο蠛突跇?gòu)件更好的軟件復(fù)用方法去構(gòu)建出一個松散藕合的分布式系統(tǒng),使其達(dá)到復(fù)用度高和擴(kuò)充性好的目的。
2 基于SOA的軟件開發(fā)方法
由于側(cè)重方向和觀察角度上的差異.對于SOA的具體定義各有不同。但是從體系結(jié)構(gòu)方面考慮可以這樣給出:soA是一種松散藕合的軟件體系結(jié)構(gòu),在這種體系結(jié)構(gòu)中,由各自獨立可復(fù)用的服務(wù)去構(gòu)成系統(tǒng)功能。這些服務(wù)向外公布有意義明確的接口,軟件的開發(fā)是通過對這些實現(xiàn)透明的接口的調(diào)用來完成”。其體系結(jié)構(gòu)如圖1所示。
圖1 SOA的體系結(jié)構(gòu)
在面向服務(wù)的體系結(jié)構(gòu)中主要有三種角色:
服務(wù)消費者是需要使用服務(wù)的應(yīng)用程序或其它的服務(wù)。通過對注冊中心的服務(wù)進(jìn)行查詢后,根據(jù)接口說明信息并使用某種傳輸協(xié)議與服務(wù)綁定并執(zhí)行服務(wù)功能。
服務(wù)提供者是創(chuàng)建服務(wù)的實體?梢詮姆⻊(wù)消費者處接受請求并可以遠(yuǎn)程執(zhí)行所請求服務(wù)。通過向注冊中心發(fā)布服務(wù)接口信息以供服務(wù)消費者發(fā)現(xiàn)和訪問服務(wù)。
服務(wù)注冊中心處于中心位置提供了展示服務(wù)的功能。服務(wù)消費者通過查詢存儲有服務(wù)信息庫的注冊中心以找到感興趣服務(wù)的接口信息。
在面向服務(wù)的體系結(jié)構(gòu)中的每個實體的角色并非固定,可以同時充當(dāng)以上三種角色中的一個或多個。
在面向服務(wù)的體系結(jié)構(gòu)中主要的操作有:
發(fā)布為了被訪問,服務(wù)的描述信息必須被發(fā)布以便服務(wù)消費者發(fā)現(xiàn)和調(diào)用。
發(fā)現(xiàn)服務(wù)請求者通過查詢注冊中心去定位符合其需求標(biāo)準(zhǔn)的服務(wù)。
綁定和調(diào)用在獲得服務(wù)描述信息之后,服務(wù)消費者據(jù)此去調(diào)用服務(wù)。
服務(wù)是SOA中的基礎(chǔ)設(shè)施,位于業(yè)務(wù)需求和底層技術(shù)之間的抽象層次中。在開發(fā)基于SOA軟件系統(tǒng)的過程中:首先,要明確功能需求和可獲得服務(wù)之間的動態(tài)關(guān)系,以及服務(wù)與實現(xiàn)服務(wù)的底層技術(shù)的關(guān)系;其次,SOA中的基本服務(wù)必須滿足定義明確和功能單一的要求,每個獨立部署的服務(wù)不必依賴其它系統(tǒng);最后,整個系統(tǒng)功能需求的滿足通過服務(wù)的流程化組織而得到實現(xiàn)。
與傳統(tǒng)開發(fā)方法相比,SOA的特點在于具有:基于標(biāo)準(zhǔn)、松散藕合、共享服務(wù)和粗粒度等,其優(yōu)勢可表現(xiàn)為:
(1)易于集成現(xiàn)有系統(tǒng):在對現(xiàn)有系統(tǒng)不做修改的前提下,SOA可將現(xiàn)有系統(tǒng)和應(yīng)用迅速轉(zhuǎn)換為服務(wù)。通過封裝可以提供服務(wù)接口的應(yīng)用層來訪問遺留系統(tǒng),因此不用修改現(xiàn)有系統(tǒng)體系結(jié)構(gòu)。
(2)具有標(biāo)準(zhǔn)化的架構(gòu):只要符合相關(guān)標(biāo)準(zhǔn),無論何時開發(fā)的組件都可以合并在一個結(jié)構(gòu)良好的SOA系統(tǒng)中。并且不同開發(fā)者開發(fā)出的組件將被作為服務(wù)方便的添加部署在現(xiàn)有的基礎(chǔ)構(gòu)架中。
(3)提升開發(fā)效率:由于SOA在可復(fù)用方面的特點,新的軟件在設(shè)計、開發(fā)、測試和部署時可以充分利用已有服務(wù)。因此,其開發(fā)周期可以顯著縮短。
(4)降低開發(fā)維護(hù)復(fù)雜度:通過采用SOA體系結(jié)構(gòu),在進(jìn)行二次開發(fā)時成本急劇減少。同時,由于系統(tǒng)具有松散藕合的特征,維護(hù)成本也大大減少。
3 SOA的實現(xiàn)技術(shù)—Web服務(wù)
SOA中的應(yīng)用是由服務(wù)使用者通過接口訪問服務(wù)而形成。潛在使用者可發(fā)現(xiàn)由服務(wù)提供者發(fā)布的該類接口并通過網(wǎng)絡(luò)來進(jìn)行調(diào)用.這種設(shè)計思想同Web服務(wù)這種靈活而強(qiáng)大的具體實現(xiàn)技術(shù)有著某種程度的暗合,因此,使用Web服務(wù)來實現(xiàn)SOA具有天然的優(yōu)勢。
此外,SOA是一種不受限于具體技術(shù)的體系結(jié)構(gòu),定位于特定技術(shù)的集合如Web服務(wù)、RMI,COM,CORBA等之上。從廣義角度來說,可以被上述任意一種具體技術(shù)來實現(xiàn)。從嚴(yán)格意義上講,只能由符合協(xié)議中立的技術(shù)去實現(xiàn)。相比以前的分布式計算技術(shù),Web服務(wù)技術(shù)具有更好的可靠性、擴(kuò)展性、易用性且具有協(xié)議開放性。雖然Web服務(wù)并非是實現(xiàn)SOA的必需組件,而且部署了Web服務(wù)也并非意味實現(xiàn)了SOA。但由于它所具有的上述優(yōu)勢使其在實現(xiàn)SOA時具有重要地位,在實踐過程中往往被優(yōu)先考慮為實現(xiàn)SOA的技術(shù)而得到采用。
3.1 Web服務(wù)的關(guān)鍵技術(shù)
基本的Web服務(wù)棧由SOAP, WSDL, UDDI等技術(shù)組成,其服務(wù)棧結(jié)構(gòu)如圖2所示。SOAP ( Sim-ple Object Access Protocol)是一種輕型的基于XML的簡單通信協(xié)議,它定義了一種通過網(wǎng)絡(luò)傳送XML消息的格式。該消息由一個SOAP信封(envelope)元素和被信封元素包圍的一個可選擇的SOAP頭元素(header)和一個必須的SOAP體元素組成。
圖2 Web服務(wù)協(xié)議棧
WSDL ( Web Services Description Language)也是一種基于XM[的語言,通過這種語言,Web服務(wù)可以向其它應(yīng)用程序傳遞它所提供的方法( method ),以及該方法的使用規(guī)則。
UDDI (Universal Description Discovery and Integration)定義了一種基于XML的格式,使用者可以使用這種格式去描述其功能和過程。它定義了Web服務(wù)的發(fā)現(xiàn)和發(fā)布的方法。
3.2 Web服務(wù)的運行方式
Web服務(wù)的運行方式與SOA的設(shè)計思想很相似:服務(wù)提供者將其服務(wù)的WSDL描述信息發(fā)表到UDDI注冊中心。服務(wù)使用者通過查詢注冊中心獲得所要使用服務(wù)的WSDL文檔,該文檔提供了與Web服務(wù)進(jìn)行交互的信息。服務(wù)使用者向提供者發(fā)送SOAP請求消息,然后由Web服務(wù)提供者返回SOAP應(yīng)答消息。
4 應(yīng)用實例研究
4.1計算機(jī)教學(xué)管理系統(tǒng)(CMI )分析
國家遠(yuǎn)程教育標(biāo)準(zhǔn)化委員會制定的CELTS-20(計算機(jī)教學(xué)管理規(guī)范喲對于教學(xué)管理互操作性有下列要求:①同樣的課可以在不同的CMI系統(tǒng)中工作;②分別開發(fā)的課能夠結(jié)合而成為一個CMI系統(tǒng)的課程;③課程可以從一個CMI系統(tǒng)搬到另一個CMI系統(tǒng);④方便分析學(xué)生數(shù)據(jù)。
根據(jù)SOA在開放性和互操作性方面的原則,服務(wù)或模塊要能夠在不同的環(huán)境和平臺下方便地共享。因此,對于第一點和第三點來說,以上原則完全可以滿足這些要求。
重用是SOA中的一個關(guān)鍵的核心概念。SOA中鼓勵盡可能使用已有的服務(wù),對象和應(yīng)用來構(gòu)建一個新的系統(tǒng)而不是重新編碼。這樣,就滿足了第二點的要求,即為不同系統(tǒng)開發(fā)的課程就可以通過重用已有應(yīng)用來形成新的一個CMI系統(tǒng)。
基于SOA的體系結(jié)構(gòu)又具備松禍合,分布性,靈活性,和可靠性等方面的特點,因此可以方便地從不同的數(shù)據(jù)來源甚至是不同的系統(tǒng)中分析數(shù)據(jù)而滿足第四點的要求。
再對CMI中要采用基于SOA體系結(jié)構(gòu)的原因進(jìn)行仔細(xì)分析。在CMI系統(tǒng)中常常要獲取學(xué)生的基本信息。同樣,在考試系統(tǒng),教務(wù)管理系統(tǒng)中,此類的功能也必不可少。所以,同樣的功能存在于三個不同的系統(tǒng)中。此外,就是在同一個系統(tǒng)中也有多個模塊需要這樣的功能,現(xiàn)有的面向?qū)ο蠛突跇?gòu)件軟件開發(fā)方法的解決之道同樣是用到復(fù)用的概念,但這種復(fù)用和SOA中復(fù)用的重大差異在于前者的復(fù)用是一種“代碼復(fù)用”,而SOA中的復(fù)用是一種“功能復(fù)用”。用面向?qū)ο蠛突跇?gòu)件的軟件開發(fā)方法可能會通過復(fù)制已有代碼或?qū)嵗瘜ο笕ソ鉀Q。而在SOA中,只需要將這種“獲取學(xué)生基本信息”的功能封裝成服務(wù),以后在任何一個系統(tǒng)中要用到此類功能時只需要對此進(jìn)行調(diào)用即可。雖然用面向?qū)ο蠛突跇?gòu)件的軟件開發(fā)方法看起來存在著冗余編程的問題,可是也算是一種可選的解決方案。隨著系統(tǒng)復(fù)雜性的增加,如果這三個系統(tǒng)是用不同編程語言運行在不同平臺之上,那么用面向?qū)ο蠛突跇?gòu)件的軟件開發(fā)方法對于復(fù)用相同功能就無能為力,這三個系統(tǒng)必須分別編碼去實現(xiàn)同樣的功能?墒牵绻肧OA的重用服務(wù)的方法,代碼無需更動,真正實現(xiàn)“一次編寫,處處重用”的目的。因此,采用基于SOA的體系結(jié)構(gòu)開發(fā)CMI計算機(jī)教學(xué)管理)系統(tǒng)較其它技術(shù)更具優(yōu)勢。
4.2基于SOA的CMI系統(tǒng)設(shè)計
由于Java技術(shù)具有跨平臺的良好特性,而且J2EE提供的Web服務(wù)功能可以很容易地構(gòu)建能夠訪問現(xiàn)有業(yè)務(wù)流程的SOA系統(tǒng)。因此使用J2EE技術(shù)開發(fā)基于SOA的CMI系統(tǒng),其體系結(jié)構(gòu)如圖3所示。
圖3 CMI系統(tǒng)體系結(jié)構(gòu)
表示層可以包括用戶處理接口,與用戶交互組件,瀏覽器或者使用其他編程語言編寫的客戶端程序。所有的這些客戶端程序都可以向不同的服務(wù)發(fā)送請求。
防火墻是一種非常有效的網(wǎng)絡(luò)安全模型,通過它可以隔離風(fēng)險區(qū)域與局域網(wǎng)的連接,同時不會妨礙對風(fēng)險區(qū)域的訪問。防火墻可以監(jiān)控進(jìn)出網(wǎng)絡(luò)的通信量,僅讓安全的信息通過,同時又可以阻止不安全服務(wù)和非法用戶以抵制具有危害的數(shù)據(jù)。
ESB即企業(yè)服務(wù)總線,用以實現(xiàn)在通信,集成以及服務(wù)交互等方面的功能。本系統(tǒng)使用SOAP/HTTP和WSDL去實現(xiàn)其最低功能。雖然只實現(xiàn)部分功能,但為系統(tǒng)留下增加如內(nèi)部安全性,服務(wù)質(zhì)量,和消息處理等功能的擴(kuò)充余地。
Web服務(wù)層即通過無狀態(tài)會話Bean或Jav-aBean來提供Web服務(wù)。
數(shù)據(jù)訪問層使用不同的技術(shù)(比如EJB-CMP,JDO,ADO)和不同的持久性技術(shù)訪問數(shù)據(jù)。這一層包含優(yōu)化的數(shù)據(jù)訪問代碼,負(fù)責(zé)與數(shù)據(jù)源進(jìn)行交互,并以相應(yīng)的Web服務(wù)方法所期望的格式把數(shù)據(jù)返回給這些方法。這樣就能保護(hù)數(shù)據(jù)的完整性。
數(shù)據(jù)源即各種關(guān)系型數(shù)據(jù)庫或是基于XML的數(shù)據(jù)庫,也可以是一組文件,甚至可以是外部的Web服務(wù)。
4.3基于SOA的CMI系統(tǒng)實現(xiàn)
綜上所述,考慮到學(xué)生注冊在多個系統(tǒng)中也是必不可少的功能,所以結(jié)合CMI系統(tǒng)中的學(xué)生注冊為實例說明如何在Java中創(chuàng)建Web服務(wù)。采用的開發(fā)工具是Websphere Studio Application Developer5.1。WSAD可以根據(jù)Bean創(chuàng)建Web服務(wù),并使用Bean中的消息自動生成WSDL文件,描述所創(chuàng)建的Web服務(wù),使用SOAP分析HTTP的數(shù)據(jù)等。
在項目CMI中包括有如下兩個類,StuInfo和StuRegisterManager。其中Stulnfo保存有學(xué)生信息,在類StuRegisterManager中有createNewStuInfo方法可以寫人學(xué)生信息。
啟動WSAD中的Web服務(wù)向?qū)。reateNewStuInfo封裝成Web服務(wù)。在這個過程中可以選擇測試Web服務(wù),生成客戶代理來方便地進(jìn)行測試。也可以選擇“啟動Web服務(wù)資源管理器以將此Web服務(wù)發(fā)布到UDDI注冊中心”來將要生成的Web服務(wù)直接發(fā)布出去。
在生成Web服務(wù)之后,WSAD會自動生成一系列的WSDL文檔,其中最重要的是StuRegisterMan-ager.wsdl文件。WSDL文檔已被作為描述Web服務(wù)的通用方法,對此的理解可以幫助理解Web服務(wù)的運行機(jī)制。
WSDL文檔的根元素是definitions, message元素表示在客戶和Web服務(wù)之間傳遞的變量。port腸pe元素表示在客戶和Web服務(wù)之間怎樣發(fā)送該消息。Binding元素表示了客戶和Web服務(wù)之間如何互發(fā)消息,在其transport屬性中定義為transport= “http://schemas.xmlsoap.orglsoap/http”,表示客戶和服務(wù)之間的SOAP消息將采用HTTP協(xié)議。Service元素規(guī)定客戶調(diào)用該Web服務(wù)的URL,在這里使用本地地址進(jìn)行測試并且在發(fā)布時將把它改為外部可以訪問的地址。
在編碼和生成Web服務(wù)之后,就可以將它發(fā)布出去。在此系統(tǒng)的開發(fā)和運行初期,采用了私有的UDDI注冊中心,因為主要是要建立基于內(nèi)部的發(fā)現(xiàn)模式,當(dāng)然也可以把它們發(fā)布到公共注冊中心。
最后的一步就是客戶端使用所發(fā)布的Web服務(wù)。不同于EJB客戶端通過名字引用EJB , Web服務(wù)客戶端無需服務(wù)名但是必須首先定位Web服務(wù)。首先,讀取關(guān)于學(xué)生注冊Web服務(wù)的WSDL并為客戶端生成代理,然后客戶端就可以通過RPC使用代理來輸人學(xué)生信息。
編碼,生成,發(fā)布和調(diào)用已經(jīng)完整地構(gòu)成了一個Web服務(wù)開發(fā)的全過程。通過對系統(tǒng)進(jìn)行分析設(shè)計出符合前文所述SOA中關(guān)于服務(wù)要求的Web服務(wù),再根據(jù)上述Web服務(wù)開發(fā)過程將其創(chuàng)建出來,最后對這些Web服務(wù)進(jìn)行恰當(dāng)?shù)牧鞒陶希粋基于SOA架構(gòu)松禍合的CMI系統(tǒng)就形成了。
5 結(jié)束語
SOA的提出代表著標(biāo)準(zhǔn)化、松藕合、粗粒度的軟件體系結(jié)構(gòu)的出現(xiàn),不僅如此,它更代表著不拘泥于具體技術(shù)實現(xiàn)方式的一種新的軟件開發(fā)思想。當(dāng)然,Web服務(wù)的技術(shù)在SOA達(dá)到成熟過程中起到關(guān)鍵作用,從SOA強(qiáng)調(diào)跨越異構(gòu)平臺和不同開發(fā)環(huán)境方面考慮,Web服務(wù)是目前分布式技術(shù)中符合SOA提倡標(biāo)準(zhǔn)化的不多選擇之一。
在本文中我們對于SOA的現(xiàn)狀、背景、優(yōu)勢、體系結(jié)構(gòu)以及實現(xiàn)方法等各方面進(jìn)行了介紹和分析。對Web服務(wù)作為一種SOA的實現(xiàn)技術(shù)也進(jìn)行了重點介紹。最后,結(jié)合了一個具體的實例對于在SOA中開發(fā)Web服務(wù)進(jìn)行了詳細(xì)的說明。
由于SOA自身具有的優(yōu)勢符合了未來軟件發(fā)展的趨勢,并隨著各大軟件供應(yīng)商在此展開的深入研究和激烈競爭,它必然會成為成熟的下一代主流開發(fā)技術(shù)而得到廣泛支持和應(yīng)用。
核心關(guān)注:拓步ERP系統(tǒng)平臺是覆蓋了眾多的業(yè)務(wù)領(lǐng)域、行業(yè)應(yīng)用,蘊涵了豐富的ERP管理思想,集成了ERP軟件業(yè)務(wù)管理理念,功能涉及供應(yīng)鏈、成本、制造、CRM、HR等眾多業(yè)務(wù)領(lǐng)域的管理,全面涵蓋了企業(yè)關(guān)注ERP管理系統(tǒng)的核心領(lǐng)域,是眾多中小企業(yè)信息化建設(shè)首選的ERP管理軟件信賴品牌。
轉(zhuǎn)載請注明出處:拓步ERP資訊網(wǎng)http://www.guhuozai8.cn/
本文標(biāo)題:基于SOA體系結(jié)構(gòu)的軟件開發(fā)方法研究
本文網(wǎng)址:http://www.guhuozai8.cn/html/support/1112153542.html