本文關注于SCA的幾個基本概念:Component,Composite,Implemention,ComponentType,從規(guī)范、實現(xiàn)等不同的角度談一下它們之間的區(qū)別。
也就是說,本文更多的是關注于它們之間的區(qū)別,至于它們每個是什么請參閱SCA集成規(guī)范。
Component

由上圖可以看到,Component是SCA中可以提供業(yè)務功能的最小單元,Implemention是
Component提供服務的具體實現(xiàn)方式,可以是Java、C++、Bpel等等,沒有Implemention那么Component就是個空殼,不
能提供任何有價值的服務,沒有任何意義。Service是當前Component所能提供的服務列表,Reference則是該組件多引用的其他組件的服
務,Property起配置的作用。
Composite
從上圖可以看到,Composite是由Component和Composite組成的,另外Composite也支持
整體對外提供服務,或者引用其他組件,因此還包括了Service、Reference以及配置它們的Property,Wire是Composite中
各個Component之間的關聯(lián)關系,因此只有Composite中才會有Wire,Component中沒有。
ComponentType
為什么把ComponentType單獨拿出來呢,因為ComponentType容易讓人混淆,帶來理解上的困難,特
對它給與了比較多的精力,為了大家能看明白,也為了清理下自己的思路,為了理解它不知道翻了多少遍Assembly規(guī)范以及Tuscany的源代碼,呵
呵,當然,現(xiàn)在的理解也不一定就是正確的,歡迎大家批評指正。
我們先來看下類圖結構:

由此類圖可以看到,Implemention和Composite都是ComponentType的子接口,ComponentType代表的其實是某種Implemention類型,比如Java、Bpel等等,比如Java的Implemention實現(xiàn)類如下:

BaseJavaImplementation是implementation.java的接口,其他還有implementation.bpel等等。
最后,對Service、Reference和Component、Composite等的關系結合類圖做下介紹:

CompositeService和ComponentService正說明了可以提供服務的兩種粒度,同理亦然,reference亦是如此:

而,Reference和Service有種共同的祖先:AbstractContract,如圖:
