1、什麼叫耦合(coupling)
耦合是相互互動的系統彼此間的依賴。
依賴分為真依賴(real dependency)和假依賴(artifical dependency)。
真依賴是系統從其他系統消費的特徵(feature)和服務的集合。真依賴總是存在,只要系統間存在互動,無法簡化。
假依賴是系統為獲得其他系統提供的特徵和服務而必須服從的因素(如語言依賴、平台依賴、api依賴等),假依賴也總是存在,但可以減少或降低其代價。
2、什麼叫松耦合(loose couple)
理想的松耦合體現在系統間僅存在真依賴關係,或系統間的假依賴已經最小化。
如傳統的分布式構件系統(corba、ejb)在互動上往往是語言、平台和廠商相關的。而服務的呼叫則並不需要這些依賴關係,因此soa風格的體系機構與基於構件的體系機構相比,是更加松耦合的體系機構。
服務是通過服務描述剝離上述語言、平台和廠商的依賴關係的。服務消費者對服務的使用完全依賴於服務描述。服務描述是服務消費者和服務之間的「合同」,包括了服務消費者為實現與服務互動所需的所有資訊,如介面定義、服務的使用策略等。服務描述由於其按照開發標準以文字方式宣告,所以遮蔽了服務的實現細節、剝離了傳統構件所具有的語言、平台和廠商的相關性等假依賴關係。
soa中的假依賴包括:
(1)時間依賴或同步依賴,在基於rpc的分布式系統最為明顯,而基於事件驅動的非同步互動可以消除這種依賴。
(2)訪問位址依賴,一般情況,服務描述需要包括服務的訪問位址,客戶才能訪問服務。在soa中,可通過間接定址的策略消除這種依賴。有兩種方法實現間接定址:a.訪問位址放到註冊中心,服務訪問者通過註冊中心來獲取服務的位址;b.通過配置檔案。
(3)訪問協議依賴。
3、soa的松耦合本質的好處
(1)松耦合與復用性
soa的松耦合把軟體復用推到了乙個新的高度。
a. 剝離了客戶和服務之間的語言/平台的依賴性,使得服務可被更多的客戶使用
b. 服務的自治性使得客戶可以隨時訪問服務,與需要事先獲得並部署的構件相比,復用性進一步提高。
c. 服務註冊中心為服務提供了共享場所,有利於服務被更多客戶使用。
(2)松耦合和靈活性
a.松耦合使服務具有實現無關性,只要介面描述不變(注:只要系統間存在呼叫關係,對介面的依賴是無法避免的,因為介面是呼叫契約,是真依賴)的情況下,服務提供者對服務實現的任意修改都不會對soa應用任何影響(唯一的影響可能就是實現改變後,效能、服務質量等方面的改善)。
b.soa應用的功能由該應用所包含的一組服務以及這些服務之間的松耦合關係體現,對服務功能的調整可以通過調整這些松耦合關係實現,新功能可以通過增加新的耦合關係得到(服務組合)或引入新的服務得到。
SOA耦合的7個級別
完全解耦是極其困難和昂貴的,否則就是不可能的,ron schmelzer如是說到,他是zapthink的高階soa分析師。一般人們都認為 系統要麼是松耦合的,要麼不是。在這篇最近的帖子中,schmelzer炮轟了這個信仰。儘管松耦合的重要性得到認識已經有些時日了,但是圍繞這個帖子展開的對話卻收集了一...
SOA的依賴原則
在去年的qcon上,ganesh prasad分享了他對soa的看法。今年早些時候,他在一篇文章裡對其中部分內容作了展開,闡述了在他是怎樣將soa 思想視作一種面向依賴 思想的 u0026 xd n u0026 xd n soa是一門對系統之間的依賴進行分析和管理的科學,管理依賴 意味著消除不必要的...
SOA的依賴原則
在去年的qcon上,ganesh prasad分享了他對soa的看法。今年早些時候,他在一篇文章裡對其中部分內容作了展開,闡述了在他是怎樣將soa 思想視作一種面向依賴 思想的 soa是一門對系統之間的依賴進行分析和管理的科學,管理依賴 意味著消除不必要的依賴,並將合規依賴轉變為易於理解的契約。為了...