tuscany
tuscany是Apache组织关于SOA实现的一个开放源码的工程项目,目前处于孵化期阶段。
该项目主要基于SCA,SDO,DAS等技术上实现的。
SCA 的基本概念以及 SCA 规范的具体内容并不在本文的范畴之内,有兴趣的读者可以通过一些相关文档了解相关内容,这也是阅读本文的基础。下面本文首先对 Tuscany 框架做一定的介绍。
Tuscany 是 Apache 的开源项目,它是 IBM、Oracle、SAP 等厂商联合成立的 SOA 标准化组织 -OSOA 支持下开发出的 SCA 框架,它既是开源界 SCA 的试金石,也是当前开源界最成熟的 SCA 框架之一。
Tuscany 基本架构
图 1 为 Tuscany 的基本架构图,从图中可以看出,作为一个轻量级 SCA 框架,Tuscany 提供了非常松散耦合的框架结构。主要有以下几个特点:
· Tuscany 是平台无关的可嵌入框架,可以在各种 Hosting Platform 上运行,如 Tomcat,JBoss,WAS 等 Web 容器上运行,也可以在 J2SE 环境下运行。
· Tuscany 的核心模块提供了 SCA 规范的 API 实现,Tuscany 系统的 SPI 接口,一些系统基本实现(如事件,工厂类,存储等),以及一整套扩展机制,这些扩展机制为 Tuscany 整合各个平台的服务提供了基础。
Tuscany 的扩展是完全松散耦合的,框架本身提供了大量的扩展实现,用户也可以在自己的系统中扩展 Tuscany 的实现,只需要遵循 Tuscany 的扩展规范以及 API 接口。
图1.Tuscany基本架构图
Tuscany 主要有以下几个方面的扩展:
· Implementation:SCA 组件(Component)的实现方式,一个 SCA 组件可以由各种语言或技术平台实现,如:POJO,EJB,Spring Bean,bpel 流程,各种脚本语言等等。
· Binding:是 SCA 的绑定(Binding)规范的实现,SCA 服务(Service)和引用(Reference)的绑定方式,即一个 SCA 服务可以暴露为 Web Service,Java RMI 服务,http 资源,jms 消息等等,一个 SCA 引用也可以通过 Web Service,RMI 调用,http 调用,jms 调用等方式调用远端服务。
· Databinding:数据绑定方式,这是 Tuscany 提出的概念,一般用与在 Binding 中定义参数的传输格式,比如 Web Service 的 Binding 一般用 XML 格式,SCA 的 Binding 一般用 SDO 格式,Jsonrpc 的 Binding 一般用 Json 格式等等。
· Interface:是 SCA 的接口(Interface)规范的实现,SCA 服务(Service)和引用(Reference)的接口暴露方式,一般有 Java,WSDL 等类型。
Tuscany 的 Web 2.0 扩展
Tuscany 在 Web 2.0 方面主要提供了以下几类扩展:
· Implementation 扩展:script implementation 提供了各种脚本语言的实现,如 Javascript,python,ruby 等,widget implementation 提供了将一个 SCA Component 封装成 widget 的能力。resource implementation 提供了一种简单的 http 资源的实现。
· Binding 扩展:atom binding 提供了 atom 方式的绑定实现,dwr binding 提供了利用 dwr 框架进行 ajax 调用的能力,http binding 提供了直接进行 http 访问的能力,jsonrpc binding 提供了在 Javascript 中使用 jsonrpc 进行 ajax 调用的能力。
Databinding 扩展:json 格式的 databinding 提供了将 json 格式的数据与其他格式(如 xml,Java Bean,SDO 等)之间互相转换的能力。