第3章基于SOA的中小型企業(yè)業(yè)務(wù)流集成系統(tǒng)解決方案
3.1軟件開發(fā)方法的演變
軟件開發(fā)的歷史開始于1945年,當(dāng)時(shí)馮·諾依曼提出了二進(jìn)制方案,建立多級(jí)存儲(chǔ)結(jié)構(gòu)和并行計(jì)算原理,確立20世紀(jì)計(jì)算機(jī)的基本數(shù)學(xué)構(gòu)型。軟件開發(fā)的過程就是人們使用各種計(jì)算機(jī)語言將人們關(guān)心的現(xiàn)實(shí)世界映射到計(jì)算機(jī)世界的過程,軟件開發(fā)一般分為五個(gè)階段:?jiǎn)栴}的定義及規(guī)劃一需求分析一軟件設(shè)計(jì)一程序編碼一軟件測(cè)試。
從編程的方法論上來說,從一開始的機(jī)器語言和匯編語言直接對(duì)機(jī)器碼進(jìn)行編程,然后,“結(jié)構(gòu)化"的編程方法開始出現(xiàn)并流行起來。E.W.Dijkstra在1969年提出了結(jié)構(gòu)化程序設(shè)計(jì)(Structurcd Programming,SP)方法,它是以模塊化設(shè)計(jì)為中心,將待開發(fā)的軟件系統(tǒng)劃分為若干個(gè)相互獨(dú)立的模塊,這樣每一個(gè)模塊的工作變單純而明確,為設(shè)計(jì)一些較大的軟件打下了良好的基礎(chǔ)。
1960年代“軟件危機(jī)"的發(fā)生,促使了面向?qū)ο?Object-Oriented Programming,ooP)的軟件開發(fā)方法的誕生,面向?qū)ο蟮拈_發(fā)強(qiáng)調(diào)從問題域的概念到軟件程序和界面的直接映射,在面向?qū)ο缶幊讨,程序被看作是相互協(xié)作的對(duì)象集合,每個(gè)對(duì)象都是某個(gè)類的實(shí)例。
隨著軟件的迅猛發(fā)展,軟件系統(tǒng)是越做越大,功能是越來越強(qiáng),而其中出現(xiàn)的問題同時(shí)也是越來越多,于是,可復(fù)用的軟件方法論開始流行,“面向構(gòu)件"進(jìn)行編程的理論開始出現(xiàn),從2005年開始,SOA推廣和普及工作開始加速,并逐步發(fā)展了三個(gè)SOA的標(biāo)準(zhǔn)規(guī)范:SCA,SDO,WS.Policy,這三個(gè)規(guī)范的發(fā)布,標(biāo)志著基于SOA解決方案進(jìn)入了可實(shí)施的階段,在此條件下,本研究提出了基于SOA的中小型企業(yè)業(yè)務(wù)流集成應(yīng)用系統(tǒng)解決方案。
3.2基于SOA的解決方案概述
企業(yè)的應(yīng)用集成目前存在4個(gè)不同層次的解決方案:數(shù)據(jù)集成,業(yè)務(wù)邏輯集成,函數(shù)或方法集成,用戶界面集成。傳統(tǒng)的解決方案大都采用緊密耦合的集成方式,忽視了流程設(shè)計(jì),不利于企業(yè)流程重組和調(diào)整,缺乏可擴(kuò)展性和靈活性。根據(jù)浙江鼎盛工業(yè)有限公司提供的業(yè)務(wù)需求與流程,本研究提出了一種了基于SOA的企業(yè)業(yè)務(wù)流集成系統(tǒng)解決方案,該方案包含了系統(tǒng)功能、開發(fā)技術(shù)的選擇、解決方案實(shí)施計(jì)劃,該方案具有:松散耦合,復(fù)用程度高,跨平臺(tái),易擴(kuò)展的優(yōu)點(diǎn)。
在導(dǎo)師以“項(xiàng)目實(shí)施"來帶動(dòng)課題研究的建議下,本人找了浙江鼎盛工業(yè)有限公司作為本次研究的課題研究對(duì)象,浙江鼎盛工業(yè)有限公司是一家生產(chǎn)汽車配件為主的民營(yíng)企業(yè),業(yè)務(wù)流程比較典型,主要是汽車配件產(chǎn)品的生產(chǎn)與銷售。
在企業(yè)各部門員工的幫助下,根據(jù)業(yè)務(wù)需求分析,以SOA設(shè)計(jì)思想,劃分了本系統(tǒng)的四個(gè)主要系統(tǒng)功能:產(chǎn)品服務(wù)模塊、客戶服務(wù)模塊、購(gòu)物車服務(wù)模塊、訂單服務(wù)模塊,根據(jù)企業(yè)的具體業(yè)務(wù)流程,再次可以細(xì)分模塊,如圖3.1所示。
圖3.1系統(tǒng)功能結(jié)構(gòu)圖
根據(jù)系統(tǒng)功能結(jié)構(gòu)圖,以SOA的思想,可以理解為四個(gè)功能模塊就是四個(gè)服務(wù)單元,每個(gè)服務(wù)單元包含了若干個(gè)服務(wù)操作,產(chǎn)品信息維護(hù)操作、客戶信息維護(hù)操作、購(gòu)物車信息維護(hù)操作都包含了信息的添加、修改與刪除三個(gè)具體操作,訂單信息維護(hù)操作包含了訂單的修改與刪除操作。以“服務(wù)”思想劃分系統(tǒng)功能結(jié)構(gòu),根據(jù)服務(wù)設(shè)計(jì)原則,設(shè)計(jì)好服務(wù)單元功能,定義好各個(gè)服務(wù)單元的接口,就為服務(wù)集成建立了基礎(chǔ)。
3.3開發(fā)平臺(tái)的選擇
SOA是一個(gè)分布式架構(gòu),使用Web服務(wù)來構(gòu)建。因此,一個(gè)具備SOA能力的開發(fā)與運(yùn)行環(huán)境,才能適用于支持Web服務(wù)技術(shù)集的分布式編程架構(gòu)。分析SOA架構(gòu)的特性,一個(gè)通用的SOA開發(fā)平臺(tái)應(yīng)該具備5個(gè)基本需求:
(1)需要一個(gè)開發(fā)環(huán)境來編寫和組裝軟件程序,這個(gè)環(huán)境必須提供支持一種編程語言的開發(fā)工具,來編寫和組裝軟件程序。
(2)有能力將軟件程序劃分成自包含的和可組合的處理邏輯單元,并能在運(yùn)行時(shí)候內(nèi)部或跨實(shí)例相互通信。
(3)能夠通過行業(yè)標(biāo)準(zhǔn)的Web服務(wù)技術(shù)封裝和暴露應(yīng)用邏輯。
(4)需要暴露特性和運(yùn)行提供功能的API,以便能夠構(gòu)建于這些特性和功能進(jìn)行交互并利用其優(yōu)勢(shì)的軟件程序。
(5)需要一個(gè)運(yùn)行來設(shè)計(jì)軟件,同時(shí)提供將永久駐留此軟件的環(huán)境。每個(gè)需求代表一個(gè)層,能夠?qū)崿F(xiàn)面向服務(wù)解決方案的平臺(tái)基本架構(gòu)模型如圖3.2示。
圖3-2構(gòu)建SOA解決方案平臺(tái)所需的層次圖
3.3.1常用的開發(fā)平臺(tái)
(1)J2EE平臺(tái)中的SOA支持
J2EE平臺(tái)是基于Java編程語言的一個(gè)開發(fā)與運(yùn)行環(huán)境,J2EE開發(fā)平臺(tái)包含了大量的可組合片段,能夠?qū)⑵浣M裝成合格的Web服務(wù)解決方案,J2EE平臺(tái)中與SOA相關(guān)聯(lián)的層如圖3.3所示。
圖3-3與SOA關(guān)聯(lián)的J2EE平臺(tái)相關(guān)層次圖
在架構(gòu)組件方面,用于構(gòu)建J2EE Web應(yīng)用的組件有:JSP(Java Server Pages,Java服務(wù)器頁(yè)面)組件,JSP可以動(dòng)態(tài)地生成Web頁(yè)面,駐留于Web服務(wù)器;Struts組件用于復(fù)雜用戶界面和導(dǎo)航的Web應(yīng)用開發(fā);Java Servlet組件用于處理HTTP請(qǐng)求及響應(yīng)交換,它是一個(gè)編譯程序;JavaBean組件是一個(gè)用于企業(yè)解決方案環(huán)境內(nèi)執(zhí)行大量處理的業(yè)務(wù)組件,借助中間件支持,它可以實(shí)現(xiàn)Web服務(wù)。
在運(yùn)行時(shí)環(huán)境方面,為了支持Web服務(wù),J2EE提供了附加的運(yùn)行層,依次提供附加服務(wù)的特定API。最顯著的是JAX.RPC運(yùn)行時(shí),建立了基本服務(wù),包括SOAP通信與WSDL處理的支持。此外,JE22提供了EJB容器與Web容器用于駐留Web服務(wù)應(yīng)用程序的環(huán)境。
在編程語言方面,J2EE平臺(tái)以Java編程語言為核心,雖然有很多不同的廠商提供的開發(fā)產(chǎn)品,但是這些產(chǎn)品都使用了標(biāo)準(zhǔn)的Java語言,都可以用于構(gòu)建Web服務(wù),目前常用的開發(fā)工具有:Sun的Java Studio Creator、Oracle的Jdeveloper和IBM的RationalApplication Developer。
在API方面,J2EE包含了一些支持Web服務(wù)的可編程功能API,構(gòu)建SOA相關(guān)的API有:JAXP,它用來處理XML文檔,還可以使用XSLT樣式表與XSD schema進(jìn)行轉(zhuǎn)換和驗(yàn)證XML文檔;JAX.RPC,它用來處理SOAP,同時(shí)支持RPC.1iteral與document.1iteral的請(qǐng)求.響應(yīng)交換與傳輸;JAXR,它提供訪問業(yè)務(wù)與服務(wù)注冊(cè)標(biāo)準(zhǔn)接口的處理,對(duì)UDDI形成支持;JAXM,它用于異步的、文檔類型的SOAP通信,支持單向和廣播式的消息傳輸;SAAJ,它專門用于需要附件的SOAP消息處理;JMS,它是以Java為核心的消息協(xié)議,用于傳統(tǒng)的消息中間件解決方案;JAXB,它用于XSD schema生成Java類,并可以進(jìn)一步抽象XML的開發(fā)。
在服務(wù)提供者方面,服務(wù)提供者需包含服務(wù)端點(diǎn)和端口組件底層模型。服務(wù)端點(diǎn)在J2EE中,可以構(gòu)建JAX-RPC服務(wù)端點(diǎn)和EJB服務(wù)端點(diǎn),前者通常由底層Web容器邏輯作為servlet開發(fā)來實(shí)現(xiàn),后者通過底層EJB組件來實(shí)現(xiàn)。端口組件底層模型在J2EE中,通過服務(wù)端點(diǎn)接口與服務(wù)實(shí)現(xiàn)Bean來實(shí)現(xiàn)組件。
在服務(wù)請(qǐng)求者方面,JAX.RPC負(fù)責(zé)將代理與請(qǐng)求業(yè)務(wù)邏輯組件間的通信轉(zhuǎn)換成SOAP消息,JAX-RPC能用于開發(fā)服務(wù)請(qǐng)求者,并可以提供創(chuàng)建客戶代理的能力,它們分別是:。靜態(tài)代理和動(dòng)態(tài)代理,靜態(tài)代理由JAX.RPC編譯器在設(shè)計(jì)時(shí),自動(dòng)生成服務(wù)提供者WSDL,為每個(gè)WSDL創(chuàng)建一個(gè)遠(yuǎn)程接口,以便其他組件調(diào)用;動(dòng)態(tài)代理分為動(dòng)態(tài)代理和動(dòng)態(tài)調(diào)用接口動(dòng)態(tài)代理,在被其他組件調(diào)用時(shí)才創(chuàng)建,動(dòng)態(tài)生成WSDL與遠(yuǎn)程接口。
在服務(wù)代理方面,J2EE通常采用服務(wù)代理來執(zhí)行各種運(yùn)行時(shí)過濾、處理及路由任務(wù),通俗點(diǎn)講,就是使用服務(wù)代理處理SOAP報(bào)頭,JAX.PRC API通過創(chuàng)建處理器處理J2EE服務(wù)請(qǐng)求者發(fā)送的或EJB端點(diǎn)和JAX-RPC服務(wù)端點(diǎn)接收的SOAP消息報(bào)頭條目。
在平臺(tái)擴(kuò)展方面,目前J2EE以SDK的形式提供各種平臺(tái)的擴(kuò)展,目前可用的平臺(tái)擴(kuò)展實(shí)例主要有兩個(gè):Java Web服務(wù)開發(fā)包和mM浮動(dòng)技術(shù)工具箱。
(2).NET平臺(tái)中的SOA支持
.NET平臺(tái)是微軟公司研發(fā)的一個(gè)可視化開發(fā)工具,.NET開發(fā)平臺(tái)由一組用于建立Web服務(wù)應(yīng)用程序和Windows桌面應(yīng)用程序的軟件組件構(gòu)成,包括.NET框(Framework)、.NET開發(fā)者工具和ASRNET。與SOA相關(guān)的是.NET平臺(tái)的ASP.NET環(huán)境與Web服務(wù)增強(qiáng)擴(kuò)展(Web Services Enhancements,WSE),ASP.NET是一種建立在通用語言上的程序構(gòu)架,能被用于一臺(tái)Web服務(wù)器來建立強(qiáng)大的Web應(yīng)用程序,ASP.NET同樣具有強(qiáng)大的web服務(wù)開發(fā)功能。WSE是一個(gè)用來建設(shè)Web服務(wù)的.NET類庫(kù),它支持最新的Web服務(wù)協(xié)議,它支持用傳輸?shù)姆绞桨l(fā)送SOAP消息,而不是HTTP。.NET平臺(tái)中與SOA相關(guān)聯(lián)的層如圖3-4所示。
圖3-4與SOA關(guān)聯(lián)的.NET平臺(tái)相關(guān)層次圖
在架構(gòu)組件方面,ASENET Web窗體可用于動(dòng)態(tài)構(gòu)建Web頁(yè)面;ASENET Web是特別為Web服務(wù)提供者設(shè)計(jì)的ASP.NET應(yīng)用;程序集組件是.NET平臺(tái)的標(biāo)準(zhǔn)處理單元,Web服務(wù)的應(yīng)用邏輯都能包含在一個(gè)程序集中。
在運(yùn)行時(shí)環(huán)境方面,在.NET平臺(tái)中有一個(gè)CLR(Common Language Runtime,通用語言運(yùn)行時(shí)),CLR是一個(gè)運(yùn)行時(shí)代理集合,可以管理.NET應(yīng)用程序,并且可以加入各種輔助運(yùn)行時(shí)層,比如ASENET中的HTTP管道運(yùn)行時(shí)層。
在編程語言方面,.NET平臺(tái)包含了四個(gè)編程語言:C#、C++、VB、J#,不管用哪種語言,程序代碼都會(huì)轉(zhuǎn)換成中間語言(Microsoft Intermediate Language,MSlL)的標(biāo)準(zhǔn)格式,MSIL最終在CU之中執(zhí)行。
在API方面,.NET平臺(tái)通過類庫(kù)提供了進(jìn)行訪問的可編程接口,并組成了一個(gè)大的API集,與Web服務(wù)相關(guān)的API有:System.Xml,System.WebService,前者提供了XML文檔的解析和處理功能,后者提供Web服務(wù)接口與Web服務(wù)器交互層的文檔分解。除此之外,還有一些類族用來支持Web服務(wù),比如System.Web.Services.Discovery提供Web服務(wù)元數(shù)據(jù)的可編程發(fā)現(xiàn)。
在服務(wù)提供者方面,.NET平臺(tái)通過ASP.NET Web服務(wù)組件來編寫一個(gè)“.a(chǎn)snlx”擴(kuò)展文件來承擔(dān)服務(wù)端點(diǎn),ASMX文件通常包含一個(gè)ASMX端點(diǎn)與一個(gè)駐留各個(gè)業(yè)務(wù)邏輯的編譯程序集。
在服務(wù)請(qǐng)求者方面,.NET平臺(tái)提供了一個(gè)位于服務(wù)請(qǐng)求者的應(yīng)用邏輯代理類,該代理類將方法調(diào)用轉(zhuǎn)換成HTTP請(qǐng)求,然后服務(wù)提供者將處理的消息轉(zhuǎn)換回本地方法的調(diào)用。代理類代碼,通常由Visual Studio或WSDL的命令行程序自動(dòng)生成,然后將代理類編譯成一個(gè)DLL文件。
在服務(wù)代理方面,在.NET環(huán)境中,ASENET運(yùn)行時(shí)配備了HTTP模塊,能夠代理執(zhí)行認(rèn)證、授權(quán)和狀態(tài)管理等系統(tǒng)任務(wù);由WSE工具集提供的過濾器代理能夠處理SOAP報(bào)頭,可以在服務(wù)提供者發(fā)送之后與服務(wù)請(qǐng)求者接受之前,截取SOAP消息。
在平臺(tái)擴(kuò)展方面,.NET平臺(tái)的WSE(Web Services Enhancement,Web服務(wù)增強(qiáng))工具,提供了支持WS-*宰規(guī)范特性的一系列類,目前支持WS-尋址、WS-策略、WS-安全、WS-安全策略、WS-安全會(huì)話、WS-信任等。
3.3.2開發(fā)平臺(tái)的選擇
J2EE與.Net平臺(tái)都能實(shí)現(xiàn)基于SOA的解決方案,但是.NET平臺(tái)被微軟獨(dú)家全面支持,因此有著更為一致性的行為方式和可預(yù)見性,而J2EE沒有兩個(gè)廠家的J2EE規(guī)范是完全一致的,這意味著在兩個(gè)平臺(tái)之間的應(yīng)用移植需要因?yàn)檫@種差異性的存在而付出額外代價(jià)。另外,.NET的易用性、效率和成本均領(lǐng)先于J2EE,使用.Net平臺(tái)開發(fā)比使用J2EE平臺(tái)更加不用關(guān)心底層細(xì)。因此,在第2章SOA技術(shù)概要的基礎(chǔ)上,結(jié)合本章3.3.1小節(jié)中的J2EE平臺(tái)與.NET平臺(tái)的比較,本人認(rèn)為在.NET平臺(tái)能夠較好實(shí)現(xiàn)基于SOA的系統(tǒng)解決方案。
基于SOA的中小型企業(yè)業(yè)務(wù)流集成應(yīng)用研究(一)
http://articles.e-works.net.cn/SOA/Article95112.htm
基于SOA的中小型企業(yè)業(yè)務(wù)流集成應(yīng)用研究(二)上
http://articles.e-works.net.cn/SOA/Article95113.htm
基于SOA的中小型企業(yè)業(yè)務(wù)流集成應(yīng)用研究(二)下
http://articles.e-works.net.cn/SOA/Article95114.htm
基于SOA的中小型企業(yè)業(yè)務(wù)流集成應(yīng)用研究(三)上
http://articles.e-works.net.cn/SOA/Article95130.htm
基于SOA的中小型企業(yè)業(yè)務(wù)流集成應(yīng)用研究(三)下
http://articles.e-works.net.cn/SOA/Article95133.htm
基于SOA的中小型企業(yè)業(yè)務(wù)流集成應(yīng)用研究(四)
http://articles.e-works.net.cn/SOA/Article95189.htm
基于SOA的中小型企業(yè)業(yè)務(wù)流集成應(yīng)用研究(五)上
http://articles.e-works.net.cn/SOA/Article95191.htm
基于SOA的中小型企業(yè)業(yè)務(wù)流集成應(yīng)用研究(五)下
http://articles.e-works.net.cn/SOA/Article95221.htm
核心關(guān)注:拓步ERP系統(tǒng)平臺(tái)是覆蓋了眾多的業(yè)務(wù)領(lǐng)域、行業(yè)應(yīng)用,蘊(yùn)涵了豐富的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)載請(qǐng)注明出處:拓步ERP資訊網(wǎng)http://www.oesoe.com/
本文標(biāo)題:基于SOA的中小型企業(yè)業(yè)務(wù)流集成應(yīng)用研究(三)上
本文網(wǎng)址:http://www.oesoe.com/html/support/1112154146.html