Apache Tuscany SCA Java架构1
概述
SCAJava运行时由core和extension组成。Core本质上来说是一个多VM的wiring引擎。该引擎使用IOC(控制反转)和DI(依赖注入)原则来连接组件。
Core
Extension
Extension增强SCA运行时的功能。Extesion类型不是固定的。而core则是通过提供对extension模块开放支持来使得设计尽量灵活。
- 组件实现类型,例如:Spring, Groovy 和Java
- 绑定类型,比如:Axis, CXF ,AMQP ,ActiveMQ, JXTA
- 数据绑定类型,比如:JAXB, SDO ,XmlBean
- 接口绑定类型,比如:WSDL, Java
关于如何实现一个extension的详细信息可以在Extensions Guide中查看。
运行时
Core是设计得可以嵌入于许多不同的主机环境下的。例如,core也许用于OSGI容器、单独的运行时环境、serlvet引擎或J2EE应用服务器中。运行时的性能根据主机环境不同而不同。
Java SCA运行时的高层概述:
下图是由关键的模块/包组成的SCA运行时高层视图
1、 SCA Spec API:由SCA Java Client and Implementation定义的API
2、 API:扩展了SCA Spec API的Tuscany API
3、 Core:运行时实现和SPI扩展机制
4、 Extension:
1. Component(英文原版有错误) implementation – 扩展语言支持:例如 BPEL,Python,C++,Ruby等
2. Binding – 扩展协议支持:例如 Axis2, CXF等
3. Interface Binding – 扩展服务定义类型:比如SWDL, Java等
4. Databinding – 扩展数据支持:比如SDO, JAXB等
5、 Host platforms:Tuscany运行时的主机环境
<!--[if !vml]--><!--[endif]-->
内部高层视图
参考下图:
<!--[if !vml]--><!--[endif]-->
引导过程
引导过程是由主机环境控制的。默认的实现是DefaultBootstrapper。运行时由某个成型的SCA Assembly XML文件序列化而来并处理服务装配。
- 装载阶段处理SCDL并创建一个内存模型处理相应的运行时工件(例如组件componet,服务service,引用reference)
- 连接阶段将对服务的引用连接起来
SCA装配模型在Tuscany中是用一系列接口表示的。如下是些关键的元素。
- SCA component 是配置化的SCA实现的实例,它可以提供服务或消费服务。
- SCA service用于声明实现的可以被外部访问的服务
- SCA reference用于表示该实现对某些其他实现所提供的服务的依赖。该依赖的服务可以通过配置来指定。
Implementation是用于描述软件技术的概念,例如在面向服务的应用中实现了一个或多个服务的Java 类,BEPL,XSLT转换,C++类。SCA composite也是implementaion。
ComponentType涉及实现的可配置的方面。
Interface定义了一个或多个业务功能。这些业务功能通过Service提供,通过Reference让其他组件使用。服务是由实现的接口来定义的。现在SCA支持两种接口类型系统:Java接口、SWDL portType
SCA composite是SCA域中的compositon的基础单元。SCA Composite是组件的装配,服务、应用和wire都互相连接。
SCA wire将服务引用连接到服务上。
Binding是被服务和引用所使用的。引用使用绑定来描述访问机制,该机制用于访问连接的服务。服务使用绑定来描述客户程序调用服务的访问机制。
Property是考虑到有的实现配置需要显式地设置数据值。该数据值由组件提供,当然也可能来源于容器composite的属性。
<!--[if !vml]--><!--[endif]-->
Contribution
Tuscany运行时提供了一个框架来支持SCA的contribution。框架可以通过下列的两个扩展点来扩展:
PackageProcessorExtensionPoint:它用于处理不同的包装格式或归档的扩展,可以是目录、Jar、OSGI bundle、EAR、War或Zip。
<!--[if !vml]--><!--[endif]-->
<!--[if !supportLists]-->l <!--[endif]-->包处理器会扫描安装了的contribution,并产生需要处理的工件列表。当前有支持文件夹/文件系统和 Jar contribution包。为了让contribution服务有效,包处理器要注册自己给包处理extension 。
<!--[if !supportLists]-->l <!--[endif]-->工件处理器用于处理contribution上的每个有效的工件。为了让contribution服务有效,工件处理器要注册自己给工件处理extension 。对于每个工件,工件处理器分两个阶段被调用。
<!--[if !supportLists]-->? <!--[endif]-->读阶段:这里是你读取工件(可以是一个文档、XML元素或类等等)的地方,组装描述工件的模型并返回它。SCA contribution服务在所有注册了工件处理器的工件上调用ArtifactProcessor.read()。假如你的模型引用了其他的模型,不需要立刻装载那些模型,你只需要保持描述引用的信息,在resolve阶段,你将会把该信息转换成指向被引用模型的指针。注意:你没有必要在这个时刻完全读取并装载模型,你可以在以后来完成这些工作。
<!--[if !supportLists]-->? <!--[endif]-->解析阶段:这个阶段让你有机会解析对其他模型的引用。这个时刻,SCA contribution中所有的描述工件的模型都已经读取,并注册了工件解析器,准备被解析。
<!--[if !supportLists]-->l <!--[endif]-->所有可部署的composite应该在现在准备部署到SCA域中。
包处理器会扫描安装了的contribution,并产生需要处理的工件列表。当前有支持文件夹/文件系统和Jar contribution包。为了让contribution服务有效,包处理器要注册自己给包处理extension 。
工件处理器用于处理contribution上的每个有效的工件。为了让contribution服务有效,工件处理器要注册自己给工件处理extension 。对于每个工件,工件处理器分两个阶段被调用。
? 读阶段:这里是你读取工件(可以是一个文档、XML元素或类等等)的地方,组装描述工件的模型并返回它。SCA contribution服务在所有注册了工件处理器的工件上调用ArtifactProcessor.read()。假如你的模型引用了其他的模型,不需要立刻装载那些模型,你只需要保持描述引用的信息,在resolve阶段,你将会把该信息转换成指向被引用模型的指针。注意:你没有必要在这个时刻完全读取并装载模型,你可以在以后来完成这些工作。
? 解析阶段:这个阶段让你有机会解析对其他模型的引用。这个时刻,SCA contribution中所有的描述工件的模型都已经读取,并注册了工件解析器,准备被解析。
所有可部署的composite应该在现在准备部署到SCA域中。
实现扩展
实现扩展负责实现类型的支持,例如Java,
绑定扩展
绑定扩展负责对绑定类型进行支持,例如web service,JMS,JSON-RPC和RMI
接口扩展
接口扩展负责接口类型的扩展,例如Java接口和WSDL 1.1 portType
数据绑定扩展
关键字:Apache Tuscany SCA Java 架构
新文章:
- CentOS7下图形配置网络的方法
- CentOS 7如何添加删除用户
- 如何解决centos7双系统后丢失windows启动项
- CentOS单网卡如何批量添加不同IP段
- CentOS下iconv命令的介绍
- Centos7 SSH密钥登陆及密码密钥双重验证详解
- CentOS 7.1添加删除用户的方法
- CentOS查找/扫描局域网打印机IP讲解
- CentOS7使用hostapd实现无AP模式的详解
- su命令不能切换root的解决方法
- 解决VMware下CentOS7网络重启出错
- 解决Centos7双系统后丢失windows启动项
- CentOS下如何避免文件覆盖
- CentOS7和CentOS6系统有什么不同呢
- Centos 6.6默认iptable规则详解