根据维基百科,
服务组件架构 (SCA)是一种软件技术,用于组合遵循面向服务的架构 (SOA) 原则的应用程序。这是一种具有许多优点的开发模式,包括:
将业务逻辑与其服务实现的细节分离。
支持多种语言的服务,包括 C++、Java、COBOL 和 PHP 以及 XML、BPEL 和 XSLT
能够无缝处理各种通信结构,包括单向、异步、呼叫返回和通知。
“绑定”到遗留组件或服务的能力,通常由 Web 服务、EJB、JMS、JCA、RMI、RPC、CORBA 等技术访问。
声明(在业务逻辑之外)服务质量要求的能力,例如安全性、事务和可靠消息传递的使用
数据可以在服务数据对象中表示
我会补充说,
- 不同模块(组件)之间的松散耦合。
我确实使用 SCA 技术实现了一个简单的软件,在Tuscany Tutorial的帮助下,我可以看到 SCA 异构性及其平台独立性的强大功能。
今天,我正在研究另一个似乎有点相关的模型。它是声明式服务组件模型 (DS),它是一种组件模型,可简化发布和/或引用 OSGi 服务的组件的创建。在 DS 中,通过将 XML 组件声明文件添加到包资源中,OSGI 包似乎被包装为组件。XML 文件通常包含捆绑服务和引用的声明,类似于SCA复合文件。这是此类文件的示例:
<?xml version="1.0" encoding="UTF-8"?>
<scr:component xmlns:scr="http://www.osgi.org/xmlns/scr/v1.1.0" name="it.eng.test.ds.consumer">
<implementation class="it.eng.test.ds.consumer.Consumer"/>
<reference bind="bindHappy" cardinality="0..1" interface="it.eng.test.ds.happy.IHappy" name="IHappy" policy="dynamic" unbind="unbindHappy"/>
<reference bind="bindSad" cardinality="0..1" interface="it.eng.test.ds.sad.ISad" name="ISad" policy="dynamic" unbind="unbindSad"/>
</scr:component>
我的问题是:SCA 和 DS 之间有什么关系吗?DS 能否实现 SCA 异质性及其组件隔离?例如,DS 能否向/来自不同平台(如 SCA 组件)提供服务或引用?DS 组件能否像 SCA 组件被隔离一样独立(隔离)?