SOA是英文Service-Oriented Architecture,即面向服務架構的縮寫。
下面是SOA的一個定義:SOA是指為了解決在Internet環境下業務集成的需要,通過連接能完成特定任務的獨立功能實體實現的一種 軟件系統架構。從這個定義中我們可以看出:
1) 軟件系統架構:SOA不是一種語言,也不是一種具體的技術而是一種軟件系統架構,它嘗試給出在特定環境下推薦采用的一種架構,從這 個角度上來說,它更像一種模式(Pattern)。因此它與很多已有的軟件技術比如面向對象技術,是互補的而非互斥的。它們分別面向不同的應用 場景,用來滿足不同的特定需求。
2) SOA的使用范圍:需求決定同時也限制功能。SOA并不是包治百病的萬靈丹,它最主要的應用場合在于解決在Internet環境下的不同商業 應用之間的業務集成問題。在下面我們會詳細討論Internet的各種特點如何決定SOA的特點,這里我們只需要先簡單回顧一下Internet環境區別 于Intranet環境的幾個特點:
a) 大量異構系統并存,計算機硬件工作方式不同,操作系統不同、編程語言也不同;
b) 大量、頻繁的數據傳輸仍然速度緩慢并且不穩定;
c) 版本升級無法完成,我們根本就無法知道互聯網上有哪些機器直接或者間接的使用某個服務。
基于上面的前提,下面就讓我們一起看一下SOA的基本特征。
SOA三大基本特征 :
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上的版本管理極其困難,傳統軟件采用的升級方式在這種松散 的分布式環境中幾乎無法進行。采用基于文本的消息傳遞方式,數據處理端可以只選擇性的處理自己理解的那部分數據,而忽略其它的數據, 從而得到的非常理想的兼容性。
HTTP協議就是一個非常典型的 SOA架構設計。HTTP協議的工作過程簡單敘述如下:客戶端,通常是通過瀏覽器,向服務器端以文本的方式發送一個請求,索取一個Web頁面。
更多詳細資料參看《下一代軟件架構--SOA》
(http://dev2dev.bea.com.cn/techdoc/200404186.html)
posted on 2008-07-25 21:27
胖胖泡泡 閱讀(96)
評論(0) 編輯 收藏