SOA面向服務架構簡述
在上篇中我們簡單談了下架構設計中服務層的簡單理解,在這里我們將繼續服務層的架構,在本節我們將重點在于分布式服務。在分布式系統中表現層和業務邏輯層 并不處于同一物理部署,所以我們必須存在分布式服務,以契約方式發布于網絡中,我們的關注點在于服務,面向服務編程,這種通過組合業務邏輯暴露可用服務的架構叫做面向服務架構(SOA)。
SOA強調一個松耦合,基于宏服務的架構,通過契約暴露給服務消費者可用的服務交互。SOA是以服務為組成構建,原則有:
1、邊界清晰:
服務層是消費者交互到系統業務的唯一入口,所有我們的服務必須能夠被消費者所理解,以及最好處理Request/Response基于消息交換RPC調用,職責明確單一.還有我們更希望我們的服務為作用明確的,CQS(命令-查詢分離原則).
2、服務的自治性
服務自治主要表現在每個服務都是獨立的,其系統部署,管理監控都是獨立的。自治體現了服務的松耦合,但并不是服務就是一個孤島,其可以通過消息交換消費其他服務。
3、使用契約(接口和數據載體),而非實現
這也是面向對象設計第一原則。在我們的服務設計中SOA一個重要目標就是互操作,基于SOAP等標準協議實現跨平臺互操作,可能存在異構系統。所以我們該選擇接口而不是語言具體的類以及基于消息交互。服務對于開發就是一些列行為的組合,數據契約就是數據遷移對象,數據載體。契約使得我們并不關心服務的內部實現,而只關心提供了那些服務,服務的簽名如何,怎么調用之類的。
4、兼容性基于策越
對于消費者來說服務是否能滿足他的需求,這需要服務語義兼容,語義兼容也應該通過可訪問方式暴露。是的服務可發現。
SOA是一種設計原則規范,其目標在于為復雜系統提供互操作性和以服務為基礎組件構造系統邏輯。把具體的業務邏輯和流程屏蔽,暴露出用戶可用的行為集合。SOA是一中原則而非集體技術。wcf,webservice是具體SOA技術。同時SOA也不是我們的目標,客戶是不與關心我們采用soa與否,這只是我們對系統的一種解決方案。
SOA優勢在于給我們提供更好的代碼重用,版本控制,安全控制,擴展延伸性。同時降低和服務的耦合,交互必須依賴于服務契約和數據契約,并不關心服務的內部實現。在我們的版本升級,修改過程中可以完全可以重新實現替換原有服務,并不會影響消費程序的使用。
最后我們必須的說下當下流行的restfull,通常我們認為這是一種風格,而非架構,是由Roy Thomas Fielding在其博士論文 《Architectural Styles and the Design of Network-based Software Architectures》中提出REST是英文Representational State Transfer的縮寫,中文翻譯為“表述性狀態轉移”。是一種基于web的架構,它很好的利用http協議的method。根據不同的method表示對資源的不同語義操作。其核心在于將發布在網絡的一切事物歸屬為資源,每個資源定位于一個資源定位符(URI)。以及無狀態,緩存,分層架構。在微軟最新的WCF resetfull,web api應用框架。以及wcf ria ,wcf data service,需要的注意的是微軟同時候加入的自己的oData協議(開元數據協議)。
最后說一點:我覺得不管是服務或者resetfull服務我們都必須定義契約,依賴于契約,雖然微軟的而技術允許我們直接寄宿服務類,但是對于服務的擴展和延伸而言,說這句話的原因在于我最近看見一些直接寄宿服務類的resetfull架構。
原文鏈接:http://www.cnblogs.com/whitewolf/archive/2012/05/22/2513905.html