趙鑫
摘 要:SOA是一種對未來軟件架構設計有巨大影響的技術。文章從軟件體系結構角度出發,深入分析了SOA的產生背景,什么是SOA,SOA的五個特征,SOA包括的角色、操作、構件,以及使用SOA架構的優勢。最后對SOA進行了總結論述。
關鍵詞:SOA;面向服務;架構
引言
軟件開發經歷了不同體系結構的變革,從傳統軟件體系結構階段到基于組件的體系結構階段,再到面向服務的體系結構階段。隨著軟件應用規模的逐步擴大,應用層次的不斷深入,軟件開發的難度、復雜度也隨之增加。如何盡可能多得利用已有的資源而增加修改,提高軟件的可重用性,減少開發成本,成為了亟待解決的問題。
1.SOA的產生背景
隨著網絡的普及化,越來越破功需要將現有多個應用系統集成,以便實現更強的信息處理功能。如電子商務的供應鏈,智能交通、電子政務、數字地球等。而傳統的三層體系結構雖有力的提供了一種分布式系統的解決方案,實現了一種緊耦合的分布式系統,組成了一個自成體系的單個應用軟件,而如何將現有的多個應用軟件,通過網絡將其整合成一個集成系統,早期的技術是無法解決的,所以迫于亟待解決的多應用集成問題,SOA是當前 最理想的解決方案。SOA就是為了適應復雜多變的應用環境,用一種不同于以往的方式來快速、簡便的開發企業應用系統,為企業在激烈的市場競爭中搶得先機。
2.什么是面向服務的體系結構SOA
SOA(Service-Oriented Architecture),即面向服務的架構,是一個組件模型,它將應用程序的不同功能單元(稱為服務)通過這些服務之間定義良好的接口和契約聯系起來。接口是采用中立的方式進行定義的,它應該獨立于實現服務的硬件平臺、操作系統和編程語言。這使得構建在各種這樣的系統中的服務可以以一種統一和通用的方式進行交互。
SOA是一種粗粒度、松耦合服務架構,服務之間通過簡單、精確定義接口進行通訊,不涉及底層編程接口和通訊模型。SOA的關鍵是“服務”的概念,W3C將服務定義為:“服務提供者完成一組工作,為服務使用者交付所需的最終結果。最終結果通常會使使用者的狀態發生變化,但也可能使提供者的狀態改變,或者雙方都產生變化”。
3.SOA的特征
SOA具有以下五個特征:
(1)可重用
一個服務創建后能用于多個應用和業務流程。
(2)松耦合
服務請求者到服務提供者的綁定與服務之間應該是松耦合的。因此,服務請求者不需要知道服務提供者實現的技術細節,例如程序語言、底層平臺等等。
(3)明確定義的接口
服務交互必須是明確定義的。Web服務描述語言(Web Services Description Language,WSDL)是用于描述服務請求者所要求的綁定到服務提供者的細節。WSDL不包括服務實現的任何技術細節。服務請求者不知道也不關心服務究竟是由哪種程序設計語言編寫的。
(4)無狀態的服務設計
服務應該是獨立的、自包含的請求,在實現時它不需要獲取從一個請求到另一個請求的信息或狀態。服務不應該依賴于其他服務的上下文和狀態。當產生依賴時,它們可以定義成通用業務流程、函數和 數據模型。
(5)基于開放標準
當前SOA的實現形式是Web服務,基于的是公開的W3C及其他公認標準.采用第一代Web服務定義的SOAP、WSDL和UDDI以及第二代Web服務來實現SOA。
4.SOA包括的元素
面向服務的體系結構中的角色包括服務請求者、服務提供者、服務注冊中心。服務請求者是一個應用程序、一個軟件模塊或需要一個服務的另一個服務。它發起對注冊中心中的服務的查詢,通過傳輸綁定服務,并且執行服務功能。服務請求者根據接口契約來執行服務。服務提供者是一個可通過網絡尋址的實體,它接受和執行來自請求者的請求。它將自己的服務和接口契約發布到服務注冊中心,以便服務請求者可以發現和訪問該服務。服務注冊中心是服務發現的支持者。它包含一個可用服務的存儲庫,并允許感興趣的服務請求者查找服務提供者接口。
面向服務的體系結構中的每個實體都扮演著服務提供者、請求者和注冊中心這三種角色中的某一種(或多種)。面向服務的體系結構中的操作包括發布、查找和綁定。
發布:為了使服務可訪問.需要發布服務描述以使服務請求者可以發現和調用它。
查找:服務請求者定位服務.方法是查詢服務注冊中心來找到滿足其標準的服務。
綁定和調用:在檢索完服務描述之后,服務請求者繼續根據服務描述中的信息來調用服務。
面向服務的體系結構中的構件包括服務和服務描述。服務可以通過已發布接口使用服務,并且允許服務使用者調用服務。服務描述指定服務使用者與服務提供者交互的方式。它指定來自服務的請求和響應的格式。服務描述可以指定一組前提條件、后置條件和/或服務質量(Q0S)級別。
5.面向服務SOA架構的優勢
SOA不同于現有的分布式技術之處在于大多數軟件商接受它并有可以實現SOA的平臺或應用程序。SOA伴隨著無處不在的標準,為企業的現有資產或投資帶來了更好的重用性。SOA能夠在最新的和現有的應用之上創建應用;SOA能夠使客戶或服務消費者免予服務實現的改變所帶來的影響;SOA能夠升級單個服務或服務消費者而無須重寫整個應用,也無須保留已經不再適用于新需求的現有系統。總而言之,SOA以借助現有的應用來組合產生新服務的敏捷方式,提供給企業更好的靈活性來構建應用程序和業務流程。其優勢主要體現在如下幾個方面:(1)利用現有的資產;(2)更易于集成和管理復雜性;(3)更快地整合現實;(4)減少成本和增加重用。
SOA業務流程是由一系列業務服務組成的,可以更輕松地創建、修改和管理它來滿足不同時期的需要。SOA能夠在最新的和現有的應用之上創建應用;SOA能夠使客戶或服務消費者免予服務實現的改變所帶來的影響;SOA能夠升級單個服務或服務消費者而無需重寫整個應用,也無需保留已經不再適用于新需求的現有系統。總而言之,SOA以借助現有的應用來組合產生新服務的敏捷方式,提供給企業更好的靈活性來構建應用程序和業務流程。
結束語
SOA作為一種超技術的理念,需通過對具體技術的包容來體現它無所不包無所不通,唯一不變的就是其核心理念。基于SOA的企業業務系統不是一次建成的,SOA不僅僅是軟件系統的一種體系架構思想,它也正成為一種文化。
參考文獻
[1] 張春霞 李旭東 徐濤.淺談面向服務架構_SOA_的核心理念[J].計算機系統應用,2010.
[2] 尚建嘎.軟件系體結構與設計實用教程[M].科學出版社2016.
[3] 陳旺.面向服務架構SOA[J].IT技術應用,2013.
[4] 張一清.面向服務的軟件體系架構SOA[J].福建電腦,2007.
(作者單位:河南大學軟件學院)