1.1.6 服務是自治的
自治指的是對某一范圍的絕對控制權。服務的自治則指的是服務對其所包含邏輯的控制,即服務的邏輯必須被限定在某一個范圍之內,在這個范圍內該服務對其所包含的邏輯有絕對的控制權。其他的服務不能支配該服務所包含的邏輯,而只能通過定義好的服務合同與該服務進行交互。如圖1-2所示。

圖1-2 服務的自治
服務的自治性強調了服務對所包含邏輯的排他占有性,其他服務不能支配該邏輯,但是這并不排除其他的不屬于服務范疇的事物對該邏輯的訪問和支配。考慮企業的歷史遺留系統,在實現面向服務的架構的時候,根據需要,遺留系統的部分或全部功能被包裝為服務,這樣在服務這個層次上,服務是自治的,即其他服務不能支配該服務的邏輯,但是這并不排除這些遺留系統原有的客戶端對這些邏輯的訪問,只不過它們不屬于服務的范疇。所以服務的自治一般分為兩種,一種為服務級別的自治,即從服務的層次上看,服務是自治的。另一種為純粹的服務自治,新構建的服務一般為這種。此外也可以看出,服務級別的自治存在風險,因為服務不是唯一可以訪問邏輯的,這樣可能會導致沖突。在面向服務的架構中尤其要加以注意。企業的遺留系統是企業的資源和財富,在實施面向服務的架構時,不可能完全拋棄,所以把遺留系統包裝為服務其實是一種折中的方法,也是一把雙刃劍,在設計時要倍加注意。
在面向對象的方法中,對象之間的聯系緊密,實現自治比較困難。比如對象之間的繼承關系,使得子類可以直接訪問父類的屬性、入侵父類的領域,這樣導致自治難以實現。
服務的自治有很多優點。服務的自治使得每個服務都有一個其自身可以負責的范圍,在該范圍內服務有絕對的支配權。從而每個服務都有自己的范圍,互相不影響,服務之間的依賴性因此大大減少。如圖1-3所示。

圖1-3 服務的自治
推薦閱讀
- Flask Blueprints
- Python科學計算(第2版)
- Getting Started with PowerShell
- Koa開發:入門、進階與實戰
- Python機器學習:手把手教你掌握150個精彩案例(微課視頻版)
- TradeStation交易應用實踐:量化方法構建贏家策略(原書第2版)
- ArcGIS By Example
- Highcharts Cookbook
- Hands-On Nuxt.js Web Development
- HTML+CSS+JavaScript網頁設計從入門到精通 (清華社"視頻大講堂"大系·網絡開發視頻大講堂)
- Getting Started with Polymer
- Python+Office:輕松實現Python辦公自動化
- Python硬件編程實戰
- After Effects CC技術大全
- MySQL數據庫應用實戰教程(慕課版)