一、常用的RPC模式
RPC模式 | 使用情况 |
RMI(远程方法调用) | 不考虑网络限制(如防火墙)是,访问/公开基于Java的服务 |
Hessian 或 Burlap | 考虑网络限制时,通过HTTP访问/公开基于Java的服务 |
HTTP invoker | 考虑网络限制时,访问/公开基于Spring的服务 |
JAX-RPC/SOAP | 访问/公开平台中立的,基于SOAP的Web服务 |
二、RMI
一个正常工作的RMI系统由下面几个部分组成:
- 远程服务的接口定义
- 远程服务接口的具体实现
- 使用RMI编译器rmic编译具体实现,生成Stub 和 Skeleton 文件(Client Stub , Server Skeleton)
- 一个运行远程服务的服务器
- 一个RMI命名服务,它允许客户端去发现这个远程服务,Naming.rebind("rmi://localhost:1099/CalculatorService", c);
- 类文件的提供者(一个HTTP或者FTP服务器)
- 一个需要这个远程服务的客户端程序,
- Calculator c = (Calculator)
- Naming.lookup(
- "rmi://localhost·
- /CalculatorService");
Hessian消息格式为二进制,Burlap消息为XMl。Hessian要求远程服务通过Servlet暴露出来。
Hessian可以使用Spring实现客户端和服务端,与客户端相关的类为HessianProxyFactoryBean;而服务端的模式设计为Spring MVC,其中HessianServiceExporter被实现为Controller,还需要配置web.xml 文件的Spring的DispatcherServlet,将二者联系起来的是URLMapping
四、HTTP invoker
HTTP invoker 介于RMI 和 Hessian,与Hessian不同的是,HTTP invoker使用Java标准的对象序列化。