soa 是通過功能元件化、服務化,來實作系統內建、解決資訊孤島,這是其主要目标。而更進一步則是實作更快響應業務的變化、更快推出新的應用系統。與此同時,soa 還實作了整合資源,資源複用。
soa 服務的設計标準是粗粒度、高重用、靈活、标準。性能則并非首要考慮因素。
soa 的兩大功能是內建、服務編排(bpel、bpm)。wf 在 soa 架構中,實作服務編排的功能。
參考架構:

相關資源:
<a href="http://dev.yesky.com/324/7570824.shtml" target="_blank">soa 的基本概念及設計原則淺議</a>
<a href="http://tech.sina.com.cn/s/2008-09-02/1038790115.shtml" target="_blank">soa 有哪些基本原則</a>
<a href="http://blog.sina.com.cn/s/blog_493a84550100f7aj.html" target="_blank">soa 設計十大原則</a>
<a href="http://blog.sina.com.cn/s/blog_493a84550100l8rv.html" target="_blank">soa 服務設計原則</a>
<a href="http://blog.sina.com.cn/s/blog_493a84550101ir42.html" target="_blank">再談soa內建平台建設必要性</a>
<a href="http://blog.sina.com.cn/s/blog_493a84550101gswn.html" target="_blank">談基于soa的應用系統設計和開發</a>
<a href="http://blog.sina.com.cn/s/blog_493a84550101gthp.html" target="_blank">談基于soa的消費釋出訂閱</a>
<a href="http://blog.sina.com.cn/s/blog_493a84550101gu3w.html" target="_blank">再談服務設計</a>
<a href="http://www.infoq.com/cn/presentations/ly-ctrip-on-soa" target="_blank">攜程旅行網在soa架構方面的探索</a>
<a href="http://v.youku.com/v_show/id_xnjm5mzqyodq=.html" target="_blank">支付寶的soa實踐(程立)</a>
esb 是 soa 的重要實作手段。esb 實作 soa 時,它作為中心、媒介,內建的系統将隻與它進行互動。而 esb 實作與各種系統間的協定轉換、資料轉換、透明的動态路由功能(基于内容)。
在設計 esb 時,集中的分發子產品會影響性能、可伸縮性、容錯能力,是以 esb 要有良好的可伸縮性,支援叢集。
ibm 總結了 esb 的功能,較完整的功能如下:
通信
服務互動
路由
尋址
通信技術、協定和标準(例如 ibm® websphere® mq、http 和 https)
釋出/訂閱
響應/請求
fire-and-forget,事件
同步和異步消息傳遞
服務接口定義(例如,web 服務描述語言(web services description language,wsdl))
支援替代服務實作
通信和內建所需的服務消息傳遞模型(例如 soap 或企業應用程式內建 (eai) 中間件模型)
服務目錄和發現
內建
服務品質
資料庫
服務聚合
遺留系統和應用程式擴充卡
eai 中間件的連接配接性
服務映射
協定轉換
應用程式伺服器環境(例如 j2ee 和 .net)
服務調用的語言接口(例如 java 和 c/c++/c#)
事務(原子事務、補償、web 服務事務(ws-transaction))
各種确定的傳遞範例(例如 web 服務可靠消息傳遞(ws-reliablemessaging)或對 eai 中間件的支援)
安全性
服務級别
身份驗證
授權
不可抵賴性
機密性
安全标準(例如 kerberos 和 web 服務安全性(ws-security))
性能
吞吐量
可用性
其他可以構成契約或協定的持久評估方法
消息處理
管理和自治
編碼的邏輯
基于内容的邏輯
消息和資料轉換
有效性
中介
對象辨別映射
資料壓縮
服務預置和注冊
記錄、測量和監控
發現
系統管理和管理工具的內建
自監控和自管理
模組化
基礎架構智能
對象模組化
通用業務對象模組化
資料格式庫
b2b 內建的公共與私有模型
開發和部署工具
業務規則
政策驅動的行為,特别是對于服務級别、服務功能的安全和品質(例如 web 服務政策(ws-policy))
模式識别
而最低要求的 esb 需要具有的功能:
提供位置透明性的路由和尋址服務
控制服務尋址和命名的管理功能
至少一種形式的消息傳遞範型(例如,請求/響應、釋出/訂閱等等)
支援至少一種可以廣泛使用的傳輸協定
支援服務提供的多種內建方式,比如 java 2 連接配接器、web 服務、異步通信、擴充卡等等
一個開放且與實作無關的服務消息傳遞與接口模型,它應該将應用程式代碼從路由服務和傳輸協定中分離出來,并允許替代服務的實作。
<a href="http://shanyou.blog.51cto.com/363653/72929" target="_blank">面向服務架構(soa)和企業服務總線(esb)</a>
<a href="http://www.cnblogs.com/leo_wl/archive/2012/10/16/2725683.html" target="_blank">c#esb設計說明書</a>
<a href="http://www.360doc.com/content/10/0812/14/1332348_45497388.shtml" target="_blank">幾種 esb</a>
<a href="http://blog.sina.com.cn/s/blog_493a84550100j5v7.html" target="_blank">esb企業服務總線</a>
<a href="http://www.searchsoa.com.cn/showcontent_30538.htm" target="_blank">esb項目需求分析和方案設計淺談</a>
<a href="http://hi.baidu.com/429263181/item/6125adf039bc2f0dd99e7270" target="_blank">esb同步,異步選擇,從項目實際出發(電信)</a>
<a href="http://www.jdon.com/36113" target="_blank">esb 優缺點</a>
<a href="http://calvin.iteye.com/blog/130337" target="_blank">esb 架構筆記</a>
<a href="http://zhidao.baidu.com/question/113188372.html" target="_blank">esb 簡介 - 百度知道</a>
<a href="http://blog.itpub.net/14789789/viewspace-610864/" target="_blank">esb 項目需求分析和方案設計淺談</a>
nservicebus 是 .net 平台上最受歡迎的一個開源 esb 架構。有較完善的文檔及示例代碼。
目前,.net 平台上開源的 esb 架構,大多基于消息隊列來實作。nservicebus 同樣也使用消息隊列機制來實作消息的傳遞,例如可以使用 msmq。由于消息隊列天生就是異步傳輸的,是以 nsb 也同樣隻支援異步消息,是一種‘發送即忘卻’的模式。(as a general purpose communications technology, wcf does not enforce the queued messaging paradigm. nservicebus does, and the architectural implications are profound.)。
nservicebus 相對于 wcf 的優勢在于:事件驅動的架構(釋出、訂閱)、更好地支援長時間運作的工作流。
缺點一:隻支援異步的消息機制的問題是,無法進行傳統的的資料查詢。(to allow clients to perform queries, it is best not to use nservicebus. messaging is designed for non-blocking operations, and queries are (for the most part) operations for which the user wishes to wait.)
如果一定要使用 nsb 來實作資料查詢,那麼隻能通過 cqrs 來進行系統的設計:
缺點二:nsb 的服務可以輕易內建到 wcf 中使用 msmq 實作,但是反之則不行。也就是說,已經使用 wcf 開發的服務,是無法使用 nsb 來完成簡單的遷移的。(原因也主要是因為 nsb 的異步機制。)
<a href="http://www.infoq.com/cn/news/2007/09/nservicebus" target="_blank">infoq 官方采訪介紹:nservicebus——讓建立企業級.net系統更加容易</a>
<a href="http://www.cnblogs.com/leo_wl/archive/2010/11/19/1881410.html" target="_blank">nservicebus---最流行的開源企業服務總線 for .net</a>
<a href="http://www.cnblogs.com/leo_wl/archive/2011/12/26/2302667.html">nservicebus 開源通訊架構(幾種通信模式)</a>
<a href="http://www.cnblogs.com/leo_wl/archive/2011/12/26/2302360.html">nservicebus 安裝與調試</a>
<a href="http://docs.particular.net/nservicebus/overview" target="_blank">nservicebus overview</a>
<a href="http://docs.particular.net/nservicebus/nservicebus-and-wcf" target="_blank">nservicebus and wcf</a>
<a href="http://www.cnblogs.com/lipu/archive/2010/11/16/soa_nservicebus.html">簡單demo</a>
雲計算是一種部署體系結構,而 soa 則是企業 it 的體系結構。
soa與雲整合既帶來應用和業務流程靈活的虛拟化和節省的費用(雲),又帶來原有應用的內建應用及業務流程的靈活重構(soa)。
上層基于 soa 進行應用服務的開發,底層基于雲計算進行資源整合,包括存儲,網絡,資料庫,伺服器等。
目前業界比較多的觀點贊同:soa 與雲計算将整合發展。
它們的關系:
從産生的背景和原因看,soa産生的原因是為解決企業存在的資訊孤島和遺留系統這兩大問題。雲計算産生的原因是企業的資訊系統資料量的高速增長與資料處理能力的相對不足,還有計算資源的使用率處于不平衡的狀态。
從關鍵的技術和屬性看,通過産生背景和原因的分析,soa和雲計算是不同的概念,但是它們卻互相聯系,又有一定的相似性。從服務角度來看,soa實作了可以從多個服務提供商得到多個服務(一個服務便是一個功能子產品),并通過不同的組合機制形成自己所需的一個服務;雲計算實作了所有的資源都是服務,可以從雲計算提供商購買硬體服務、平台服務、軟體服務等,把購買的資源作為雲計算提供商提供的一種服務。
從關鍵技術來看,soa需要實作業務元件的可重用性、靈活性、适應改變、松耦合、基于标準;雲計算則需要虛拟化技術、按需動态擴充、資源即服務的支撐。
從應用場景來看,當企業的業務需求經常改變的時候可以考慮使用soa;當企業對it設施的需求經常改變或者無法提前預知的時候可以考慮使用雲計算,當有大量的批處理計算的時候也可以考慮使用雲計算。
從應用的側重點來看,soa側重于采用服務的架構進行系統的設計,關注如何處理服務;雲計算側重于服務的提供和使用,關注如何提供服務。
從商業模式來看,soa可能會降低軟體的開發及維護的成本,商業模式是間接的,需要落地;雲計算根據使用的時間(硬體)或流量(帶寬)進行收費,具有明确的商業模式。
下面列出最近看的與本文相關的一些 pdf 書籍,東西太多,不上傳了,列下書名:
《中國soa最佳應用及雲計算融合實踐》、《soa in the real world》、《soa應用案例分析及設計》、《a developer’s guide to the microsoft .net service bus》、《ibm esb概要設計說明書@cbod》、《mule+esb+studio+v3.3安裝使用手冊》、《軟通動力 蘭州esb平台項目詳細設計說明書》、《soa實踐者指南》、《基于.net+framework+wcf的面向服務soa中間件設計》、《基于wcf的soa架構設計》、《ibm-esb 在 soa 内的工作角色》、《wssf(服務工廠)架構剖析》、《開源soa快速入門指南》、《composite software construction》、《enterprise integration patterns - designing building and deploying messaging solutions》、《enterprise soa adoption strategies》、《prentice.hall.soa.with.net.and.windows.azure.may.2010》。
其它:
<a href="http://shuttle.github.io/shuttle-esb/architecture/index.html" target="_blank">shuttle esb</a>