論面向服務架構(SOA)設計及其應用


論面向服務架構(SOA)設計及其應用

馬旺旺

(石家庄鐵道大學,河北省石家庄市,050000)

摘 要 SOA分層架構的核心思想是運用 SOA 理論將現有的信息系統分解成多個獨立的粗粒度 Web 服務 , 信息的集成即變成 Web 服務之間的交互 , 從而隱藏了原信息系統的位置和實現技術。面向服務的架構(SOA)是一個組件模型,它將應用程序的不同功能單元(稱為服務)進行拆分,並通過這些服務之間定義良好的接口和協議聯系起來。本文將從定義、基礎結構、六大基本要素、三大角色、五大特性和自身實踐相結合具體闡述面向服務框架的設計與應用。

關鍵詞:面向服務;架構;軟件;SOA

 

On the design and application of SOA

Ma Wangwang

(Shijiazhuang Tiedao University,Shijiazhuang City, Hebei Province,050000)

Abstract:The core idea of SOA layered architecture is to use SOA theory to decompose the existing information system into several independent coarse-grained web services, and the integration of information becomes the interaction between web services, thus hiding the location and implementation technology of the original information system.Service Oriented Architecture (SOA) is a component model, which divides the different functional units of an application (called services) and links them through well-defined interfaces and protocols between these services. This paper will elaborate the design and application of service-oriented framework from the definition, infrastructure, six basic elements and its own practice.

Key word:  Service oriented;  framework;  software;  SOA

 

0引言

傳統的架構,軟件包是被編寫為獨立的(self-contained)軟件,即在一個完整的軟件包中將許多應用程序功能整合在一起。實現整合應用程序功能的代碼通常與功能本身的代碼混合在一起。更改一部分代碼將對使用該代碼的代碼具有重大影響,這會造成系統的復雜性,並增加維護系統的成本。而且還使重新使用應用程序功能變得較困難,因為這些功能不是為了重新使用而打的包。SOA旨在將單個應用程序功能彼此分開,以便這些功能可以單獨用作單個的應用程序功能或“組件”。這些組件可以用於在企業內部創建各種其他的應用程序,或者如有需要,對外向合作伙伴公開,以便用於合作伙伴的應用程序。

1詳細介紹

面向服務的體系結構(SOA)是一個組件模型,它將應用程序的不同功能單元(稱為服務)通過這些服務之間定義良好的接口和契約聯系起來。接口是采用中立的方式進行定義的,它應該獨立於實現服務的硬件平台、操作系統和編程語言。這使得構建在各種這樣的系統中的服務可以以一種統一和通用的方式進行交互。

這種具有中立的接口定義(沒有強制綁定到特定的實現上)的特征稱為服務之間的松耦合。松耦合系統的好處有兩點,一點是它的靈活性,另一點是,當組成整個應用程序的每個服務的內部結構和實現逐漸地發生改變時,它能夠繼續存在。而另一方面,緊耦合意味着應用程序的不同組件之間的接口與其功能和結構是緊密相連的,因而當需要對部分或整個應用程序進行某種形式的更改時,它們就顯得非常脆弱。

對松耦合系統的需要來源於業務應用程序需要,根據業務的需要變得更加靈活,以適應不斷變化的環境,比如經常改變的政策、業務級別、業務重點、合作伙伴關系、行業地位以及其他與業務有關的因素,這些因素甚至會影響業務的性質。我們稱能夠靈活地適應環境變化的業務為按需業務,在按需業務中,一旦需要,就可以對完成或執行任務的方式進行必要的更改。

2基礎結構

一,SOAP, WSDL, UDDI

WSDL,UDDI和SOAP是SOA基礎的基礎部件。WSDL用來描述服務;UDDI用來注冊和查找服務;而SOAP,作為傳輸層,用來在消費者和服務提供者之間傳送消息。SOAP是Web服務的默認機制,其他的技術為可以服務實現其他類型的綁定。一個消費者可以在UDDI注冊表(registry)查找服務,取得服務的WSDL描述,然后通過SOAP來調用服務。

二,WS-I Basic Profile

WS-I Basic Profile,由Web服務互用性組織(Web Services Interoperability Organization)提供,是SOA服務測試與互用性所需要的核心構件。服務提供者可以使用Basic Profile測試程序來測試服務在不同平台和技術上的互用性。

三,J2EE 和 .Net

盡管J2EE和.NET平台是開發SOA應用程序常用的平台,但SOA不僅限於此。像J2EE這類平台,不僅為開發者自然而然地參與到SOA中來提供了一個平台,還通過他們內在的特性,將可擴展性,可靠性,可用性以及性能引入了SOA世界。新的規范,例如 JAXB(Java API for XML Binding),用於將XML文檔定位到Java類;JAXR(Java API for XML Registry)用來規范對UDDI注冊表(registry)的操作;XML-RPC(Java API for XML-based Remote Procedure Call)在J2EE1.4中用來調用遠程服務,這使得開發和部署可移植於標准J2EE容器的Web服務變得容易,與此同時,實現了跨平台(如.NET)的服務互用。

3六大關鍵要素

一個SOA系統要具有以下六大關鍵要素——基礎設施、已有資源、企業服務、流程模型、服務展現和系統工具(包括開發、測試和管理工具等)。在基礎設施和已有資源都已具備的基礎上,開發和構建一個SOA系統要包括以下幾方面的工作:

一,首先需要設計開發出符合標准的服務,這是整個SOA系統最核心的要素。

二,基於標准服務,借助流程編排工具和建模工具,組織構造流程,生成流程模型,更好地滿足業務需求。

三,實際構建和開發SOA系統,具體包括服務和應用程序的開發,數據的訪問、處理和管理,及對服務各種形式的展現等。

4三種角色

SOA架構中有三種角色:

服務提供者:服務提供者注冊自己的服務,注冊信息包含系統信息,服務名稱,服務的ip和端口號,服務請求的url, 服務的權重等

服務注冊中心:注冊中心提供注冊服務的中心存儲,和向服務消費者push服務變更通知

服務請求者:服務消費者在啟動時獲取所需服務注冊信息(根據系統名稱+服務名稱),將服務注冊信息緩存在本地,監聽服務信息的變更,更新本地的緩存。服務消費者根據本地緩存的服務提供者信息負載,來轉發請求。對服務提供方提供心跳檢測。

5 五大特性

服務自治:服務自治原則要求單個服務在底層邏輯控制方面要盡可能是獨立和自包含的,服務不依賴於訪問它的客戶端或其他服務。服務可以獨立的進行部署以及實施版本策略和安全策略。

依賴開放的標准:SOA的一個目標是讓不同廠商開發的服務能夠進行互相操作,這樣就需要依賴於一個開放的被不同廠商普遍接受的標准。SOA采用基於消息的通訊方式,從消息交換的角度來想就是要求消息自身標准化,在此方法SOAP(簡單對象訪問協議)消息的采用對消息承載的內容提供了一致性的表示。另外SOA真正的被用於企業級應用時,還需要考慮一下額外因素,比如消息安全、可靠傳輸、事務的支持等。要實現真正意義上的跨平台操作,實現這些特性的互操作方式同樣需要一種開放的標准定下來。在這方面一些主流的IT廠商比如:微軟、IBM和BEA等聯合一些國際組織如:W3C、OASIS、WS-1等,對標准和規范的指定做出了極大的貢獻,這些標准和規范定義在Web Service規范中。

支持跨平台:能夠讓不同平台進行通訊是SOA產生的最主要動機。正因為SOA采用的開放的標准,才使跨平台得以實現。跨平台最大的好處就是促進了異質系統的集成,使Java應用能夠調用.NET平台暴露出來的服務接口。此外使用標准的服務兌現有邏輯的封裝,實現了對歷史遺留應用的重用,也給企業提供了一種節約成本的捷徑。

組合和復用:按照提供功能大小的差異,不同的服務具有不同的粒度。我們可以把提供具有最小粒度功能實現的服務成為原子服務,多個原子服務可以通過合理的組合,編排成一個新的聚合型服務。功能的復用是我軟件設計思想不變的主題,SOA鼓勵創建具有高復用的服務。服務的組合性另一方面也促進了服務的重用。為了提高服務的復用程度,SOA甚至強調了創建與場景無關的服務,這樣同樣的服務就在不同場景的解決方案中使用了。

松耦合:SOA通過契約實現客戶端對服務的調用,雙方只需要采用能夠匹配的契約就能保證正常的交往。基於契約的服務交往,又進一步促進了服務的自治,只要契約不發生改變,服務本身的實現就可以自由的變化,因此這樣的耦合度是極低的。

6自身實踐

在我構建SOA系統時,遇到的問題主要是如何打通一個系統與一個系統之間同一用戶之間信息共享的問題,本來是同一用戶,但是在每個系統之間都有自己的一張“身份證”,互相獨立。就像生活中我們經常遇到的一個提示一樣:“ QQ和微信是獨立的體系,賬號信息不互通。”解決方法就是根據信息特點,建立統一的管理平台。統一認證在實際的開發過程中也尤為重要,統一認證的實現是基於SOA的架構。為了保證軟件的信息安全,我們往往設定有些界面只有用戶登錄后才能訪問,這必然就會帶來每次身份認證的繁瑣操作,不僅浪費時間而且容易遺忘密碼,解決方法就是將身份驗證這一功能模塊發布成一種服務,其他的軟件可以通過UUDI查找該服務,然后將該服務與服務的實現進行綁定。

5總結

服務導向架構並不是一種全新的解決方案;相反,SOA是技術與架構的自然進化。系統架構一直在不斷進步,與商業保持高度一致。系統設計師與商家很早就認識到將技術與商業流程相協調的重要性,包括充分應用並合理化技術資源,以及為商業提供更好的支持。

 

參考文獻:

[1] 百度百科,SOA (面向服務的架構),https://baike.baidu.com/item/SOA/2140650

[2] SOA(Service-Oriented Architecture)面向服務的分布式架構詳解,持.之.以.恆,https://blog.csdn.net/zl834205311/article/details/80333531

[3] SOA面向服務架構詳解,順其自然~,https://blog.csdn.net/fuhanghang/article/details/83961606

[4] 淺談SOA,禾碼大叔,https://www.cnblogs.com/jun-ma/p/5341027.html

[5] SOA系列之基本特性,邵鴻鑫,https://blog.csdn.net/u010926964/article/details/48734265

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM