余 翼
[摘要]介紹一種新的軟件架構方法——面向服務架構(SOA)的理念及其特點,并對面向服務架構的ERP和面向對象架構的ERP分別在體系結構和開發方法上作比較,闡述SOA思想在ERP設計中的應用特點和優勢。
[關鍵詞]面向服務架構(SOA)面向對象架構(OOA)軟件設計
中圖分類號:TP3文獻標識碼:A文章編號:1671-7597(2009)1110094-01
一、面向服務架構SOA
SOA——面向服務架構是一個組件模型,它將應用程序的不同功能單元——服務,通過服務間定義良好的接口和契約聯系起來。接口采用中立的方式定義,獨立于具體實現服務的硬件平臺、操作系統和編程語言,使得構建在這樣系統中的服務可以使用統一和標準的方式進行通信。其中服務,是指僅基于兩個組件接口之間的契約,由一個組件提供其行為方法給另一個使用。
SOA中一般都包含三個角色:服務的提供者、服務的請求者、服務代理。三個角色是根據對服務提出不同的需求和行使的不同功能來劃分的。它們的關系可以簡單理解為:服務的提供者將它提供服務的具體描述發布在服務代理,以方便服務的請求者查詢;服務的請求者通過對服務代理搜索,查找到需要的服務及其提供者的地址;最后是服務的提供者與服務的請求者進行直接的綁定,完成服務。舉個最簡單的例子,我們若要在網上下載一首歌,先可以通過搜索引擎GOOGLE等,搜索可下載這首歌的網站,獲知這首歌的免費下載的地址,最后我們直接鏈接這個地址下載歌。在這個過程,網站即相當于一個服務代理,我們是服務的請求者,而最后那個下載地址背后的服務器為服務的提供者。
SOA主要特征是將應用程序功能包裝成服務,服務間彼此獨立,可單獨作為組件使用。它具備松散耦合,提供粗粒度的服務和標準化的接口等。SOA旨在提供一個通用的,可互操作的和有彈性的行業標準架構,可以在軟件基礎架構之上建立一系列可重復利用的服務,實現企業適應業務流程變化的需求。
二、SOA體系結構的優勢
面向服務的體系結構可以基于現有的系統投資來發展,而不需要徹底重新創建系統。如果組織將研發力量集中在創建服務、利用現有的技術、結合基于組件的方法來開發軟件上,將獲得如下幾方面好處:
1.利用現有資產,這是首要的需求。通過使用適當的SOA框架并使其可用于整個企業,可以將業務服務構造成現有組件的集合。使用這種新的服務只需要知道它的接口和名稱。服務的內部細節以及在組成服務的組件之間傳送的數據的復雜性都對外界隱藏了。這種組件的匿名性使組織能夠利用現有的投資,從而可以通過合并構建在不同的機器上、運行在不同的操作系統中、用不同的編程語言開發的組件來創建服務。遺留系統可以通過Web服務接口來封裝和訪問。
2.商品化基礎架構。在所有不同的企業應用程序之間,基礎架構的開發和部署將變得更加一致。現有的組件、新開發的組件和從廠商購買的組件可以合并在一個定義良好的SOA框架內。這樣的組件集合將被作為服務部署在現有的基礎構架中,從而使得可以更多地將基礎架構作為一種商品化元素來加以考慮。
3.更快的產品上市速度。組織的Web服務庫將成為采用SOA框架的組織的核心資產。使用這些Web服務庫來構建和部署服務將顯著地加快產品的上市速度,因為對現有服務和組件的新的創造性重用縮短了設計、開發、測試和部署產品的時間。
4.減少成本。隨著業務需求的發展和新的需求的引入,通過采用SOA框架和服務庫,為現有的和新的應用程序增強和創建新的服務的成本大大地減少了。同樣,開發團隊的學習難讀也降低了,因為他們可能已經熟悉了現有的組件。
5.降低風險。重用現有的組件降低了在增強或創建新的業務服務的過程中帶來的風險。如前所述,這也減少了維護和管理支持服務的基礎架構的風險。
6.持續改進業務過程。SOA允許清晰地表示流程流,這些流程流通過在特定業務服務中使用的組件的順序來標識。這給商業用戶提供了監視業務操作的理想環境。業務建模反映在業務服務中。流程操縱是以一定的模式重組部件(構成業務服務的組件)來實現的。這將進一步允許更改流程流,而同時監視產生的結果,因此促進了持續改進。
7.以流程為中心的體系結構。現有的體系結構模型和實踐往往是以程序為中心的。應用程序是為了程序員的便利而開發的。通常,流程信息在組件之間傳播。應用程序很像一個黑匣子,沒有粒度可用于外部。重用需要復制代碼、合并共享庫或繼承對象。在以流程為中心的體系結構中,應用程序是為過程開發的。流程可以分解成一系列的步驟,每一個步驟表示一個業務服務。實際上,每個過程服務或組件功能都相當于一個子應用程序。將這些子應用程序鏈接在一起可以創建能夠滿足業務需求的流程流。這種粒度允許利用和重用整個組織中的子應用程序。
三、SOA的實現技術
遵循SOA自底向上劃分組件層和服務層的原則,構建SOA系統的基本過程是:(1)進行系統業務功能邏輯的建模;(2)將其轉換為面向門戶組件的整合實現;(3)進行Web服務裝配,完成服務的復用和消息傳遞。
下面結合企業門戶的特點,討論實現SOA的關鍵技術。
業務服務邏輯建模:沿用SOA的邏輯建模思路,SOA的業務服務邏輯模型應是一組松散耦合的、基于消息可交互的服務模型。基于這種高于對象層的分布式Web服務集成模式,業務邏輯功能被構建為單獨的Web服務及其他服務組件,如資源整合服務、認證服務、核心業務服務及其他可復用服務等。本文架構中,服務用于定義和支持業務流程,可以提供眾多功能,包括數據訪問、基礎架構和業務功能。同時,定制服務的關鍵是理解業務流程。流程定義了與其他業務進行交互操作的邏輯和方法,可以通過工作流引擎實現這一定制和控制過程。此外,模型還包括構建服務所需的開發建模工具、管理控制平臺、適配器以及底層支撐的開發包。
建模過程中,服務需要管理所有的資源,即將服務提供者作為管理器創建服務實例,同時需要考慮業務服務是同步的、異步的還是兩者兼顧。構建一個Web服務并不是簡單呈現API或靜態組件,Web服務實現的功能可以是響應用戶一個簡單的請求,也可以是完成復雜的業務流程,通信是無狀態的。利用WSDL文件可以動態描述Web服務,這需要結合企業門戶的業務服務的邏輯和對外發布的應用接口具體定義。服務描述重點包括服務、調用操作的消息、構造消息的細節以及向何處發送處理細節的消息,使得API發生改變時,系統其他組件在運行時可以自動調整,要求表現與邏輯分離以實現這一動態任務。
EJB提供了對服務的安全訪問和并發處理事務的支持,可以基于EJB構建SOA中的一些服務,通過把Web服務模型化為EJB端點,使服務具有可伸縮性,并且可以增強可靠性。
參考文獻:
[1]王兵,基于面向服務架構的應用系統開發與集成研究[D].四川:四川大學,2005.
[2]呂希艷,基于SOA的企業信息資源整合[J].中國科技論壇,2006(3).