在名为 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
评论