【轉載】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架構。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章