Apache Synapse 1.0 和 WSO2 ESB 1.0 发布

阅读数:477 2007 年 6 月 13 日

话题:SOA开源DevOps语言 & 开发架构

Apache 软件基金会发布了Apache Synapse 1.0;同时,WSO2——Axis2 背后的公司——也发布了基于 Synapse 的商业产品,名为WSO2 ESB 1.0

发布声明中说,

Apache Synapse 是一个简单而高效的 Web Service 中介和 SOA 框架。它可以很容易地作为服务网关或者 HTTP 代理加入到你现有的网络中。一旦你的服务请求开始交由 Apache Synapse 中转,Apache Synapse 就可以执行许多功能,包括路由、负载平衡、变换(transformation)和协议交换(protocol switching)。Apache Synapse 可以用来构建 Enterprise Service Bus(ESB)或者 Service Oriented Architecture(SOA)。

Synapse 的主要功能包括:

  • 支持 XML/HTTP、JMS、SOAP 1.1/1.2、WS-Addressing 和 MTOM 二进制附件
  • XML/HTTP (POX) 和 SOAP、JMS 和 HTTP 之间的简单协议交换
  • 内建支持基于 XPath 和 Regex 的路由,以及基于 XSLT 的变换
  • 支持高性能非阻塞的 HTTP 和 HTTPS(基于 Apache HttpCore)
  • 支持负载平衡、故障转移和流量调节
  • 支持先进的 Web Services 标准
  • WS-ReliableMessaging
  • WS-Security
  • WS-Policy
  • JMS 支持包括文本、二进制数据、XML 和 SOAP/JMS
  • 日志和协议头修改
  • 可通过脚本语言包括 JavaScript、Groovy 和 Ruby 进行扩展
  • 定制的 Java 类和 Spring Framework 构件使 Synapse 得以扩展
  • 可扩展性模型令核心 XML 配置语言可通过 JAR 插件包扩充
  • 支持超时、失败处理和恢复
  • 大量的示例,涵盖了基于内容的路由、XSLT、WS-Security 等等方面。
  • 内建以 Apache Axis2 为基础的测试 / 范例服务器,方便进行原型设计和测试
  • 从远程登录库(registry)加载脚本、元数据、配置和资源的能力
  • 可选的对路由表及其他配置信息的动态更新
  • 支持 JDK 1.4 和 1.5

跟 Axis2 不同,Synapse 不是一个编程环境。相反,它是通过 XML 配置文件(就 Synapse 而言)或者图形用户界面(就 WSO2 ESB 而言)来进行配置和管理的。在 1 月份,InfoQ 曾报道过 Synapse孵化成功的情况;从那以来,Synapse 已经升级到使用 Apache Axis2 1.2,并增加了对非阻塞 HTTP 和 HTTPS 传输的支持。除了在范例和文档上的改进,对 WSDL 端点以及高可用性的支持也都得到了增强。

InfoQ 趁 1.0 版发布的机会对 WSO2 的 CTO Paul Fremantle 进行了进一步的访问。显然,WSO2 ESB 附带商业支持和由 WSO2 提供的训练课程;另外,WSO2 ESB 还附带了一个管理用的 Web 界面和一个注册库(registry)。Paul 在一篇博客文章中说:

我们内建了一个注册库(registry)和仓库(repository),你可以通过 Web 界面来管理它们。这意味着你可以在同一个地方存储、管理和使用所有的资源——WSDL、URL、XSLT、脚本、WS-Policy、Synapse.xml 等等。我认为,这是用 Synapse(或者其他产品)来真正构建 ESB 的一个关键方面。我们在这个方面还要继续增强,敬请关注。

当被问到这次发布的工具中对注册库的支持时,Paul Fremantle 解释说,

通过 HTTP GET 接口或者文件系统,Synapse 可以使用提供 XML 或其他配置信息的注册库。作为 ESB 一部分的“注册库”本质上是一种以文件系统的方式来管理所需资源(WSDL、WS-Policy、XSLT、Synapse XML 配置文件等)的手段。

我们还向 Paul 询问了如何决定是使用 Synapse/ESB 还是 Axis2/WSAS(WSAS 是 WSO2 在 Axis2 基础上提供的商业版本):

首先 ESB 和 Synapse 都应该能够与其他运用 SOAP 或 XML 的系统(包括经由 JMS)互操作。ESB 实际上是一个管理、路由和监控系统。它不是被设计来作为实际服务的宿主,而仅仅是虚拟服务,这些虚拟服务是由在其他地方运行的实际服务实现的。因此你会使用 Axis2/WSAS 来构建实际的服务,而使用 ESB 或 Synapse 来给一组运行在其他地方的服务(可能使用 WSAS、Axis2、Axis1、.NET、Perl、PHP、JMS)创造一个总线(一组虚拟的、受控的、一致的服务)。

Paul 声称WSO2 的 ESB(包括 Synapse)的性能,要远远超越另一个他没提到名字的处于领先地位的商业 ESB 产品:

ESB 被设计成快得冒烟。我们不能说出名字(因为专有厂商通常都写进许可协议里面的那些屁话),但我们对 WSO2 ESB 和一个处于领先地位的专有 / 闭源 ESB 进行了对比测试。结果显示我们在简单路由上快 20%、基于内容的路由上快 30%、XSLT 则快 100%。我们很快会发布这些性能数据。我们有一个完整的非阻塞异步模型——甚至包括 HTTP 和 HTTPS,这意味着我们可以将规模扩展到处理数千个并发连接而没有一点性能下降。

WSO2 已经公开发布了测试结果和基准测试的配置环境。

Apache Synapse 的源码和编译版本都可以从http://ws.apache.org/synapse下载。

查看英文原文:Apache Synapse 1.0 and WSO2 ESB 1.0 Released
译者简介:郭晓刚是一名独立开发者。在经过了 10 年修练之后,总算是懂得一点编程了。目前主要关注以 SpringFramework 和 Hibernate 为主干的 Java Stack 和 Adobe Flex。Microsoft Office 的插件开发也是关心的方向之一。同时也在尽力做一些技术翻译工作,把知识分享给更多的人。参与 InfoQ 中文站内容建设,请邮件至china-editorial@infoq.com