Service 服务组件架构&;声明性服务组件模型

Service 服务组件架构&;声明性服务组件模型,service,osgi,components,declaration,sca,Service,Osgi,Components,Declaration,Sca,根据, 服务组件体系结构(SCA)是一种用于组合遵循面向服务体系结构(SOA)原则的应用程序的软件技术。这是一种具有许多优点的开发模式,包括: 将业务逻辑与its的细节分离 服务实现 支持多种语言的服务,包括C++、java、 COBOL、PHP以及XML、BPEL和XSLT 与各种通信结构无缝协作的能力 包括单向、异步、调用返回和通知 “绑定”到旧组件或服务的能力,可访问 通常通过Web服务、EJB、JMS、JCA、RMI等技术, RPC、CORBA和其他 声明(业务逻辑之外)业务质量的能

根据,

服务组件体系结构(SCA)是一种用于组合遵循面向服务体系结构(SOA)原则的应用程序的软件技术。这是一种具有许多优点的开发模式,包括:

  • 将业务逻辑与its的细节分离 服务实现

  • 支持多种语言的服务,包括C++、java、 COBOL、PHP以及XML、BPEL和XSLT

  • 与各种通信结构无缝协作的能力 包括单向、异步、调用返回和通知

  • “绑定”到旧组件或服务的能力,可访问 通常通过Web服务、EJB、JMS、JCA、RMI等技术, RPC、CORBA和其他

  • 声明(业务逻辑之外)业务质量的能力 服务要求,如安全性、事务和使用 可靠的消息传递

  • 数据可以在服务数据对象中表示

我想补充一点

  • 不同模块(组件)之间的松耦合
我确实使用SCA技术实现了一个简单的软件,并且我可以看到SCA异构性的威力及其平台独立性,这都是借助于

今天,我在看另一个似乎有点相关的模型。它是一个组件模型,它简化了发布和/或引用OSGi服务的组件的创建。在DS中,OSGI捆绑包似乎通过向捆绑包资源添加XML组件声明文件而包装为组件。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组件是隔离的一样

DS和SCA是互补的。一个不能代替另一个。您可以使用DS构建OSGi服务。这些服务可以在OSGi框架中使用。SCA可用于描述跨多个节点的大型SOA设计。OSGi可以是SCA组件的实现类型。因此,当使用OSGi作为SCA的实现类型时,请使用DS for OSGi服务。

DS和SCA是互补的。一个不能代替另一个。您可以使用DS构建OSGi服务。这些服务可以在OSGi框架中使用。SCA可用于描述跨多个节点的大型SOA设计。OSGi可以是SCA组件的实现类型。因此,当使用OSGi作为SCA的实现类型时,请使用DS for OSGi服务。

DS和SCA是互补的。一个不能代替另一个。您可以使用DS构建OSGi服务。这些服务可以在OSGi框架中使用。SCA可用于描述跨多个节点的大型SOA设计。OSGi可以是SCA组件的实现类型。因此,当使用OSGi作为SCA的实现类型时,请使用DS for OSGi服务。

DS和SCA是互补的。一个不能代替另一个。您可以使用DS构建OSGi服务。这些服务可以在OSGi框架中使用。SCA可用于描述跨多个节点的大型SOA设计。OSGi可以是SCA组件的实现类型。因此,当使用OSGi作为SCA的实现类型时,请使用DS for OSGi服务。

我认为这两种模型都有不同的用途,尽管它们都是基于服务的。DS是OSGi框架的一部分,虽然可以使用远程服务,但DS主要局限于java/OSGi。有一些像ApacheWicket这样的框架为web环境中的声明性服务提供某种集成


DS是一个功能强大的java/OSGi框架。我所知道的大多数其他框架的主要区别之一是OSGi的动态方面。服务可以随时来来去去。与并发转换器服务相关(在您链接的示例中):在OSGi中,您可以在运行时退出实现,出于测试目的对其进行模拟等。OSGi捆绑包(主要是带有元信息的java项目)可以提供0…n服务组件)。大多数最佳实践是将服务定义与实现分离成不同的捆绑包(与您链接的示例不同)。简而言之:ds的隔离效果更好,异构性(支持不同的技术平台)不是ds的目标(当然,如果您付出一些努力,可以通过某种方式实现)。希望这能有所帮助。

我认为这两种型号都有不同的用途,尽管它们都是基于服务的。DS是OSGi框架的一部分,虽然可以使用远程服务,但DS主要局限于java/OSGi。有一些像ApacheWicket这样的框架为web环境中的声明性服务提供某种集成

DS是一个功能强大的java/OSGi框架。我所知道的大多数其他框架的主要区别之一是OSGi的动态方面。服务可以随时来来去去。与并发转换器服务相关(在您链接的示例中):在OSGi中,您可以在运行时退出实现,出于测试目的对其进行模拟等。OSGi捆绑包(主要是带有元信息的java项目)可以提供0…n服务组件)。大多数最佳实践是将服务定义与实现分离成不同的捆绑包(与您链接的示例不同)。简而言之:ds的隔离效果更好,异构性(对不同技术平台的支持)不是ds的目标(当然可以通过某种方式实现)