論面向服務架構(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
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/3086.html
標籤:架構設計
上一篇:論MVC架構設計模式分析
下一篇:認證系統設計經典會話
