SOA是英文Service-Oriented Architecture,即面向服務(wù)架構(gòu)的縮寫。
SOA三大基本特征 :
1 獨立的功能實體
在Internet這樣松散的使用環(huán)境中,任何訪問請求都有可能出錯,因此任何企圖通過Internet進(jìn)行控制的結(jié)構(gòu)都會面臨嚴(yán)重的穩(wěn)定性問題。 SOA非常強調(diào)架構(gòu)中提供服務(wù)的功能實體的完全獨立自主的能力。傳統(tǒng)的組件技術(shù),如.NET Remoting,EJB,COM或者CORBA,都需要有一個宿主 (Host或者Server)來存放和管理這些功能實體;當(dāng)這些宿主運行結(jié)束時這些組件的壽命也隨之結(jié)束。這樣當(dāng)宿主本身或者其它功能部分出現(xiàn)問 題的時候,在該宿主上運行的其它應(yīng)用服務(wù)就會受到影響。
SOA架構(gòu)中非常強調(diào)實體自我管理和恢復(fù)能力。常見的用來進(jìn)行自我恢復(fù)的技術(shù),比如事務(wù)處理(Transaction),消息隊列(Message Queue) ,冗余部署(Redundant Deployment)和集群系統(tǒng)(Cluster)在SOA中都起到至關(guān)重要的作用。
2 大數(shù)據(jù)量低頻率訪問
對于.NET Remoting,EJB或者XML-RPC這些傳統(tǒng)的分布式計算模型而言,他們的服務(wù)提供都是通過函數(shù)調(diào)用的方式進(jìn)行的,一個功能的完成 往往需要通過客戶端和服務(wù)器來回很多次函數(shù)調(diào)用才能完成。在Intranet的環(huán)境下,這些調(diào)用給系統(tǒng)的響應(yīng)速度和穩(wěn)定性帶來的影響都可以忽 略不計,但是在Internet環(huán)境下這些因素往往是決定整個系統(tǒng)是否能正常工作的一個關(guān)鍵決定因素。因此SOA系統(tǒng)推薦采用大數(shù)據(jù)量的方式一次 性進(jìn)行信息交換。
3 基于文本的消息傳遞
由于Internet中大量異構(gòu)系統(tǒng)的存在決定了SOA系統(tǒng)必須采用基于文本而非二進(jìn)制的消息傳遞方式。在COM、CORBA這些傳統(tǒng)的組件模型中, 從服務(wù)器端傳往客戶端的是一個二進(jìn)制編碼的對象,在客戶端通過調(diào)用這個對象的方法來完成某些功能;但是在Internet環(huán)境下,不同語言, 不同平臺對數(shù)據(jù)、甚至是一些基本數(shù)據(jù)類型定義不同,給不同的服務(wù)之間傳遞對象帶來的很大困難。由于基于文本的消息本身是不包含任何處 理邏輯和數(shù)據(jù)類型的,因此服務(wù)間只傳遞文本,對數(shù)據(jù)的處理依賴于接收端的方式可以幫忙繞過兼容性這個的大泥坑。
HTTP協(xié)議就是一個非常典型的 SOA架構(gòu)設(shè)計。HTTP協(xié)議的工作過程簡單敘述如下:客戶端,通常是通過瀏覽器,向服務(wù)器端以文本的方式發(fā)送一個請求,索取一個Web頁面;