目錄
- 1 SOA簡介
- 2 為什麼選擇SOA?
- 3 SOA的優勢
- 1 SOA簡介
- 2 為什麼選擇SOA?
- 3 SOA的優勢
SOA - SOA簡介
面向服務的體系結構(Service-OrientedArchitecture,SOA)是一個元件模型,它将應用程式的不同功能單元(稱為服務)通過這些服務之間定義良好的接口和契約聯系起來。
SOA技術已存在超過20年的時間,但一直未得到廣泛的應用。随着Web服務的出現逐漸被人們接納,SOA終于迎來了自己的“春天”。
對SOA的需要來源于需要使業務IT系統變得更加靈活,以适應業務中的改變。通過允許強定義的關系和依然靈活的特定實作,IT系統既可以利用現有系統的功能,又可以準備在以後做一些改變來滿足它們之間互動的需要。
就開發體系結構方面而言,SOA是将來的一個發展趨勢。SOA将資料和資訊作為服務公開的模型使其成為了一個非常強大的概念,與目前的應用程式建構塊範例截然不同。
SOA定義
SOA是指為了解決在Internet環境下業務內建的需要,通過連接配接能完成特定任務的獨立功能實體實作的一種軟體系統架構。從這個定義中前提有下面兩點:
1)軟體系統架構: SOA不是一種語言,也不是一種具體的技術而是一種軟體系統架構,它嘗試給出在特定環境下推薦采用的一種架構,從這個角度上來說,它更像一種模式(Pattern)。是以它與很多已有的軟體技術比如面向對象技術,是互補的而非互斥的。它們分别面向不同的應用場景,用來滿足不同的特定需求。
2)SOA的使用範圍:需求決定同時也限制功能。SOA并不是包治百病的萬靈單,它最主要的應用場合在于解決在Internet環境下的不同商業應用之間的業務內建問題。在下面我們會詳細讨論Internet的各種特點是如何決定了SOA的特點,這裡我們隻需要先簡單回顧一下Internet環境差別于Intranet環境的幾個特點:a)大量異構系統并存,計算機硬體工作方式不同,作業系統不同、程式設計語言也不同;b)大量、頻繁的資料傳輸仍然速度緩慢并且不穩定;c)版本更新無法完成,我們根本就無法知道網際網路上有哪些機器直接或者間接的使用某個服務。
基于上面的前提,下面就讓我們一起看一下SOA的3個基本特征:
1.獨立的功能實體
在Internet這樣松散的使用環境中,任何通路請求都有可能出錯,是以任何企圖通過Internet進行控制的結構都會面臨嚴重的穩定性問題。SOA非常強調架構中提供服務的功能實體的完全獨立自主的能力。傳統的元件技術,如.NET Remoting, EJB,COM或者CORBA,都需要有一個宿主(Host或者Server)來存放和管理這些功能實體;當這些宿主運作結束時這些元件的壽命也随之結束。這樣當宿主本身或者其它功能部分出現問題的時候,在該宿主上運作的其它應用服務就會受到影響。
SOA架構中非常強調實體自我管理和恢複能力。常見的用來進行自我恢複的技術,比如事務處理(Transaction),消息隊列(Message Queue),備援部署(Redundant Deployment)和叢集系統(Cluster)在SOA中都起到至關重要的作用。
2.大資料量低頻率通路
對于.NET Remoting,EJB或者XML-RPC這些傳統的分布式計算模型而言,他們的服務提供都是通過函數調用的方式進行的,一個功能的完成往往需要通過用戶端和伺服器來回很多次函數調用才能完成。在Intranet的環境下,這些調用給系統的響應速度和穩定性帶來的影響都可以忽略不計,但是在Internet環境下這些因素往往是決定整個系統是否能正常工作的一個關鍵決定因素。是以SOA系統推薦采用大資料量的方式一次性進行資訊交換。
3.基于文本的消息傳遞
由于Internet中大量異構系統的存在決定了SOA系統必須采用基于文本而非二進制的消息傳遞方式。在COM、CORBA這些傳統的元件模型中,從伺服器端傳往用戶端的是一個二進制編碼的對象,在用戶端通過調用這個對象的方法來完成某些功能;但是在Internet環境下,不同語言,不同平台對資料、甚至是一些基本資料類型定義不同,給不同的服務之間傳遞對象帶來的很大困難。由于基于文本的消息本身是不包含任何處理邏輯和資料類型的,是以服務間隻傳遞文本,對資料的處理依賴于接收端的方式可以幫忙繞過相容性這個的大泥坑。
此外,對于一個服務來說,Internet與區域網路最大的一個差別就是在Internet上的版本管理極其困難,傳統軟體采用的更新方式在這種松散的分布式環境中幾乎無法進行。采用基于文本的消息傳遞方式,資料處理端可以隻選擇性的處理自己了解的那部分資料,而忽略其它的資料,進而得到的非常理想的相容性。
每一項新技術都是在一些舊的技術基礎上發展出來的。正如XML根本思想來自于在60年代就已經出現的早期标記性語言一樣,SOA雖然這兩年才出現,但是它所表達的觀念應該說在網絡這種分布式系統結構出現不久就已經廣泛應用了。例如我們最熟悉的HTTP協定就是一個非常典型的SOA架構設計。HTTP協定的工作過程簡單叙述如下:
1)用戶端,通常是通過浏覽器,向伺服器端以文本的方式發送一個請求,索取一個Web頁面;
2)伺服器端接收到這個請求之後,根據請求的内容進行處理并且傳回一個符合HTML文法的文本;
3)用戶端接收到伺服器端的響應文本後調用本地的程式,通常還是浏覽器,把傳回的HTML文本的内容展現出來。
下面來看一下HTTP協定如何滿足了SOA的特點:
- 獨立的功能實體:作為伺服器端的Web伺服器是絕對不會因為用戶端的狀況變化而改變的,它總是非常穩定的按照自己的内在邏輯運作,響應外部的請求,管理自己的資源和資料。這裡一個非常好的例子就是Web伺服器對緩存(Cache)的處理,很多Web伺服器為了提高性能都或多或少的對資料進行緩存,但是緩存資料、重新整理資料這些于用戶端完全無關的操作完全由伺服器端獨立完成,完全不受用戶端的影響。
- 大資料量低頻率通路:對于一個HTTP請求來說,用戶端與伺服器之間通路的邊界非常簡單:就是一個請求,一個響應,沒有任何其它的資訊往返。無論用戶端申請的網頁上除了文字之外還有什麼資訊,對于用戶端來說,它發出的請求隻是簡單的告訴Web伺服器它所需要的網頁的位置;至于為了生成這個網頁,伺服器端是否需要通路資料庫,執行Servlet或者其它的CGI程式對用戶端而言,都是完全透明的。
- 基于文本的消息傳遞:迄今為止相容性最好的系統可能就是HTTP協定支撐的大部分的web應用了,我們可以在Windows平台下用IE檢視網際網路上一個Linux+Apache伺服器上的由Perl腳本自動生成的網頁。這裡的關鍵就是所有内容都是以格式化的文本方式傳遞的,不管Perl腳本如何執行,隻要它的輸出是符合HTML規範的網頁,就可以被用戶端的浏覽器解釋。而由于不同的作業系統上對于相同的HTML的解釋遵循相同的規範,是以不同作業系統下仍然能夠看到一緻的使用者界面。
我們上面基本描述了SOA作為一種軟體架構有哪些特點,下面讓我們一起看看Web Service與SOA的關系。
SOA與Web Service
Web Service是就現在而言最适合實作SOA的一些技術的集合,事實上最近SOA的火爆在很大程度上歸功于Web Service标準的成熟和應用的普及為廣泛的實作SOA架構提供了基礎。下面讓我們看看Web Service中的各種協定是如何互相工作來滿足SOA所需的特點的:
- 獨立的功能實體:通過UDDI的目錄查找,我們可以動态改變一個服務的提供方而無需影響用戶端的應用程式配置。所有的通路都通過SOAP通路進行,隻要WSDL接口封裝良好,外界用戶端是根本沒有辦法直接通路伺服器端的資料的。
- 大資料量低頻率通路:通過使用WSDL和基于文本(Literal)的SOAP請求,我們可以實作能一次性接收大量資料的接口。這裡需要着重指出的是SOAP請求分文本方式和遠端調用(RPC)兩種方式,正如上文已經提到的,采用遠端調用方式的SOAP請求并不符合這點要求。但是令人遺憾的是現有的大多數SOAP請求采用的仍然是遠端調用(RPC)方式,在某些平台上,例如IBM WebSphere的早期版本,甚至沒有提供文本方式的SOAP支援。
- 基于文本的消息傳遞:Web Service所有的通訊是通過SOAP進行的,而SOAP是基于XML的,不同版本之間可以使用不同的DTD或者XML Schema加以辨識和區分。是以隻需要我們為不同的版本提供不同的處理就可以輕松實作版本控制的目标。
SOA對于軟體架構設計的影響
無論您現在的系統是否牽涉到基于Internet的業務內建,采用SOA推薦的架構都對提高您系統的擴充性有很大幫助,下面是在系統中引入SOA後需要在軟體架構方面做出的改變:
- 使用基于文本方式的SOAP調用,擺脫遠端調用中出現的函數參數類型等與資料無關的資訊,保證所有SOAP傳遞的都是有意義的商業資料。依賴于Schema,而不是類定義對這些資料進行解釋。
- 傳統的三層Web應用将可能變成四層結構:傳統意義上的商業邏輯層将被進一步劃分為存放每個會話(Session)資訊的客戶邏輯層和與狀态無關Sateless的SOA層。
-
SOA - 為什麼選擇SOA?
不同種類的作業系統,應用軟體,系統軟體和應用基礎結構(application infrastructure)互相交織,這便是IT企業的現狀。一些現存的應用程式被用來處理目前的業務流程(business processes),是以從頭建立一個新的基礎環境是不可能的。企業應該能對業務的變化做出快速的反應,利用對現有的應用程式和應用基礎結構(application infrastructure)的投資來解決新的業務需求,為客戶,商業夥伴以及供應商提供新的互動管道,并呈現一個可以支援有機業務(organic business)的構架。SOA憑借其松耦合的特性,使得企業可以按照子產品化的方式來添加新服務或更新現有服務,以解決新的業務需要,提供選擇進而可以通過不同的管道提供服務,并可以把企業現有的或已有的應用作為服務, 進而保護了現有的IT基礎建設投資。
如圖1的例子所示,一個使用SOA的企業,可以使用一組現有的應用來建立一個供應鍊複合應用(supply chain composite application),這些現有的應用通過标準接口來提供功能。
服務架構
服務架構
為了實作SOA,企業需要一個服務架構,圖2顯示了一個例子:
圖2
在圖2中, 服務消費者(service consumer)可以通過發送消息來調用服務。這些消息由一個服務總線(service bus)轉換後發送給适當的服務實作。這種服務架構可以提供一個業務規則引擎(business rules engine),該引擎容許業務規則被合并在一個服務裡或多個服務裡。這種架構也提供了一個服務管理基礎(service management infrastructure),用來管理服務,類似稽核,清單(billing),日志等功能。此外,該架構給企業提供了靈活的業務流程,更好地處理控制請求(regulatory requirement),例如Sarbanes Oxley(SOX),并且可以在不影響其他服務的情況下更改某項服務。
-
SOA基礎結構
要運作,管理SOA應用程式,企業需要SOA基礎,這是SOA平台的一個部分。SOA基礎必須支援所有的相關标準,和需要的運作時容器。圖3所示的是一個典型的SOA基礎結構。
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)的服務互用。
服務品質
在企業中,關鍵任務系統(mission-critical system,譯注:關鍵任務系統是指如果一個系統的可靠性對于一個組織是至關重要的,那麼該系統就是該企業的關鍵任務系統。比如,電話系統對于一個電話促銷企業來說就是關鍵任務系統,而文字處理系統就不那麼關鍵了。)用來解決進階需求,例如安全性,可靠性,事物。當一個企業開始采用服務架構作為工具來進行開發和部署應用的時候,基本的Web服務規範,像WSDL,SOAP,以及UDDI就不能滿足這些進階需求。正如前面所提到的,這些需求也稱作服務品質(QoS,quality of services)。與QoS相關的衆多規範已經由一些标準化組織(standards bodies)提出,像W3C(World Wide Web Consortium)和OASIS(the Organization for the Advancement of Structured Information Standards)。下面的部分将會讨論一些QoS服務和相關标準。
安全
Web服務安全規範用來保證消息的安全性。該規範主要包括認證交換, 消息完整性和消息保密。該規範吸引人的地方在于它借助現有的安全标準,例如,SAML(as Security Assertion Markup Language)來實作web服務消息的安全。OASIS正緻力于Web服務安全規範的制定。
可靠
在典型的SOA 環境中,服務消費者和服務提供者之間會有幾種不同的文檔在進行交換。具有諸如“僅且僅僅傳送一次”( once-and-only-once delivery),“最多傳送一次”( at-most-once delivery),“重複消息過濾”(duplicate message elimination),“保證消息傳送”(guaranteed message delivery)等特性消息的發送和确認,在關鍵任務系統(mission-critical systems)中變得十分重要。WS-Reliability 和 WS-ReliableMessaging是兩個用來解決此類問題的标準。這些标準現在都由OASIS負責。
政策
服務提供者有時候會要求服務消費者與某種政策通信。比如,服務提供商可能會要求消費者提供Kerberos安全标示,才能取得某項服務。這些要求被定義為政策斷言(policy assertions)。一項政策可能會包含多個斷言。WS-Policy用來标準化服務消費者和服務提供者之間的政策通信。
控制
當企業着手于服務架構時,服務可以用來整合資料倉庫(silos of data),應用程式,以及元件。整合應用意味着例如異步通信,并行處理,資料轉換,以及校正等程序請求必須被标準化。在SOA中,程序是使用一組離散的服務建立的。BPEL4WS 或者 WSBPEL(Web Service Business Process Execution Language)是用來控制這些服務的語言。WSBPEL目前也由OASIS負責。
管理
随着企業服務的增長,所使用的服務和業務程序的數量也随之增加,一個用來讓系統管理者管理所有運作在多相環境下的服務的管理系統就顯得尤為重要。WSDM(Web Services for Distributed Management)規定了任何根據WSDM實作的服務都可以由一個WSDM适應(WSDM-compliant)的管理方案來管理。
其它的qos特性,比如合作方之間的溝通和通訊,多個服務之間的事務處理,都在WS-Coordination 和 WS-Transaction 标準中描述, 這些都是OASIS 的工作。
SOA 不是Web服務
在了解SOA和Web服務的關系上,經常發生混淆。根據2003年4月的Gartner報道,Yefim V. Natis就這個問題是這樣解釋的:“Web服務是技術規範,而SOA是設計原則。特别是Web服務中的WSDL,是一個SOA配套的接口定義标準:這是Web服務和SOA的根本聯系。”從本質上來說,SOA是一種架構模式,而Web服務是利用一組标準實作的服務。Web服務是實作SOA的方式之一。用Web服務來實作SOA的好處是你可以實作一個中立平台,來獲得服務,而且随着越來越多的軟體商支援越來越多的Web服務規範,你會取得更好的通用性。
SOA - SOA的優勢
SOA的概念并非什麼新東西,SOA不同于現有的分布式技術之處在于大多數軟體商接受它并有可以實作SOA的平台或應用程式。SOA伴随着無處不在的标準,為企業的現有資産或投資帶來了更好的重用性。SOA能夠在最新的和現有的應用之上建立應用;SOA能夠使客戶或服務消費者免予服務實作的改變所帶來的影響;SOA能夠更新單個服務或服務消費者而無需重寫整個應用,也無需保留已經不再适用于新需求的現有系統。總而言之,SOA以借助現有的應用來組合産生新服務的靈活方式,提供給企業更好的靈活性來建構應用程式和業務流程。
SOA發展出來的效益
A. 平衡最初的舊系統投資(Leverage initial investment):
組織過去所投資的系統、軟硬體,如果能再利用等於賦予其新的價值,這也替組織降低成本并增加競争力。
B. 基礎建設的便利性(Infrastructure Commoditization):
讓所有的應用程式能互相溝通(互通性)。
C. 快速的接近市場(Faster time-to-market):
服務的重複使用(再利用),來縮短過去的組織流程,更快速的提供服務來接近市場。
D. 減少支出(Reduce Cost):
服務的重複使用,可降低開發成本。因為開發新系統的成本,大部份比更新舊有系統來的花費大。
E. 減低風險(Risk mitigation):
開發新系統的風險遠大於更新舊系統。
F. 持續改善商業流程的循環(Continuous improvement cycle for business process)
G. 中心流程處理(Process-centric processing)
實施SOA可能帶來的主要優勢有5點:
一,SOA可通過網際網路伺服器釋出,進而突破企業内網的限制,實作與供應鍊上下遊夥伴業務的緊密結合。通過SOA架構,企業可以與其業務夥伴直接建立新管道,建立新夥伴的成本得以降低。
二,SOA與平台無關,減少了業務應用實作的限制。要将企業的業務夥伴整合到企業的“大”業務系統中,對其業務夥伴具體采用什麼技術沒有限制。
三, SOA具有低耦合性特點,增加和減少業務夥伴對整個業務系統的影響較低。在企業與各業務夥伴關系不斷發生變化的情況下,節省的費用會越來越多。
四, SOA具有可按子產品分階段進行實施的優勢。可以成功一步再做下一步,将實施對企業的沖擊減少到最小。
五, SOA的實施可能并不具有成本顯著性。這要分三種情況加以讨論:
當企業從零開始建構業務系統時,采用SOA架構與不采用SOA架構成本可看做是相同的。
當企業業務發展或發生企業重組等變化而原有系統不能滿足需要,而需要重構業務系統時,采用SOA架構與不采用SOA架構成本可看做是相同的。
當企業業務發生緩慢變化并可預見到将來需要重構業務系統時,由于可以按子產品分階段逐漸實施SOA以适應變化的需要,這樣企業不需一下投入一大筆經費進行系統改造,而是根據企業業務發展情況和資金情況逐漸投入,緩解了資訊投入的壓力。
另指 半導體光放大器 (Semiconductor Optical Amplifer)
一般有行波放大和諧振放大兩種,行波SOA的材料和一般半導體雷射器相同,光纖通訊領域多為InP材料,放大波段1550nm附近,毅力簡單的了解為一個沒有回報腔的雷射器,一般端面反射率小于千分之五。