• <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>
  • 軟件SOA中怎樣確定服務的粒度

    發表于:2009-08-31來源:作者:點擊數: 標簽:soaSOA粒度服務軟件
    軟件SOA中怎樣確定服務的粒度 SOA構架 關鍵字:SOA SOA,Service Oriented Architecture,顧名思義是面向服務的架構,整個系統要借助服務的設計來完成建模,因此服務的設計是整個系統中很重要的一環。服務的設計牽涉到兩個重要的概念,一個是粒度,一個是耦

    軟件SOA中怎樣確定服務的粒度 SOA構架

    關鍵字:SOA

    SOA,Service Oriented Architecture,顧名思義是面向服務的架構,整個系統要借助服務的設計來完成建模,因此服務的設計是整個系統中很重要的一環。服務的設計牽涉到兩個重要的概念,一個是粒度,一個是耦合。

     粒度表示的是一個服務的大小,它可以理解為服務操作的范圍,粗粒度的服務,操作的內容廣而且雜;細粒度的服務,操作的內容細而且簡單。粗粒度的服務設計,可以減小服務之間的耦合性,但付出的代價就是增加服務的復雜性,服務具備了太多的功能,增加了設計的復雜性和維護的難度;細粒度的服務,可以讓服務的實現變得簡單,但這樣會增加服務的數量,服務過細過多,這樣必然有一些服務需要組合才能實現一定的功能,那樣就增加了服務之間的耦合度,只要其中一個服務發生了變動,勢必牽一發而動全身。

    耦合代表的是服務與服務之間的關系。SOA的初衷就是為了降低系統各個部分之間的耦合性,使得服務可以重用。但很顯然,耦合性是受到服務粒度很大的影響,而且從某種程度上講,粒度的選擇就決定了系統內部的耦合性。

    那么應該以什么為準則來確定一個服務的粒度呢?遺憾的是,網上搜索了各種SOA的介紹和各個廠商的文檔,似乎找不到一個統一的標準,因為服務粒度往往要根據需求來確定。SOA提倡服務要粗粒度,但這樣的說法太籠統,系統必然會有細粒度的服務存在,很多粗粒度的服務不過是一些細粒度服務的組合。所以我的看法是,粗中有細。

    我的想法是,把服務分解為三種類型,一種是基本服務,一種是組合服務,一種是合成服務。

    基本服務?;痉占词窍到y提供的最小粒度的服務,或者說是原子服務。這類服務考慮的是利用它們的可重用性,它們是組成一些較大粒度的服務的基礎?;痉湛梢哉f是原有系統跟業務需求細分的中間結合點,它既是原有系統能夠提供的最細粒度的服務,同時也是要設計的系統最細粒度的服務。

     合成服務。合成服務是基本服務簡單的組合,只是為了把具有相同功能但操作不同的業務對象的基本服務組合到一起,形成一個對外提供相同功能的服務。它類似設計模式里面的工廠模式,只要告訴服務接口傳進來的是哪一個業務對象,那么服務就能自動識別應該調用哪一個基本服務。

     組合服務。組合服務是系統里面最復雜的部分,它不是基本服務的簡單堆積到一塊,它是最大粒度的服務,里面各個基本服務的關系受到工作流程的控制。它是基本服務與工作流程的結合。

     基于上面的理解,我們的服務設計遵循這樣的設計思路:先從功能模塊分離出基本服務,各個功能模塊可以看成是合成服務,由功能模塊分離出來的就是基本服務;然后在基本服務的基礎上設計組件和業務對象;設計完組件和業務對象之后再來設計組合服務。這樣不管組合服務需要多少,組合服務多復雜,都可以通過基本服務和工作流程進行各種形式組合起來。而且組合服務經常需要變動,這樣的設計能夠保證這些變動不會引起太大的改動。它們的組合關系可以用下面的圖來表示。


     

    原文轉自:http://www.kjueaiud.com

    老湿亚洲永久精品ww47香蕉图片_日韩欧美中文字幕北美法律_国产AV永久无码天堂影院_久久婷婷综合色丁香五月

  • <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>