SOA松耦合的依賴關係

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應用的功能由該應用所包含的一組服務以及這些服務之間的松耦合關係體現,對服務功能的調整可以通過調整這些松耦合關係實現,新功能可以通過增加新的耦合關係得到(服務組合)或引入新的服務得到。

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