Mule 2.0 发布啦

  • Ian Roughley
  • 张龙

2008 年 4 月 28 日

话题:JavaSOA语言 & 开发架构

Mule 是一个轻量级且高度可扩展的 ESB,最近它发布了 2.0 版。2.0 版的新特性包括:

  • XML Schema——通过使用基于 XML Schema 的配置,Mule 的配置比以往更简单。这为 IntelliJ 和 Eclipse 这样的 IDE 提供了配置自动补全特性,使得配置更加简单。
  • Spring 式的 Mule——Spring 是默认的配置机制,同时 Mule 也可以利用 Spring AOP、Spring 资源加载和 Spring 模块。
  • 架构上的改进——进行了很多架构上的改进,包括引入了 MuleContext 和 Registry;将 MuleDescriptor 改为独立的服务及组件模型;端点改进;以及对流和转换的改进。

InfoQ 采访了 MuleSource 的 CTO 及共同创始人 Ross Mason 以了解该新版本。

有了架构上的改进、新的 XML 配置及包的重新组织,Mule 2 与 Mule 相比有哪些不同?

主要的改变就是新的 XML 配置。所有的配置元素都是类型良好的(well-typed)且可描述的。在配置文件中不再有类名了(除了你自定义的扩展)。每个命名空间都向你的应用中引入一个模块或者 transport。命名空间使得用户可以为每个 transport 配置 transport 特定的端点,这很轻松地就让我们知道必须的配置以及可选的配置。通过使用基于 schema 的配置,大多数 Xml 编辑器都会提供代码补全及内联文档的功能。

我们可以看到有很多架构上的改变:



  1. 没有 MuleManager 了。相反,我们将这个大对象分解为可管理的几部分,这样扩展就更容易了,同时对核心服务器端行为的回调也更容易。
  2. 从用户的角度来看,他们所处理的对象的定义更加准确了。我们已经仔细研究过 Mule 中的所有对象,并确定他们的定义和作用是定义良好的。
  3. MuleContext 提供了对 Mule 资源的运行时访问(每次一个实例)。
  4. Registry 可以管理运行时对象。你可以拥有多个 Registry,这使你能覆盖现存的 Mule 实例的配置。
  5. 我们已经将组件(定义业务逻辑的 POJO)服务(定义如何以服务的方式管理组件的配置)的概念进行了分解。这对于帮助用户理解组件和服务的关系是很重要的。
  6. 核心的架构尚未改变,这意味着 Mule 的老用户不必抱怨,他们仍旧可以沿用以往的工作方式。

对于现有的 Mule 用户来说有没有推荐的升级方式呢?

现在还只能以手工方式升级到 Mule2.0。配置的结构与 Mule1.0 非常类似,但是对于 Mule2.0 来说,配置量大大降低了。对于 Mule 的企业用户来说,当我们发布了 Mule2.0 企业版时,我们会发布一个升级工具。

这么多的特性,你认为用户对哪些最感兴趣呢?你认为什么特性是最值得你自豪的?

自从对 mule 做了这么多大的改进后,我最自豪的地方就是其核心架构。我们需要为 Mule 上的新项目创建一个良好的平台。不幸的是,大多数用户永远也不会直接看到这些变化 :)



  1. 我们新增了一个表达式计算框架,这意味着用户可以定义像 xpath、xquery、groovy 和 jxpath 这样的表达式并使用 Mule 特定的处理器,如 header、attachment 及 function 表达式在运行时获得消息中的信息。我们可以使用这些表达式快速转换当前的消息、构造新的消息以及进行基于内容的路由。这是相当强大的功能,因为这使得运行时的配置更加动态。为 mvel、ognl 或者 jruby 等增加新的表达式计算插件也是非常容易的。
  2. 我们对消息处理进行了修补,现在已经支持自动转换了,这意味着必要时会探测已有的转换器并应用他们。这样用户就可以使用 MuleMessage.getPayload(org.w3c.dom.Document.class)或者 MuleMessage.getPayload(org.xml.sax.InputSource.class)来请求不同的消息类型。同时用户依旧能像以前那样显式定义转化器。
  3. 消息处理更加高效。默认情况下使用流方式处理,因此没必要再去显式定义流的端点。
  4. 我们对特定 transport 端点配置做了巨大的改进,这将根除端点配置错误的情况发生。
  5. 就在 Mule 2.0 发布的同时,我们还发布了 Mule IDE 的里程碑。它基于 Eclipse 并且包含了对新的可视化拖拽编辑的预览。

你还想增加什么呢?

架构上的改变使得 Mule 能从 OSGi 容器上加载。Mule 2.0 还不支持 OSGi,但是在本月初旧金山举办的 MuleCon 大会上,我们在 Mule 上演示了一个服务热部署的 demo,大家都对这个 demo 表现出极高的热情。

Mule 2.0 已经发布了,请查看概览下载最新版以了解这些新特性是如何工作的。

查看英文原文:Mule 2.0 Released

JavaSOA语言 & 开发架构