尽展体育的魅力,创造历史辉煌!
2008
让我们为奥运加油,为中国加油!
高级搜索
首页
技术论坛
博客
产品中心
资源中心
银弹在线
商城
goCom - SOA中国第一社区
SOA和WebService
|
面向构件
|
业务流程
|
EOS
|
综合技术
|
goCom吧
|
版务区
|
商务专区
SOA和WebService
|
面向构件
|
业务流程
|
EOS
|
综合
Primeton EOS
|
Primeton BPS
OSOA专区
|
专题
|
技术日
|
活动
|
下载
推荐阅读
|
封面报道
|
特别报道
|
CIO锦囊
|
专栏
|
公司
|
银弹讨论
最新上架
|
银弹推荐
|
普通书籍
|
音像
|
护肤
|
生活
|
数码
goCom - 面向构件与SOA社区 讨论区
-
面向构件
SCA/SDO
SCA中国推进组
SDO中国推进组
银弹讨论
Tuscany
平台厂商
主题选项
点击展开
HOVER展开
--------
打印主题
[无发表权] 请登录或者注册
版主:
hongsoft
米布
wangfeng
cool007
个人资料
递归的装配模型
#1楼
总分
2634 分
财富
2881
威望
54
排名
第 79 名
段位
SCA
协会从内外部提出的进一步简化
SCA
装配模型的建议需求中获取到了许多反馈意见。反馈中非常清楚地阐述了让
SCA
装配模型完全具有递归性将是进一步简化的关键所在。
“
递归性”基本上意味着装配可以嵌入在其他“高层”装配的内部。装配模型的完整递归性将有助于提升装配的复用性。它也在自顶向下的解决方案设计中支持服务实现的后续分解。
在
SCA
v0.9装配规范中,(module)模块包含在一系列由“原子”组件实现的组件之间。对于由其他装配集实现的组件,在(module)模块装配级别上没有提供支持。
从系统装配级来看,V0.9规范包含由模块实现的组件,但仅仅是用模块组件来命名这些组件。对于在模块装配级别,它们还不存在可扩展的实现类型这个概念。
所以,在
SCA
1.0装配规范中,三项工作简化了模型:
1.
只包含不依赖于任何装配层次级别的组件
2.
组件既可以由简单的实现也可以由装配集来实现
3.
不用术语”module”或”system”来命名装配集,而用composite
允许组件可以由简单的实现或构件来实现为更进一步的简化提供了支持。原子实现和构件应该使用相同的技术,并提供相同的可配置方面(比如:服务,引用和属性)的定义方式。可以通过重命名entry point(v0.9规范中的定义)为service(v1.00规范中的定义),external service(v0.9规范中的定义)为reference(v1.00规范中的定义),并允许为构件定义属性。
在v0.9规范中,module装配和system装配集有构建一系列局部装配集的外部装配的概念。在模块级有称为module的片段,系统级有称为subsystem的片段。在最新的模型中,这个都认为是构件使用的另一种形式。通过将包含构件到另外的构件中来使用它,就意味着构件内容的文本信息包含进含有该构件的构件中。以这种方式用于内含其他构件的构件不一定需要实现—他们可以容纳任意元素集,该元素集完成该含有它们的构件所需的工作。
模型变化小结
以下表格通过对比新老模型总结了模型的变化信息。可以非常清晰地看到是如何通过减少概念的数目的方式来让具有递归性的装配模型简化模型的。
新模型实践
在后面我们用Big Bank案例(在我翻译的BigBank案例中)的变种来演示新的装配模型。
开发装配集
该案例的变种就是使用另一个构件替代POJO来实现bigbank.Account构件的AccountDataServiceComponent。下图展示了两个构件的装配图,bigbank.Account和bigbank.Accountdata构件。后者实现了前者的AccountDataServiceComponent。
如下代码片段展示了bigbank.Account构件的定义。它定义了AccountDataServiceComponent,该组件的实现使用了bigbank.Accountdata构件。它还展示了如何为构件定义property,构件属性是如何设置的,这里在AccountServiceComponent上使用了属性。该案例还展示了构件中的entry point现在称为service,external service现在称为reference。组件属性和引用都以XML方式配置的方式也可以剔除v(v在V0.9规范中的命名空间,会引发冲突)的使用简化使用。
<composite xmlns="
http://www.osoa.org/xmlns/sca/1.0"
xmlns:bb="
http://bigbank.com"
targetNamespace="
http://bigbank.com"
name="bigbank.account">
<service name="accountService" promote="AccountServiceComponent">
<interface.java inter/>
<binding.ws port="... #wsdl.endpoint(AccountService/AccountServiceSOAP)"/>
</service>
<property name="currency" type="xsd:string">USD</property>
<component name="AccountServiceComponent">
<implementation.java class="services.account.AccountServiceImpl" />
<property name="currency" source="$currency"/>
<reference name="accountDataService" target="AccountDataServiceComponent"/>
<reference name="stockQuoteService" target="StockQuoteService"/>
</component>
<component name="AccountDataServiceComponent">
<implementation.composite name="bb:bigbank.AccountData"/>
</component>
<reference name="StockQuoteService"
promote="AccountServiceComponent/stockQuoteService">
<interface.java inter/>
<binding.ws port="...#wsdl.endpoint(StockQuoteService/StockQuoteServiceSOAP)"/>
</reference>
</composite>
如下给出了
bigbank.AccountData
构件的定义
<composite
xmlns="
http://www.osoa.org/xmlns/sca/1.0"
targetNamespace="
http://bigbank.com"
name="bigbank.AccountData">
<service name="accountdataService" promote="AccountData">
<interface.java inter/>
</service>
<component name="AccountData">
<implementation.java class="services.accountdata.AccountDataImpl"/>
</component>
</composite>
部署装配集
下面的装配图给出了
SCA
域中的bigbank.account构件的配置。我们经过创建另一个构件配置了一个实现(在我们例子中是bigbank.Account构件)到
SCA
域中。创建的构件通过包含方式添加到域中。域自身就如构件一样工作,并且其配置通过对其他构件的包含来设置。
注:许多情况下,组件配合完整的配置信息使得他们在
SCA
域中是已经可以使用的组件。
SCA
提供了为这些实现的部署提供了直接的方式。
以下代码片段给出了bigbank.AccountManagement构件的定义,该构件创建了前面提到的bigbank.Account构件的配置化了的实例。它演示了当前属性是如何设置的,也展示了stock quote web service的endpoint地址是如何被覆盖的:
<composite xmlns="
http://www.osoa.org/xmlns/sca/1.0"
xmlns:bb="
http://bigbank.com"
targetNamespace="
http://bigbank.com"
name="bigbank.AccountManagement">
<component name="bigbank.Account">
<implementation.composite name="bb:bigbank.Account" />
<property name="currency">EURO</property>
<reference name="stockQuoteService">
http://www.eurosq.com/SQService
</reference>
</component>
</composite>
下列代码片段展示了bigbank.Client构件的定义。该构件创建了bigbank.Webclient构件的配置化实例。Bigbank.Webclient构件的详细信息请查看我翻译的BigBank案例。Bigbank.Webclient构件的accountService引用被连线到bigbank.Account构件的accountService上。
<composite xmlns="
http://www.osoa.org/xmlns/sca/1.0"
xmlns:bb="
http://bigbank.com"
targetNamespace="
http://bigbank.com"
name="bigbank.Client">
<component name="bigbank.Webclient">
<implementation.composite name="bb:bigbank.Webclient" />
<reference name="accountService" target="bigbank.account/accountService"/>
</component>
</composite>
4月18日 12:40:07
EOS公开培训6折发送中
SOA博客精英 重金寻求
普元诚招技术精英
普元业务流程平台-Primeton BPS 最新频道火热上线
IDC:SOA中国路线图白皮书免费下载
普元诚招EOS技术咨询顾问
[无发表权] 请登录或者注册
发表回复
账号
用户名
密码
登录
内容:
字体大小
xx-small
x-small
small
medium
large
x-large
xx-large
字体
Arial
Courier
Georgia
Helvetica
Impact
Verdana
字体颜色
#000000
#000033
#000066
#000099
#0000CC
#0000FF
#003300
#003333
#003366
#003399
#0033CC
#0033FF
#006600
#006633
#006666
#006699
#0066CC
#0066FF
#009900
#009933
#009966
#009999
#0099CC
#0099FF
#00CC00
#00CC33
#00CC66
#00CC99
#00CCCC
#00CCFF
#00FF00
#00FF33
#00FF66
#00FF99
#00FFCC
#00FFFF
#330000
#330033
#330066
#330099
#3300CC
#3300FF
#333300
#333333
#333366
#333399
#3333CC
#3333FF
#336600
#336633
#336666
#336699
#3366CC
#3366FF
#339900
#339933
#339966
#339999
#3399CC
#3399FF
#33CC00
#33CC33
#33CC66
#33CC99
#33CCCC
#33CCFF
#33FF00
#33FF33
#33FF66
#33FF99
#33FFCC
#33FFFF
#660000
#660033
#660066
#660099
#6600CC
#6600FF
#663300
#663333
#663366
#663399
#6633CC
#6633FF
#666600
#666633
#666666
#666699
#6666CC
#6666FF
#669900
#669933
#669966
#669999
#6699CC
#6699FF
#66CC00
#66CC33
#66CC66
#66CC99
#66CCCC
#66CCFF
#66FF00
#66FF33
#66FF66
#66FF99
#66FFCC
#66FFFF
#990000
#990033
#990066
#990099
#9900CC
#9900FF
#993300
#993333
#993366
#993399
#9933CC
#9933FF
#996600
#996633
#996666
#996699
#9966CC
#9966FF
#999900
#999933
#999966
#999999
#9999CC
#9999FF
#99CC00
#99CC33
#99CC66
#99CC99
#99CCCC
#99CCFF
#99FF00
#99FF33
#99FF66
#99FF99
#99FFCC
#99FFFF
#CC0000
#CC0033
#CC0066
#CC0099
#CC00CC
#CC00FF
#CC3300
#CC3333
#CC3366
#CC3399
#CC33CC
#CC33FF
#CC6600
#CC6633
#CC6666
#CC6699
#CC66CC
#CC66FF
#CC9900
#CC9933
#CC9966
#CC9999
#CC99CC
#CC99FF
#CCCC00
#CCCC33
#CCCC66
#CCCC99
#CCCCCC
#CCCCFF
#CCFF00
#CCFF33
#CCFF66
#CCFF99
#CCFFCC
#CCFFFF
#FF0000
#FF0033
#FF0066
#FF0099
#FF00CC
#FF00FF
#FF3300
#FF3333
#FF3366
#FF3399
#FF33CC
#FF33FF
#FF6600
#FF6633
#FF6666
#FF6699
#FF66CC
#FF66FF
#FF9900
#FF9933
#FF9966
#FF9999
#FF99CC
#FF99FF
#FFCC00
#FFCC33
#FFCC66
#FFCC99
#FFCCCC
#FFCCFF
#FFFF00
#FFFF33
#FFFF66
#FFFF99
#FFFFCC
#FFFFFF
范例 Example
[
更多...
]
版权归Primeton普元公司所有 沪ICP备05008205号
关于goCom
|
联系我们
|
联系普元
|
隐私权声明
|
XOOPS