• 1. SCA架构卓望数码技术(深圳)有限公司 2010年12月 架构部 宫建涛
  • 2. SCA架构
  • 3. SCA架构立方图
  • 4. 什么是SCA?SCA(Service Component Architecture) SCA由Open Service Oriented Architecture collaboration 提出的一种组件化的面向服务编程模型,并于2007年正式捐献给OASIS组织。 SCA提供了服务组件模型、装配模型和策略框架来支持各种异构应用的封装和集成。 同SCA并列提出的SDO规范,定义了SOA应用程序中访问各种异构数据源的方法。 组件可以以各种不同的协议发布服务,包括SOAP、RMI、REST、JMS,甚至可以是虚拟机内的对象直接调用。 组件可以使用多种技术实现, 包括EJBs, Java POJOs ,Spring Beans,BPEL process , COBOL ,C++, PHP … SCA中,最重要的一个概念是Service----服务,它的内涵是独立于具体的技术。因此,SCA不会称之为 Java组件架构,或Web Service 组件架构。所谓的具体技术,主要有两层含义:一是程序语言,而是传输协议。 现有的组件是和传输协议紧密耦合的。比如EJB组件采用的是RMI传输协议,Web Service组件采用的是SOAP传输协议。SCA组件则能自由地绑定各种传输协议。 SCA是对目前组件编程的进一步升华,其目标是让服务组件能自由绑定各种传输协议,集成其他的组件与服务。 SCA与传统的业务组件最大区别在于SCA实现了两个功能:一是组件和传输协议的分离,二是接口和实现语言的分离。
  • 5. 数码相机生产中体会SCA
  • 6. 乐高玩具中体会SCA SCA的理念与乐高玩具的设计思路很相似。 组件化/模块化 传统的应用好比是普通的玩具,不可拆卸和拼接。 而乐高玩具与众不同,可以按照用户自己的想法随意组装,就是因为它是由标准的微小的组件构成。 基于SCA的应用都是由更小的服务组件组成的,如同乐高玩具的模块; 接口标准化 用乐高玩具可以搭建各种不同的形状,就好比SOA架构可以实现不同的应用;乐高玩具的模块是基于标准化的,因此可以反复利用,SCA架构也是这样。
  • 7. OSOA国际构件标准组织更为开放的组织协作模式 多样灵活的规范制定机制 www.osoa.org email, wiki, con-call, f2f meeting 共同支持开源项目推广标准 Apache Tuscany Eclipse STP 共同支持各类技术大会 OASIS Symposium(08年4月) SOA中国论坛(08年4-7月) SOA中国国家标准大会(08年11月)SCA 规范的内容 Assembly Model 定义了组件装配语言SCAL,以支持服务组件的装配 Component Implementation specifications 定义了使用各种技术开发SCA组件的规范 包括Java, Spring, C++, BPEL, PHP实现技术规范 Binding specifications 定义了组件的服务绑定规范 包括Web services, JMS, RMI-IIOP, REST等 Policy Framework 定义了对组件的安全、事务、可靠性相关的策略配置规范
  • 8. SCA体系结构SCA 将构建面向服务的应用程序的步骤划分为两个主要部分 实现提供服务和使用其他服务的组件 组装组件,以通过服务引用其他服务的方式来构建业务应用程序 SCA 提供了一种机制,用于打包和部署那些紧密相关的组件,这些组件是作为一个整体开发和部署的。这种机制使服务的实现和组装避免了陷入基础设施功能的细节,也避免了调用外部系统。这样可支持不同基础设施间的服务可移植性。
  • 9. SCA体系结构—组件(component)1SCA最基本的元件是组件(component),这是系统的构成单元,也是提供服务的基本单元。 服务(services),表示由本组件提供给其他组件使用的业务功能; 实现(implementation),这里的实现是指提供了特定业务功能的代码段; 属性(properties),这是一些影响业务功能的数据值,可以通过设置这些属性值对实现进行配置; 引用(references),表示本组件的实现所依赖的由其他组件提供的服务。
  • 10. SCA体系结构—组件(component)2
  • 11. SCA体系结构—组件模块(composite)1模块(composite) 模块 是一起开发和部署到 SCA 系统 的最大紧密耦合组件。由一个或多个具有内在业务联系的服务组件构成。SCA 模块包含一系列组件、外部服务、入口点,以及用于衔接这些部分的机制。模块向 SCA 系统提供服务实现。 入口点 定义模块提供的公共服务,此服务可以由同一模块内的其他组件使用,也可以在模块外使用。入口点用于使用特定的绑定 发布模块提供的服务。 模块内的外部服务 表示其他模块提供的远程服务。它们位于使用此服务的 SCA 模块之外。组件可以像访问 SCA 组件提供的任何服务一样访问这些外部服务。外部服务使用绑定来描述对外部服务的访问。 通常都有一个xxx.composite文件用来描述Composite的结构以及每一个Component的实现,接口,服务,引用的定义。
  • 12. SCA体系结构—组件模块(composite)2一个组合构件可以包含多个构件。 每个构件可以定义多个服务和引用;服务和引用通过"接口描述"来描述其业务功能。 SCA中包含了两种类型的接口描述:Java接口和WSDL PortType。 可以为每个构件指定至多一个构件实现。 构件实现是构件服务功能的具体实现。 可以为一个构件定义多个构件属性。 可以为服务和引用定义一个或多个绑定信息。 服务和引用的默认绑定是SCA绑定。
  • 13. SCA体系结构—域(Domain)域(Domain) 域(Domain)是一个系统或者子系统。它由n个Composite组成。在SCA 系统 中,Domain 用于聚合那些提供了相关业务功能的模块。这是通过配置和管理模块组件、外部服务、入口点,以及连接机制来完成的。SCA 系统的配置由所有部署到其中的子系统的组合加以表示。
  • 14. SCA的优势SCA的好处 跨平台、跨语言,不改变应用程序情况下,使用不同的技术来作为组件的实现,或者改变通信协议等等 组件可以自由替换,软件具有高度的弹性以适应变化 服务可以通过简单的配置进行发布和调用 提供了组件的装配规范,可以快速高效组装应用程序 可以适用于各种规模的软件开发
  • 15. SCA实战1—简单、重用性强 通过java注解实现组件组件内部结构
  • 16. SCA实战2—可以灵活绑定多种协议灵活绑定多种协议 支持绑定Ajax、cobra 、erlang、jms、jsonrpc、web service、rmi、http、rss、Script 。
  • 17. SCA实战3—与Spring紧密集成 application-context.xmlhelloworld.composite通过java注解实现组件
  • 18. SCA实战4—与多种服务器集成将tuscany的jar文件放入WEB-INF/lib下面 修改WEB-INF\web.xml,加入下面的配置 两种部署配置 第一种方式 第二种方式
  • 19. SCA实战4—客户端的调用
  • 20. JBIJBI(Java Business Integration) JBI是基于消息交换的组件的集成规范,是由容器和插件(Plug-in)组成的可插入式架构。容器托管使用消息路由进行通信的插件组件。架构上,组件通过一个抽象的服务模型(一个消息传递模型,位于任何特殊协议或消息编码之上的抽象层中)进行交互。在基于JBI的实现中,服务之间并不直接交互。取而代之的是,采用类似EAI实现中广泛应用的消息代理架构,JBI容器扮演在服务之间路由消息的通用中介。 JBI容器托管了2类不同的插件组件 服务引擎(Service Engine,SE)。SE本质上是用来托管JBI环境内部服务提供者和消费者的标准容器f。例如,在JBI环境中经常出现的SE包括数据转换器、业务规则容器和BPEL引擎。 绑定组件(Binding Component,BC)。BC为JBI环境外部的服务消费者和提供者提供互联性。BC允许集成不提供Java API的组件/应用程序,并使用远程存取技术访问它们。
  • 21. SCA与JBI对比SCAJBI本质SCA的本质是一种软件架构思想,致力于为使用广泛的编程语言来构造服务构件提供一种编程模型,并且也为把这些服务构件组装为一个业务上的解决方案提供了一种模型,这种组装的活动正是采用面向服务的架构 (service-oriented architecture) 来搭建应用系统的核心,SCA架构是独立于程序语言的SOA架构;JBI是以请求消息和响应消息作为切入点,在集成时将消息和传输协议解耦,形成一种与传输协议无关的标准消息,这样形成一种全新的区别于现有应用服务器的集成容器目标SCA是对目前组件编程的进一步升华,其目标是让服务组件能自由绑定各种传输协议,集成其他的组件与服务JBI的目标是创建一个用于各种Java组件服务集成的运行环境,JBI容器是为弥补现有J2EE容器的不足而出现的实现思想基于 面向对象的组件化编程的思想,是从编程的角度出发,一种全新的编程模型基于消息的服务总线思想,是从容器的角度出发,一种全新的容器模型 规范SCA和SDO两个规范JBI和JDO两个规范支持厂商IBM,SAP,Oracle,普元,TIBCO,西门子等18家厂商SUN语言平台SCA实现了业务组件和传输协议的分离,可以处理各种平台组件的集成JBI之关注Java组件只处理Java组件的集成
  • 22. 谢谢!