【軟考架構】面向服務的體系結構(SOA)深度解析

面向服務的體系結構(SOA)深度解析

面向服務的體系結構(Service-Oriented Architecture, SOA)是一種以服務為核心的軟件架構范式,通過標準化接口實現異構系統間的高效集成與協作。以下從概念定義、發展脈絡、技術演進、參考架構四個維度,結合行業實踐與技術細節展開系統解析。

15.1 SOA的相關概念

15.1.1 SOA的定義:應用框架與組件模型的雙重內涵

1. 應用視角的定義

SOA是一種業務驅動的應用框架,其核心是將企業業務功能抽象為可復用的“服務”,通過標準化接口實現服務的靈活組合與部署。這些服務具備以下特性:

  • 平臺無關性:服務接口獨立于硬件、操作系統和編程語言,支持跨平臺調用;
  • 松耦合:服務間通過契約交互,避免強依賴,降低系統變更成本;
  • 業務對齊:服務直接映射業務功能,支持業務流程的快速調整與創新。
2. 軟件原理視角的定義

SOA是一種組件模型,其核心是通過定義良好的接口和契約將應用功能單元(服務)連接起來。接口采用中立的描述方式(如WSDL),確保不同技術棧實現的服務可互操作。這種模型推動了服務的標準化與復用,例如:

  • 企業可將客戶管理、訂單處理等功能封裝為獨立服務,供多個業務系統調用;
  • 第三方開發者可通過開放API集成企業服務,拓展生態邊界。

15.1.2 業務流程與BPEL:服務編排的核心工具

1. 業務流程的數字化映射

業務流程是現實業務邏輯的計算機化表達,傳統依賴自然語言描述,存在歧義性與執行效率問題。SOA通過**BPEL(Business Process Execution Language for Web Services)**實現流程的標準化建模與自動化執行。

2. BPEL的核心功能

BPEL是一種基于XML的流程定義語言,其核心價值包括:

  • 服務編排:將多個Web服務組合為復合服務,例如將“訂單創建→庫存校驗→支付處理”編排為端到端流程;
  • 流程自動化:通過預定義規則控制流程執行順序,支持異常處理與事務補償;
  • 跨系統集成:屏蔽服務底層實現細節,實現跨企業、跨平臺的流程協同。

15.2 SOA的發展歷史

15.2.1 技術演進的三個關鍵階段

1. 萌芽階段(20世紀90年代末-2000年):XML奠定基石
  • 核心技術:XML(可擴展標記語言)提供跨系統數據交換的統一格式,XSLT實現數據轉換,XMLSchema保障數據完整性;
  • 局限:缺乏統一的服務描述與調用規范,服務復用停留在數據層。
2. 標準化階段(2000-2005年):Web服務三劍客崛起
  • 核心標準
    • SOAP:基于XML的遠程過程調用協議,支持跨防火墻通信;
    • WSDL:服務接口的標準化描述語言,定義服務操作與消息格式;
    • UDDI:服務注冊與發現中心,實現服務的動態查找與綁定;
  • 應用爆發:電子商務推動Web服務普及,企業開始將核心業務功能封裝為Web服務對外提供。
3. 成熟應用階段(2005年至今):從Web服務到微服務
  • 技術突破
    • SCA/SDO/WS-Policy:SCA(服務組件架構)定義編程模型,SDO(服務數據對象)統一數據訪問,WS-Policy規范服務交互策略;
    • 企業服務總線(ESB):通過消息路由、協議轉換等功能實現服務集成,如IBM WebSphere ESB;
  • 演進方向:SOA向更細粒度、更靈活的微服務架構過渡,解決傳統SOA的復雜性與供應商鎖定問題。

15.2.2 國內外發展對比:從系統整合到生態構建

1. 美國:遺留系統重構為主
  • 核心任務:通過SOA整合主機時代積累的遺留系統,例如將銀行核心交易系統封裝為服務,與互聯網渠道集成;
  • 技術挑戰:需平衡服務復用與業務靈活性,避免過度設計導致的復雜性。
2. 中國:新建與整合并行
  • 典型場景
    • 電信、金融行業:以SCA/SDO為標準,構建細粒度服務(如用戶認證、計費),通過ESB實現系統間松耦合集成;
    • 制造業:上汽集團投入3000億元建設汽車SOA平臺,整合中央域控制器與微服務,支持“軟件定義汽車”生態;
  • 階段特征:部分領域仍處于XML標準化階段,少數領先企業已進入微服務化實踐。
    在這里插入圖片描述

15.2.3 微服務化發展:SOA的輕量化演進

在這里插入圖片描述

1. SOA與微服務的核心差異
維度SOA微服務
服務粒度粗粒度(如訂單管理服務)細粒度(如訂單創建、庫存校驗獨立服務)
接口協議基于SOAP/WSDL的重量級協議基于HTTP/RESTful的輕量級協議
部署方式集中式ESB集成去中心化容器化部署(Docker/Kubernetes)
治理模式集中式服務注冊與管理分布式服務發現(如Eureka)
2. 微服務解決的核心問題
  • 復雜性:通過拆分服務降低系統耦合度,例如將單體電商系統拆分為用戶、訂單、支付等獨立服務;
  • 供應商鎖定:采用開源技術棧(如Spring Cloud)替代專有中間件,降低對廠商的依賴;
  • 敏捷性:支持獨立發布與彈性擴展,例如促銷期間單獨擴容訂單服務。

15.3 SOA的參考架構

IBM的Websphere業務集成參考架構(如圖15-2所示,以下稱參考架構)是典型的以服務為中心的企業集成架構,接下來的討論都將以此參考架構為背景進行。

以服務為中心的企業集成采用“關注點分離(Separation of Concern)”的方法規劃企業集成中的各種架構元素,同時從服務視角規劃每種架構元素提供的服務,以及服務如何被組合在一起完成某種類型的集成。這里架構元素提供的服務既包括狹義的服務(WSDL描述),也包括廣義的服務(某種能力)。從服務為中心的視角來看,企業集成的架構(如圖15-2所示)可劃分為6大類。
(1)業務邏輯服務(Business Logic Service):包括用于實現業務邏輯的服務和執行業務邏輯的能力,其中包括業務應用服務(Business Application Service)、業務伙伴服務(PartnerService)以及應用和信息資產(Application and Information asset)。
(2)**控制服務(Control Service)😗*包括實現人(People)、流程(Process)和信息(Infor-mation)集成的服務,以及執行這些集成邏輯的能力。
(3)連接服務(Connectivity Service):通過提供企業服務總線提供分布在各種架構元素中服務間的連接性。
(4)業務創新和優化服務(Business Innovation and Optimization Service):用于監控業務系統運行時服務的業務性能,并通過及時了解到的業務性能和變化,采取措施適應變化的市場。
(5)開發服務(Development Service):貫徹整個軟件開發生命周期的開發平臺,從需求分析,到建模、設計、開發、測試和維護等全面的工具支持。
(6)IT服務管理(IT Service Management):支持業務系統運行的各種基礎設施管理能力或服務,如安全服務、目錄服務、系統管理和資源虛擬化。
在這里插入圖片描述

1. 連接服務——企業服務總線(ESB)

ESB是消息中間件的發展,以“總線”模式簡化應用集成拓撲,基于開放標準支持服務間動態互聯互通,核心特征包括:

  • 服務元數據描述與注冊管理;
  • 數據傳遞、轉換及同步/異步等交互模式支持;
  • 服務發現、路由、匹配與選擇(解耦請求者和提供者);
  • 高級能力:安全支持、服務質量保證、可管理性、負載平衡等。

ESB是架構模式(非特定技術/產品),需工具和運行時支持(如IBM的WebSphere ESB、WebSphere Message Broker及WebSphere Integration Developer)。
在這里插入圖片描述

2. 業務邏輯服務

用于整合已有和新開發的應用,及外部業務伙伴系統:

  1. 整合已有應用——應用和信息訪問服務
    通過適配器技術將已有系統(遺留應用、數據存儲等)的業務邏輯和數據包裝為ESB支持的格式,包括:

    • 可接入服務(On-Ramp Service):通過單向、請求/應答等模式包裝功能,供ESB訪問;
    • 事件發現服務(Event Detect Service):發布系統變化事件到ESB。
  2. 整合新開發的應用——業務應用服務
    支持新應用的開發和集成,包括:

    • 組件服務:管理可重用組件的運行時容器(如持久化、安全);
    • 核心服務:提供內存管理、負載均衡等運行時支持;
    • 接口服務:支持與其他系統(數據庫、消息系統等)的集成。
  3. 整合客戶和業務伙伴(B2C/B2B)——伙伴服務
    支持與外部系統的異構集成,包括:

    • 社區服務:管理業務伙伴,支持集中式/自我管理;
    • 文檔服務:支持文檔格式交換及流程管理(如RosettaNet、EDI);
    • 協議服務:提供傳輸層支持(認證、路由等)。
3. 控制服務

用于數據整合、流程整合和用戶訪問整合:

  1. 數據整合——信息服務
    解決數據分布性和異構性問題,包括:

    • 聯邦服務:聚合關系型/非關系型數據,數據仍獨立管理;
    • 復制服務:實時復制遠程數據,本地維護副本;
    • 轉換服務:實現數據源到目標格式的轉換;
    • 搜索服務:支持結構化(數據庫)和非結構化(PDF)數據查詢。
  2. 流程整合——流程服務
    將關聯業務活動組成自動化流程,包括:

    • 編排服務:控制流程執行,支持錯誤恢復;
    • 事務服務:保證事務特性(短流程用兩階段提交,長流程用補償);
    • 人工服務:集成人工活動,支持任務分派、授權等。
  3. 用戶訪問整合——交互服務
    確保信息按需傳遞給用戶,包括:

    • 交付服務:支持多設備(桌面、PDA)和方式(圖形、語音)的交互;
    • 體驗服務:通過個性化、單點登錄等增強用戶體驗;
    • 資源服務:管理交互組件(安全配置、界面皮膚等)。
4. 開發服務

支持企業集成的全生命周期開發,需標準工具框架和服務開發技術(如SOMA方法學、SCA/SDO編程模型),按開發者角色分為:

  • 建模服務:構建可視化業務流程模型;
  • 設計服務:分解模型為服務組件并設計開發;
  • 實現服務:部署服務組件到生產環境;
  • 測試服務:支持單元測試和集成測試。
5. 業務創新和優化服務

以業務性能管理(BPM)為核心,支持業務優化,包括:

  • 公共事件框架服務:激發、存儲和分類IT及業務事件;
  • 采集服務:過濾和分析事件,識別關鍵信息;
  • 監控服務:計算和管理關鍵性能指標(KPI),支持業務流程迭代優化。
6. IT服務管理

保障業務流程和服務的安全、高效運行,包括:

  • 安全和目錄服務:企業級用戶認證、授權(如單點登錄);
  • 系統管理和虛擬化服務:管理服務器、存儲、網絡等IT資源,部分服務通過ESB與其他服務集成,滿足性能、安全性等需求。

15.4 SOA主要協議和規范

Web服務是實現SOA服務的核心手段,相關標準多以“WS-*”為前綴,核心協議和規范包括以下幾類:
在這里插入圖片描述

15.4.1 UDDI協議

UDDI(統一描述、發現和集成協議)是一個開放的行業計劃,核心作用是:

  • 幫助商業實體彼此發現,定義互聯網上的交互方式,并在全球注冊體系中共享信息;
  • 作為Web服務集成的體系框架,提供服務描述與發現的標準規范;
  • 基于XML、HTTP、DNS等標準實現,早期采用SOAP規范的早期版本支持跨平臺設計。
15.4.2 WSDL規范

WSDL(Web服務描述語言)是描述Web服務及交互方式的XML語言,由Ariba、IBM、微軟等聯合提出,用于定義服務的三個核心屬性:

  1. 服務功能(提供的操作/方法);
  2. 訪問方式(數據格式和協議);
  3. 服務位置(如URL)。

WSDL文檔結構分為服務接口(Service Interface)和服務實現(Service Implementations),核心元素包括:

  • types:定義服務使用的數據類型(基于XML Schema);
  • message:抽象定義通信消息的數據結構,引用types中定義的類型;
  • operation:描述服務支持的操作(如請求/響應消息對);
  • portType:抽象集合,定義某個訪問入口點支持的操作;
  • binding:將抽象接口(portType)綁定到具體協議和數據格式;
  • port:定義單個服務訪問點(綁定與網絡地址的組合);
  • service:包含一組相關的port,代表服務訪問點的集合。

在這里插入圖片描述

15.4.3 SOAP協議

SOAP是分布式環境中基于XML的信息交換協議,包含四個核心部分:

  1. SOAP封裝(Envelope):定義消息框架,描述內容、發送者、接收者及處理方式;
  2. SOAP編碼規則:規定應用程序數據類型的實例表示方式;
  3. SOAP RPC表示:定義遠程過程調用(RPC)和應答的格式;
  4. SOAP綁定:指定使用底層協議(如HTTP)交換信息的方式。

SOAP設計目標是簡單性和可擴展性,不包含分布式垃圾收集、成批消息傳送等傳統消息系統特性。

15.4.4 REST規范

REST(表述性狀態轉移)是一種軟件架構風格,由Roy Thomas Fielding提出,核心是通過統一標準實現不同系統的信息交互,微服務常以REST API暴露服務。RESTful指遵循REST設計思想的架構或應用,核心概念包括:

  1. 資源(Resource):互聯網中可被訪問的一切事物(如訂單、圖片),通過URI標識;一個資源可對應多個URI,但一個URI僅對應一種資源。
  2. 表述(Representational):描述資源在某一時刻的狀態,常用格式有JSON、XML、HTML等,客戶端與服務端通過表述交互。
  3. 狀態轉移(State Transfer)
    • 應用狀態:客戶端維護的用戶會話信息快照,可結合緩存降低服務端壓力;
    • 資源狀態:服務端保存的資源狀態快照,未被修改時,同一請求返回一致表述;
    • 狀態轉移通過HTTP方法(GET、POST、DELETE等)實現。
  4. 超鏈接:資源表述中嵌入相關資源的URI,便于客戶端發現和訪問其他資源,由客戶端維護,動態生成。

REST是設計風格而非架構,RESTful應用需結合HTTP、JSON、URI等標準,通過HTTP方法操作資源狀態。

15.5 SOA設計的標準要求

15.5.1 文檔標準化

SOA服務需具備平臺獨立的自我描述XML文檔,WSDL是服務描述的標準語言

15.5.2 通信協議標準

服務間通過消息通信,消息格式通常由XML Schema(XSD)定義,支持未知服務提供者環境下的交互,可作為企業內部關鍵商業文檔的交換載體。

15.5.3 應用程序統一登記與集成

企業內部的SOA服務通過登記處(Registry) 維護(類似目錄列表),應用程序通過登記處查找和調用服務,UDDI是服務登記的標準

15.5.4 服務質量(QoS)

每項SOA服務均關聯QoS,涵蓋安全、可靠性、策略等關鍵元素,相關標準由W3C和OASIS等組織制定:

  1. 可靠性

    • 關鍵需求:消息“僅且僅傳送一次”“保證傳送”等;
    • 標準:WS-Reliability和WS-Reliable Messaging(由OASIS管理)。
  2. 安全性

    • 規范內容:認證交換、消息完整性和保密性;
    • 實現:基于現有標準(如SAML),由OASIS制定Web服務安全規范。
  3. 策略

    • 服務提供者通過“策略斷言”定義通信要求(如Kerberos認證);
    • 標準:WS-Policy用于標準化服務間的策略通信。
  4. 控制

    • 用BPEL4WS(或WSBPEL)定義服務組合的業務流程,支持異步通信、數據轉換等。
  5. 管理

    • 標準:WSDM(Web Services for Distributed Management),支持對多環境下服務的統一管理;
    • 其他:WS-Coordination和WS-Transaction規范描述服務協作和事務處理。

15.6 SOA的作用

SOA的核心價值是解決企業“信息孤島”問題,實現系統整合與業務靈活響應,具體作用包括:

  1. 打破信息孤島

    • 傳統EAI方式需為每個應用組合配置“翻譯”(EAI Server),數量隨應用增加呈幾何級增長,難以擴展;
    • SOA通過將應用和資源轉換為標準服務,實現資源共享,減少集成復雜度。
  2. 保護IT投資

    • 支持模塊化添加或更新服務,無需重構現有系統,適配新業務需求;
    • 可將現有應用封裝為服務,通過標準接口(如WSDL)與外部系統交互,降低更換合作伙伴的成本(如零售商快速切換供應商系統)。
  3. 業務與IT同步

    • 決策者可基于業務策略制定流程,直接調用現有服務,無需關注底層集成細節,提升業務響應速度。

15.7 SOA的設計原則

SOA繼承了對象和組件設計的核心原則,以保證服務的靈活性、松耦合和可重用性,關鍵原則包括:

  1. 無狀態:服務不依賴提供者的狀態,避免請求者對提供者狀態的依賴。
  2. 單一實例:避免功能冗余,確保服務功能的唯一性。
  3. 明確定義的接口
    • 接口由WSDL定義,明確公共接口與內部實現的邊界;
    • 服務定義需長期穩定,避免隨意更改;私有數據對使用者不可見。
  4. 自包含和模塊化
    • 服務封裝穩定的業務活動和組件,可獨立部署、版本控制和自我管理。
  5. 粗粒度
    • 服務數量不宜過多,通過消息交互(而非RPC)通信,消息量大但交互頻率低。
  6. 松耦合
    • 使用者僅依賴服務接口,無需關注服務的位置、實現技術或狀態;私有數據對使用者不可見。
  7. 可重用性:服務設計需支持多場景復用。
  8. 互操作性與策略聲明
    • 通過WS-Policy定義服務的安全要求、服務級別等策略,確保交互時的語義兼容性。

15.8 SOA的設計模式

15.8.1 服務注冊表模式

服務注冊表(Service Registry)是SOA設計與運行中的核心組件,主要用于服務的注冊、發現和治理,是策略執行的關鍵節點。

  • 核心功能

    • 支持服務合同、策略和元數據的開發、發布與管理,提供服務注冊和發現的主控制點(策略執行點PEP);
    • 存儲服務的配置、遵從性和約束配置文件,任何支持服務信息檢索的信息庫、數據庫等均可視為注冊表。
  • 廠商分類

    • 純SOA廠商:專注于服務、策略和元數據管理,如Flashline、Infravio、SOA Software等;
    • SOA平臺廠商:將注冊表作為集成套件的一部分(含應用服務器、中間件等),如IBM、Microsoft、Oracle、SAP等。
  • 關鍵標準與集成

    • UDDI(通用描述、發現與集成)是主要注冊標準,但非唯一;多數廠商支持UDDI v3等開放標準,實現與第三方注冊表的集成。
  • SOA治理功能

    1. 服務注冊:服務提供者向注冊表公布服務合同(含身份、位置、方法、策略等),通過權限控制確保服務發布的規范性;
    2. 服務位置:服務消費者通過注冊表查詢符合需求的服務,控制訪問權限和暴露的服務屬性;
    3. 服務綁定:消費者基于檢索到的合同開發代碼,實現與服務的綁定和交互,工具支持自動適配協議和接口;
    4. 配置文件管理:通過配置文件記錄服務在生命周期各階段的參數(如開發、測試環境的機器和參數),支持服務在不同階段的平滑遷移,部分工具含嵌入式工作流,確保流程規范化(如審查、驗證和退回機制)。
15.8.2 企業服務總線模式(ESB)

ESB源于解決傳統點對點集成的復雜性(如高耦合、難管理、復用度低),是支持SOA的基礎軟件平臺,以中間件形式實現服務間的標準化交互。

  • 定義:由中間件技術實現的底層架構,支持異構環境中服務以消息和事件驅動模式交互,并提供服務質量(QoS)和可管理性。

  • 交互過程

    1. 服務請求者生成標準化請求消息,發送至ESB;
    2. ESB根據消息中的服務名/接口名查找目標組件,轉發消息并將結果逆向返回;
    3. 實現“位置透明”和“協議透明”:組件無需了解其他組件的位置和協議,僅通過總線交互,最大限度解耦依賴。

在這里插入圖片描述

  • 核心功能

    1. 位置透明的消息路由和尋址;
    2. 服務注冊與命名管理;
    3. 支持多種消息傳遞范型(如請求/響應、發布/訂閱);
    4. 兼容多種傳輸協議;
    5. 支持多種數據格式及轉換;
    6. 提供日志和監控功能。
  • 優勢

    • 降低系統互連復雜性,支持異步/同步交互;
    • 基于標準技術,提升集成效率并降低成本;
    • 為EAI、B2B提供理想支撐平臺,廠商通常以ESB為基礎,提供包含預制組件、開發工具的完整集成環境。
15.8.3 案例研究:協同企業服務總線(SynchroESB)

在這里插入圖片描述

SynchroESB是基于SOA和ESB的服務整合平臺,由西安協同時光軟件公司與西北工業大學聯合研發,獲國家高新技術產業化計劃支持,其架構分為四層:

  1. 服務總線層:底層基礎,提供ESB核心功能(路由、消息處理等),支撐整個EAI環境;
  2. 數據轉換與適配器層:解決與被集成系統的連接和數據接口問題,實現外部應用接入總線;
  3. 流程整合層:連接不同應用系統實現協同,提供業務流程設計、監控和管理功能;
  4. 用戶交互層:為用戶提供統一信息服務入口,整合內外部分散信息。
  • 核心優勢
    • 支持組件化構建業務流程,采用“粗顆粒”組件編程模型,降低復雜應用開發難度;
    • 基于標準和SOA,實現跨企業的應用與流程集成;
    • 分布式架構+集中式管理,利用現有業務系統快速組建解決方案,事件驅動架構提升業務響應速度。
15.8.4 微服務模式

微服務是SOA的演進,弱化傳統SOA中重量級的ESB,將SOA思想滲透到單個業務系統內部,實現徹底的組件化。

1. 微服務架構概述

微服務將大型應用拆分為多個獨立的小型服務,每個服務可獨立開發、管理和迭代,通過統一接口交互,核心目標是實現敏捷開發與部署。
在這里插入圖片描述

  • 核心優勢
    1. 復雜應用解耦:按業務邏輯拆分,每個服務專注單一功能,降低復雜度,便于小團隊維護;
    2. 獨立開發與部署:服務擁有獨立進程,變更時無需編譯/部署整個系統,測試范圍小,降低生產風險;
    3. 技術選型靈活:去中心化選型,團隊可根據業務需求選擇合適技術棧,架構轉型風險低;
    4. 容錯性強:單個服務故障被隔離,其他服務可通過重試、降級等機制容錯,避免全局癱瘓;
    5. 松耦合與易擴展:服務獨立擴展,按需分配資源,降低水平擴展成本。
2. 微服務架構模式方案

微服務無固定開發模式,需結合業務場景設計,常見模式包括:

  1. 聚合器微服務模式

    • 聚合器調用多個微服務,處理數據后直接展示,或增加業務邏輯后發布為新的組合服務(從消費者轉為提供者);
    • 變種“代理微服務”:客戶端不聚合數據,僅由代理根據需求選擇調用不同服務,負責請求委派和數據轉換;
    • 變種“分支微服務”:允許同時調用兩個獨立的服務鏈,互不影響。
  2. 鏈式微服務模式

    • 服務按鏈傳遞請求(如A→B→C),下游服務合并結果后返回上游,采用同步消息傳遞;
    • 限制:調用鏈不宜過長,避免客戶端長時間阻塞。
  3. 數據共享微服務模式

    • 適用于單體架構向微服務過渡階段,允許強耦合的服務共享緩存和數據庫,解決SQL反規范化導致的數據重復與不一致問題。
  4. 異步消息傳遞微服務模式

    • 用消息隊列(如ActiveMQ、RabbitMQ)替代同步REST API,實現異步業務邏輯,提升響應速度;
    • 注意:可能增加系統復雜性和降低可用性,需謹慎選型。
3. 微服務架構面臨的問題與挑戰
  • 分布式復雜性:服務間需通過RPC或消息通信,服務發現和調用鏈跟蹤難度大;

  • 分區數據庫挑戰:不同服務可能使用獨立數據庫,受CAP原理限制,需放棄強一致性追求最終一致性,對開發人員要求高;

  • 測試難度增加:測試需啟動所有依賴服務,復雜性遠高于單體應用;

  • 運維挑戰:大規模部署中,監控、管理、擴容和分發難度大。

  • 取舍原則:僅當現有架構無法擴展、數據庫增長過快,且團隊具備微服務思維時,收益才大于成本;否則無需盲目采用。

15.9 構建SOA架構時應該注意的問題

15.9.1 原有系統架構中的集成需求

構建企業級SOA架構時,需優先分析和整理原有系統的集成需求,核心原則是重用現有資源而非替換遺留系統,以降低成本和風險。

  • 集成需求的范圍
    集成不僅限于組件化應用的集成,還需考慮以下具體類型:

    • 應用程序集成需求;
    • 終端用戶界面集成需求;
    • 流程集成需求;
    • 已有系統信息集成需求。
  • 關鍵注意事項

    • 不同企業的集成復雜度差異顯著(如航運EDI系統需處理大量數據源,集成需求復雜;部分企業數據源少,需求簡單);
    • 架構師需全面評估所有可能的集成需求,確保架構能適應企業發展;
    • 集成功能應由服務提供,而非依賴特定應用程序,以保證靈活性和可擴展性。
15.9.2 服務粒度的控制以及無狀態服務的設計

服務是SOA的核心元素,構建時需重點關注服務粒度和無狀態設計:

  1. 服務粒度的控制

    • 推薦原則:外部暴露的服務采用粗粒度接口,內部服務可使用細粒度接口。
      • 粗粒度接口:對應服務的完整執行(如網上商店的“提交購買表單”),保證外部請求者以一致方式使用服務,降低交互模式的易變性;
      • 細粒度接口:實現粗粒度服務的內部操作(如“創建購買記錄”“更新數據庫”),提供靈活性但需避免直接暴露給外部(避免請求者難以適應頻繁變化)。
    • 實現方式:通過BPEL將細粒度操作組合為粗粒度服務接口,平衡靈活性與一致性。
  2. 無狀態服務的設計

    • 核心要求:服務應是獨立、自包含的請求,不依賴前序請求的狀態或其他服務的上下文,即“無狀態”。若存在依賴關系,建議定義為業務流程(BPEL)。
    • 實現機制
      • 推薦使用無狀態Session Bean實現粗粒度服務,通過Web Service技術暴露為外部可調用的服務(將Session Facade模型轉化為EJB的Web服務端點);
      • 優勢
        • 利用現有EJB組件的業務邏輯,減少重復開發;
        • EJB容器自動提供并發支持(串行化對Bean實例的請求)、安全與事務管理(無需手動編寫相關代碼);
        • 支持集群和資源池化,提升系統可伸縮性和可靠性,應對高負載。

15.10 SOA實施的過程

15.10.1 選擇SOA解決方案

選擇合適的解決方案是SOA實施成功的前提,需從以下三方面考量:

  1. 全局規劃

    • 全面評估現有系統:明確可復用資源、需改造部分、新增系統需求及預算;
    • 分階段選擇工具和技術:根據實施步驟(如先改造某系統)匹配產品;
    • 邊學習邊實踐:開發過程中積累經驗,逐步優化。
  2. 結合企業自身需求

    • SOA的價值(如業務流程優化、創新)隨時間逐步體現,前期投資需著眼長期效益;
    • 實施進度和資金投入取決于企業IT應用沉淀(如遺留系統數量)和目標層次(如基礎集成 vs 業務創新)。
  3. 技術考察

    • 平臺選擇:優先考慮開放性和對標準的支持(如兼容WSDL、SOAP等);
    • 實施方法:參考六大要素——業務戰略和流程、基礎架構、構建模塊、項目和應用、成本和效益、規劃和管理;
    • 供應商選擇:評估產品是否匹配需求、成功案例、客戶評價及專業服務能力(如現狀分析、建設性建議)。
15.10.2 業務流程分析

業務流程分析是SOA實施的核心環節,包括建立服務模型和業務流程:

  1. 建立服務模型
    通過三種方法發現和驗證服務候選者,形成服務目錄:

    • 自頂向下分解法

      • 從端到端業務流程入手,逐層分解至最小業務活動,結合業務組件模型(按職責劃分業務領域、組件)確定服務候選者;
      • 進行變化分析,區分易變與穩定部分,確保架構適應未來變化,補充新發現的服務候選者。
    • 業務目標分析法(目標服務建模)

      • 從企業業務目標出發,分解為子目標,再分派給服務實現,形成“目標服務樹”,確保每個服務可回溯到具體業務目標(基于關鍵性能指標分析)。
    • 自底向上分析法(遺留資產分析)

      • 梳理已有系統(如遺留應用、套裝軟件)的功能模塊,發現重復或可復用的模塊,包裝為服務;
      • 分析技術局限性,驗證服務實現的可行性。
  2. 建立業務流程

    • 步驟1:建立業務對象
      業務對象是數據處理的抽象組件,分為三類:

      • 實體業務對象:對應業務中的人、物、概念(如客戶、訂單);
      • 過程業務對象:對應業務處理或工作流程(如訂單處理);
      • 事件業務對象:對應系統操作產生的事件(如訂單提交事件);
      • 價值:提升架構抽象層次,實現知識重用(如復用多貨幣處理對象)。
    • 步驟2:建立服務接口

      • 設計原則:接口包含語義相關的多個操作,避免過粗(少量服務含大量操作)或過細(單個服務含少量操作);
      • 交互模式:優先無狀態接口(請求消息包含所有必要信息,不受調用順序影響),減少依賴;有狀態接口(如會話型)需謹慎使用。
    • 步驟3:建立業務流程

      • 流程定義:指定活動順序,包含輸入、輸出及業務價值(如技術文檔搜索流程);
      • 建模要點:
        • 分解為子流程,明確組件、服務、數據、策略及測量指標;
        • 捕獲正常操作、異常及不同領域需求,使用工具(如IBM Rational Requisite Pro、WebSphere Business Integration Modeler)編碼模型;
        • 定義控制流(連接活動與決策點),決策點基于業務規則(轉換條件)確定流程路線;
        • 復用流程元素(可復用的流程段構件)加速建模,確保模型可被分析員(戰略決策)和開發人員(解決方案實現)理解。

補充

在這里插入圖片描述

在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/95100.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/95100.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/95100.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

centos7中MySQL 5.7.32 到 5.7.44 升級指南:基于官方二進制包的原地替換式升級

目錄前言1. 升級概述1.1 升級背景1.2 升級目的1.3 升級方法概述1.4 升級策略與注意事項2. 升級準備2.1 備份工作2.2 下載目標版本2.3 停止 MySQL 服務3. 替換二進制文件3.1 解壓官方二進制包3.2 替換核心二進制文件3.3 更新共享庫4. 執行升級并驗證4.1 啟動 MySQL 服務4.2 監控…

數學七夕花禮(MATLAB版)

前言參考的視頻在抖音,電腦版的抖音一直登錄不了,用手機分享的鏈接如下所示。4.35 Iv.FH yTl:/ 04/04 復制打開抖音👀數學送的七夕花禮,記得查收噢.# 七夕花禮請查收 ... https://v.douyin.com/H-YpOJCyQyg/rho4sin(8theta)公式&a…

LeetCode - 21. 合并兩個有序鏈表

題目 21. 合并兩個有序鏈表 思路 我會采用雙指針的方法,同時遍歷兩個鏈表,比較當前節點的值,將較小的節點添加到結果鏈表中。 具體思路是這樣的: 首先創建一個啞節點(dummy node)作為合并后鏈表的頭部,這樣可以簡…

ES01-環境安裝

ES01-環境安裝 文章目錄ES01-環境安裝1-參考網址2-知識總結1-參考網址 elasticsearch官網地址:https://www.elastic.co/安裝elasticsearch9.0.0參考:https://zhuanlan.zhihu.com/p/1920780524991017021安裝elasticsearch9.0.0參考:http://ww…

UI前端大數據可視化實戰策略:如何設計符合用戶認知的數據可視化界面?

hello寶子們...我們是艾斯視覺擅長ui設計、前端開發、數字孿生、大數據、三維建模、三維動畫10年經驗!希望我的分享能幫助到您!如需幫助可以評論關注私信我們一起探討!致敬感謝感恩!UI前端大數據可視化實戰策略:如何設計符合用戶認知的數據可視化界面?數…

學習python第15天

其實前面學的根本不記得了,小丑.jpg,如果真的面試問到了估計也是一臉懵今日任務:JSON先認識一下JSON和JSONL文件記得之前在面試KIMI的時候,面試官就給我出了JSONL和EXCEL轉換的手撕代碼題,而那個時候,我連什…

Spring框架集成Kakfa的方式

Spring框架集成Kakfa的方式 springboot集成kafka的方式 添加maven依賴 <dependency><groupId>org.mybatis.spring.boot</groupId><artifactId>mybatis-spring-boot-starter</artifactId><version>2.3.0</version> </dependency&g…

【藍橋杯 2024 省 Python B】繳納過路費

【藍橋杯 2024 省 Python B】繳納過路費 藍橋杯專欄&#xff1a;2024 省 Python B 算法競賽&#xff1a;圖論&#xff0c;生成樹&#xff0c;并查集&#xff0c;組合計數&#xff0c;kruskal 最小生成樹&#xff0c;乘法原理 題目鏈接&#xff1a;洛谷 【藍橋杯 2024 省 Python…

個性化導航新體驗:cpolar讓Dashy支持語音控制

文章目錄簡介1. 安裝Dashy2. 安裝cpolar3.配置公網訪問地址4. 固定域名訪問用 cpolar 讓 Dashy 管理個人導航站就是這么簡單&#xff01;三步輕松搞定&#xff1a;在電腦上安裝 Dashy&#xff0c;拖拽添加常用網站&#xff0c;運行 cpolar 生成遠程訪問鏈接。這個方法不僅免費&…

SQL學習記錄

基本的&#xff0c;增、刪&#xff0c;改insert into table_name (列1, 列2,...) VALUES (值1, 值2,....)Delete from 表 where keyvalueupdate 表 set keyvalue,keyvalue where keyvalue查用的最多whereSELECT prod_name, prod_price FROM Products WHERE vend idDLLO1OR ve…

零基礎學C++,函數篇~

C基礎學習&#xff08;DAY_06&#xff09;函數1. 函數的定義與使用2. 函數參數傳遞3. 變量的聲明周期4. 函數的其他特性5. 函數的嵌套與遞歸函數 1. 函數的定義與使用 ? 在設計程序時&#xff0c;如果一段代碼重復進行某種操作或者完成一個特定的功能&#xff0c;就應該將這…

react+vite+ts 組件模板

1.創建項目npm create vitelatest my-app --template react-ts2.配置項目 tsconfig.json{"compilerOptions": {"target": "ES2020","useDefineForClassFields": true,"lib": ["ES2020", "DOM", "D…

C語言 - 輸出參數詳解:從簡單示例到 alloc_chrdev_region

C語言中的輸出參數詳解&#xff1a;以 alloc_chrdev_region 為例 在學習 C 語言函數調用時&#xff0c;我們常常接觸到“輸入參數”&#xff0c;比如把一個數字傳給函數&#xff0c;讓函數幫我們算出結果。但有時候可能會發現&#xff0c;有些函數除了返回值之外&#xff0c;還…

機器視覺學習-day09-圖像矯正

1 仿射變換與透視變換1.1 仿射變換之前在圖像旋轉實驗中已經接觸過仿射變換&#xff0c;仿射變換是一個二維坐標系到另一個二維坐標系的過程&#xff0c;在仿射變換中符合直線的平直性和平行性。1.2 透視變換透視變換是把一個圖像投影到一個新的視平面的過程。在現實世界中&…

杰理ac791獲取之前版本sdk

很慚愧&#xff0c;一個如此簡單的問題卡了這么久&#xff0c;運動戰的本質就是多找線索&#xff0c;多嘗試

基于軸重轉移補償和多軸協調的粘著控制方法研究

基于軸重轉移補償和多軸協調的粘著控制方法研究 1. 論文標題 基于軸重轉移補償和多軸協調的粘著控制方法研究 2. 內容概括 該論文針對重載電力機車在復雜軌面條件下易發生空轉的問題,提出了一種新型粘著控制方法。傳統方法僅考慮單軸粘著利用而忽略軸間關系,本文設計了包…

臺達 PLC 軟件導入 EDS 文件后不能通過 PDO 控制的解決方法

一、功能及注意事項 1.功能說明&#xff1a;通過修改 EDS 文件處理臺達 PLC 軟件導入 EDS 文件后不能通過 PDO 控制的解決方法 2.注意事項&#xff1a;1).此文檔只針對立邁勝 CANopen 通訊一體化電機&#xff1b; 2).EDS 文件可以用記事本打開&#xff1b; 二、EDS 文件修改 IS…

Python庫2——Matplotlib2

上一篇文章主要介紹了Matplotlib庫中的Pyplot模塊中幾大常見圖像的繪制&#xff0c;包括自行修改圖像的屬性&#xff0c;在繪制圖像時會自動創建一個圖形窗口來展現這些圖像。本節內容繼續講講這個&#xff08;Figure&#xff09;圖像窗口即其一些常見用法。 其他python庫鏈接…

AI生成思維導圖和AI生成Excel公式

AI生成思維導圖和AI生成Excel公式 AI 生成思維導圖和 AI 生成 Excel 公式是一個完全免費的 AI 辦公合集網站。 它完全免費&#xff0c;一個網站支持多個實用 AI 辦公功能&#xff0c;包括&#xff1a;免費 AI Excel 公式生成器、輸入 Excel 公式解釋含義、AI Excel 助手、Exc…

java中的VO、DAO、BO、PO、DO、DTO

VO、DAO、BO 等對象在了解這里 po、vo、dao、之前先介紹下 MVC 開發模式M層負責與數據庫打交道&#xff1b;C層負責業務邏輯的編寫&#xff1b;V層負責給用戶展示&#xff08;針對于前后端不分離的項目&#xff0c;不分離項目那種編寫模版的方式&#xff0c;理解V的概念更直觀&…