跟JBoss、Tomcat或其它web应用服务器相比,Mule有何不同?虽然他们有一些重要的相同点,不同点可以归结为你想达到的目标是什么。某些种类的应用对于Mule来说比较容易去编写、部署和管理,其它种类的应用可能对于web应用服务器来说比较容易编写、部署和管理。
首先来看看相同点:
- 它们都允许你同时运行多个应用。
- 它们都提供应用容器。换句话说,两者都提供一个应用可以运行的环境,扮演一个应用代码与操作系统中介的角色,并且提供数据库访问、更简单的网络通信、内存管理、生命周期管理以及其它服务。
- 它们都允许你在运行时管理你的应用。
不同点:
由于Mule的核心业务是作为一个集成平台,其工作方式与web应用服务器不同。Mule专注于以下三件事情:
- 作为应用平台将数据从一个地方转移到另一个地方——通常在转移途中转换数据使其在其它端点可读。
- 向其它应用输出服务。
- 汇集服务。
简单地说,创造Mule的目的是使得“软件--软件”的交互更加容易。而web应用服务器的设计目的是使得“软件--末端用户”的交互更加容易。如果你需要实现一个用户接口,一个web应用容器通常是一个更好的选择。这并不意味着Mule不可能实现它,而是因为这样做可能是浪费时间,将问题复杂化了。
Mule
|
web应用服务器
|
---|---|
Mule 支持面向服务的架构 |
web应用支持多层架构 |
Mule 专注于集成不同的应用、数据库以及云服务 |
web应用专注于与末端用户进行交互 |
Mule 应用是无状态的、事件驱动的 |
web应用是有状态的 |
与此相反的是,web应用服务器支持一种多层架构,将表示、处理和数据管理在逻辑上分为不同的层。使用一个web应用服务器很容易在表示层提供一个图形用户界面,但是它不包含类似Mule的集成功能,而后者允许它无缝连接到数据库或者其它服务。要实现这样的目的,你必须写一些额外的自定义代码。
Mule应用被建造成一系列轻量级的、无状态的组件,存在于一个被称为flow的事件驱动的处理链中(关于flow的更多介绍,请参见笔者翻译的“开源ESB框架Mule基本概念介绍”一文)。数据进入、流经、流出一个Mule应用,将其它应用、数据库、企业系统或者云服务互相连在一起。通过将独立的服务保持在flow元件的各个端点,Mule支持面向服务的体系结构。
你可以顺利地将Mule嵌入到一个web应用服务器中,例如Tomcat或JBoss,你也可以将其它任意web容器嵌入到Muleflow中。利用Mule来进行服务的集成和汇集工作(这正是设计Mule的本意),使用一个应用服务器来处理末端用户的交互,这样能够提供一套完整的功能。