個人對SCA標準中Component,Composite,Implemention,ComponentType幾個概念的理解
本文關注于SCA的幾個基本概念:Component,Composite,Implemention,ComponentType,從規范、實現等不同的角度談一下它們之間的區別。也就是說,本文更多的是關注于它們之間的區別,至于它們每個是什么請參閱SCA集成規范。
Component
由上圖可以看到,Component是SCA中可以提供業務功能的最小單元,Implemention是 Component提供服務的具體實現方式,可以是Java、C++、Bpel等等,沒有Implemention那么Component就是個空殼,不 能提供任何有價值的服務,沒有任何意義。Service是當前Component所能提供的服務列表,Reference則是該組件多引用的其他組件的服 務,Property起配置的作用。
Composite
從上圖可以看到,Composite是由Component和Composite組成的,另外Composite也支持 整體對外提供服務,或者引用其他組件,因此還包括了Service、Reference以及配置它們的Property,Wire是Composite中 各個Component之間的關聯關系,因此只有Composite中才會有Wire,Component中沒有。
ComponentType
為什么把ComponentType單獨拿出來呢,因為ComponentType容易讓人混淆,帶來理解上的困難,特 對它給與了比較多的精力,為了大家能看明白,也為了清理下自己的思路,為了理解它不知道翻了多少遍Assembly規范以及Tuscany的源代碼,呵 呵,當然,現在的理解也不一定就是正確的,歡迎大家批評指正。
我們先來看下類圖結構:
由此類圖可以看到,Implemention和Composite都是ComponentType的子接口,ComponentType代表的其實是某種Implemention類型,比如Java、Bpel等等,比如Java的Implemention實現類如下:
BaseJavaImplementation是implementation.java的接口,其他還有implementation.bpel等等。
最后,對Service、Reference和Component、Composite等的關系結合類圖做下介紹:
CompositeService和ComponentService正說明了可以提供服務的兩種粒度,同理亦然,reference亦是如此:
而,Reference和Service有種共同的祖先:AbstractContract,如圖:
posted on 2008-04-27 21:37 gembin 閱讀(589) 評論(0) 編輯 收藏 所屬分類: SCA 、SOA