CRISPY,一个新的远程框架

  • Boris Lublinsky
  • 黄璜

2009 年 6 月 7 日

话题:SOA架构

在名为CRISPY Web 服务的新文章中,Sachin Mahajan 讨论了一个名为 CRISPY 的新框架 (Communication per Remote Invocation for different kinds of Services via ProxYs) - 一个远程调用 API,支持多种传输方式包括: RMI,EJB,JAX-RPC,REST,XML-RPC,direct Java invocation,等等。所有的调用都可以同步或异步执行。援引CRISPY 项目网站的说法,CRISPY:

... 的工作方式是使用属性一类配置一个服务管理器,它将被用于调用远程 API。CRISPY 是一个简洁的 Java 代码库,其 API 位于你的客户端代码和你的代码必须访问的服务两者之间。它提供了一层抽象,解耦了客户端代码与要访问的服务及其位置与底层实现。这一想法的特别之处在于,所有的这些调用都是简单的 Java 对象调用 (远程调用或本地调用是透明的)。

CRISPY 的主要优势是

  • ... 易于使用。
  • ... 最少的配置。
  • 你可以从 Java 对象调用远程方法,就像本地调用一样。
  • 你不需要知道,(远程) 技术是如何工作的。
  • 你可以容易地更改所用的技术 (比如从 XML-RPC 换到 RMI)。
  • 服务不需了解一个远程接口或一个远程异常 (RMI 是如何的)。
  • 其参数可以是一个复杂的对象 (不需要编写串行器 (数据编制) 或者反串行器 (数据编出) 的部分)。

CRISPY 同时还提供了对于拦截器以及 / 或修改器更好的调用控制。拦截器在方法调用的前后都可以使用,可被用于日志记录,时间安排,等等。修改器同样可用于方法调用的前后。它们可被用于转换 / 扩展 / 丰富调用参数,比如,加入安全头部,转换 / 扩展 / 丰富执行结果。

CRISPY 框架的主要组件包括:

  • 服务管理器-这是创建服务的工厂。
  • 属性-用于配置服务管理器。
  • 服务接口- 普通的 Java 类。
  • 代理 / 执行器-所有来自服务接口的调用都会委派给代理 / 执行器。

CRISPY 同时还可以与其它的流行框架相结合。一张关于现有已实现集成的框架的列表中包括了 SpringFramework,HiveMind(Jakarta),PicoContainer(codehaus),OSGi,AspectJ,等等。

TheServerSide.com 网站的讨论将 CRISPY 与 APache WSIF,Spring remoting 以及其它提供相同功能的框架进行了比较-对多种传输方式提供统一的调用模型。

在许多需要将客户端代码与调用协议和服务位置解耦的情况中,CRISPY 都能得到很好的应用。

查看英文原文:CRISPY, a New Remoting Framework

SOA架构