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