技术开发 频道

使用NetKerne实现REST风格的ESB

解决方案

    1. 总览

    SOA可以通过很多不同的模式和技术来实现。传统方式是选择WS-*规范中所列出的模式,而且可以从Apache ServiceMix这样的开源解决方案或Cape Clear 和Sonic Software商业套件等广泛的技术产品中任意选择一种。不幸的是, WS-*规范仍处于不停的修改中,并且开发人员不得不消化1300页的文档来得到技术细节,这足以让许多人望而却步。比如说,如果完全坚持遵循所有规范的话,实现一个SOAP服务需要以下这些步骤:

  1. 使用业务流程建模符号(BPMN)来对流程进行建模。
  2. 使用WSDL来定义服务接口,使用UDDI(Universal Description,Discovery and Integration——统一的描述、发现和集成)库来注册服务。
  3. 使用从服务注册访问服务的BPMN来生成业务流程执行语言(BPEL)。
  4. 使用WS-Policy来定义访问服务的管理策略。

    市场上的商业ESB套件都已经获得各方的评估,由于这个IT团队相对较小,最终团队决定寻找这样一个解决方案:这个解决方案最终在各系统间引起的矛盾或冲突要小;它所需要的创新要在这个较小的IT团队人力资源所能承受的范围之内;它不应该迫使团队使用依赖于唯一供应商的中央服务集权式模型。大学的领域是极具流动性的,拥有多变的流程、多变的应用、以及多变的集成,因而,它所需要的是能反映大学正真的自然特性的一个总体构架和策略。

    由于消息请求在之前已作为跨大学的中心传输机制,团队决定选择REST类型或面向资源(Resource-Oriented)的方式来实现SOA。 REST基于一组较小的被广泛接受的标准,比如HTTP和XML,这些标准不需要很多开发步骤、不需要很多工具箱和执行引擎。采用REST类型的方式来实现SOA的有三个最主要的优点:较低的开销、投入市场较快、灵活的架构。面向资源的方式在REST风格方式的基础上提供了更广泛的扩展和独立通信基础。 REST设计模式提倡使用HTTP,而面向资源的架构则支持将服务连接到HTTP以及诸如JMS或SMTP这样的通信协议上。

    尽管有一些像Codehaus Mule那样的ESB实现支持REST,但只有1060 NetKernel是建立在在面向资源的计算平台 2 (Resource-Oriented Computing Platform,“ROC”)之上的。面向资源计算的核心是将信息(资源)的逻辑请求从发送请求的物理机制(代码)中分离出来。使用ROC建立的服务被证实是小巧、简单、灵活的,并且和传统方式相比较需要实现的代码更少。这些优点决定了它是创建技术平台理想的技术选择。

    2. 技术平台

    NetKernel是面向资源的中间件,它提供企业服务总线(ESB)核心功能:寻址、路由和数据转换,而且能够像服务注册编制(orchestration)引擎那样工作。NetKernel能够提供很多特性,它能提供一些诸如XML转化、缓存管理、多线程处理和包括HTTP和 JMS在内的多种传输协议等高级功能,而SOAP引擎使它能够提供传统的web服务。NetKernel是异质企业集成的坚实基础。

    从概念上来说,NetKernel提供访问的资源是按统一资源标识符(URI)地址进行识别的。所有URI地址在一个逻辑地址空间中统一管理。基于 REST的微核负责处理所有的资源请求,从地址空间中解析URI地址,并且返回该资源的表示。向微核发送的请求也可以被用来创建新的资源、更新或删除现存资源。

    从物理上来说,NetKernel系统是由模块组成的,这些模块通过URI地址暴露出公共服务接口和资源。和Java EAR类似,每个模块都包含源代码和资源配置。模块可以从逻辑上引入另一个模块的公共服务和资源,将它们包含到地址空间中。由于引入需要指出模块的逻辑名字并能够辨别出版本号,因此多个版本能够在同一个系统中运行和更新。服务请求通过传输器注入到NetKernel中,这些传输器是位于系统边缘的事件侦测器。服务的客户可以通过任何可支持的传输器,比如HTTP或JMS来发送请求。


图2 技术平台

    HTTP是无状态请求/回复应用协议。request消息结构包括一个命令、头部和体部。response消息则由状态、头部和体部组成。客户和服务器间使用TCP socket交换这些信息。客户/服务器传输层可以通过使用SSL协议对两者间的交互进行安全保护,而消息本身可以使用加密和数字签名来确保安全。最后,客户可以通过使用HTTP-Basic或HTTP-Digest的鉴别机制3来进行鉴别。

    JMS API为平台提供了实现异步服务的平台。然而,该API需要提供者,在这个案例中,这个供应商是IBM WebSphere MQ。IBM MQ是面向消息的中间件(MOM),它在各应用软件间提供基于队列的通信信道。信道的使用点对点或Hub & Spoke拓扑来实现。除了传输消息,MQ还能够处理工作流、流程自动化、数据转换、监控和管理。

0
相关文章