SOA體系架構下的企業系統集成

SOA不同於現有的分佈式技術之處在於大多數軟件商接受它並有可以實現SOA的平臺或應用程序。它伴隨着無處不在的標準,爲企業的現有資產或投資帶來了更好的重用性。它以藉助現有的應用來組合產生新服務的敏捷方式,提供給企業更好的靈活性來構建應用程序和業務流程,對現代企業的系統集成和整合起到了非常重要的作用。

SOA體系架構下的企業系統集成

  1、系統的物理部署結構

1.1 硬件體系結構

硬件體系結構主要來配合應用總體規則及軟件體系結構的需要。多層體系結構根據實際情況可以有不同的主機系統部署方案。根據前面的論述,我們清楚了多層體系結構有着良好的伸縮性。下面我們重點提出基於硬件的可伸縮性的方案建議:

主機系統部署方案的各個階段,隨着應用業務的不斷擴展,系統可以通過增加數據庫服務器和Web/應用服務器的數量,而不需要重新修改程序,就可以適應這種變化。根據目前的情況,我們認爲採用圖中的第二階段的主機系統部署方案可以滿足應用系統對用戶訪問量、業務處理能力和數據存儲的要求。第二階段的主機系統部署方案要求服務器分爲數據庫服務器和應用服務器,應用服務器專門負責業務處理和Web訪問,通過DDN專線連接到Internet(根據用戶對安全性的要求,系統也可以不作任何修改的運行在企業內部的anet上),並和數據庫服務器組成一個很小的局域網。客戶機可以直接通過因特網訪問應用系統但不能直接訪問數據庫。

1.2 系統的技術體系結構

SOA架構具有一些典型特性,主要包括鬆耦合性,位置透明性以及協議無關性。鬆耦合性要求SOA架構中的不同服務之間應該保持一種鬆耦合的關係,也就是應該保持一種相對獨立無依賴的關係;位置透明性要求SOA系統中的所有服務對於他們的調用者來說都是位置透明的,也就是說每個服務的調用者只需要知道他們調用的是哪一個服務,但並不需要知道所調用服務的物理位置在哪裏;而協議無關性要求每一個服務都可以通過不同的協議來調用。通過這些SOA架構所具有的特性我們可以看到,SOA架構的出現爲企業系統架構提供了更加靈活的構建方式,如果企業架構設計師基於SOA來構建系統架構,就可以從底層架構的級別來保證整個系統的鬆耦合性以及靈活性,這都爲未來企業業務邏輯的擴展打好了基礎。

  2、SOA分層模型

SOA中的服務可以被映射成具體系統中的任何功能模塊,但是從功能性方面可以大致劃分爲以下三種類型:

2.1商業服務:這一類的服務是一個企業可以暴露給外部用戶或者合作伙伴使用的服務。比如說提交貸款申請,用戶信用檢查,貸款信用查詢。

2.2商業功能服務:這類服務會完成一些具體的商業操作,也會被更上層的商業服務調用,不過大多數情況下這類服務不會暴露給外部用戶直接調用,比如說檢索用戶帳戶信息,存儲用戶信息等。

2.3技術功能服務:這類服務主要完成一些底層的技術功能,比如說日誌服務以及安全服務等。

  3、SOA與企業服務總線(ESB)

爲了將SOA變成現實,需要一個智能化的服務基礎架構,以降低服務重用的複雜性,並可靠地集成IT環境的各種技術、協議和應用。爲此,IT組織創建了一個以“服務”爲中心的抽象層,以隱藏各種應用和技術帶來的底層複雜性,並提供一個定製企業應用的平臺。這個服務或集成層稱爲ESB(Enterprise Service Bus,企業服務總線)。

3.1 SOA架構範例

SOA的部分範例轉移是一個從應用基礎架構(Application Infrastructure)遷移到服務基礎架構(Service Infrastructure)的過程。在SOA之前,各種應用程序用點對點的連接方式孤立地組織在一起。除了利用一個聚合的服務基礎架構層(Service Infrastructure Layer)之外,SOA使用同樣的後端應用引擎和中間件。

3.2 SOA/WEB服務的實現

J2EE平臺通過JAXRPC1.1API提供了完整的Web服務支持,這種API支持基於Servlet和企業Bean的服務端點。JAXRPC1.1基於WSDL和SOAP協議提供了與Web服務的互操作性。J2EE平臺也支持WebServicesforJ2EE規範(JSR921),後者定義了Web服務的部署需求並利用了JAXRPC編程模型,還提供了跨平臺的交互操作性。

Web服務客戶可以通過兩種方式訪問Java EE應用程序。客戶可以訪問用JAXRPCAPI創建的Web服務;在幕後JAXRPC使用Servlet來實現Web服務。公開無狀態的EJB作爲Web服務;Web服務客戶也可以通過Bean的服務端點接口訪問無狀態會話Bean。在項目中,現有的業務邏輯大多已經使用EJB組件編寫,通過Web服務公開它可能是實現從外界訪問這些服務的最佳選擇。

3.3 兩種粒度實現SOA服務

在SOA中服務粒度有兩種相關的意思,即服務是如何實現的,服務使用和返回了多少數據或多少消息。細粒度服務執行了最小的功能,發送和接收少量的數據。粗粒度服務執行了較大的業務功能,並交換了更多的數據。

細粒度服務是供粗粒度服務或組合服務使用的,而不是由終端應用直接使用的。如果應用是使用細粒度服務建立的,則應用將不得不調用網絡上多個服務,並且發生在每個服務上的數據量較少,因而會對對系統整體性帶來影響。所以,粗粒度服務的用戶不能直接調用它所使用的細粒度服務,安全和訪問控制必須在細粒度服務中實現。

組合服務可以使用粗粒度服務和細粒度服務進行組裝。數據數量不是粗粒度服務和組合服務之間的區別。粗粒度服務,如創建新用戶,在這一過程的操作是:需要通過一些外部服務驗證對客戶進行驗證,並在資源庫應用系統中創建用戶記錄。