Java Remoting选取方案
l 性能要求特别高的:可以选用Socket,RMI;
l 跨平台,跨语言,安全性,易用性:Webservice;
l 跨平台,跨语言,易用性,性能:Hessian,REST;
l 不跨语言,性能,易用性:NIO(Netty,Mina),RMI。
技术名称 | 是否收费 | 优点 | 缺点 | 备注 |
Socket | 否 | 跨语言,跨平台,速度快,根据需要制定数据传输格式 | 不支持面象对象、事务,编码实现相对复杂。 |
|
RMI | 否 | 面向对象的远程服务模型;基于TCP协议上的服务,执行速度快 | 不能跨语言;每个远程对象都要绑定端口,不易维护;不支持分布式事务JTA |
|
EJB | 否 | 可扩展性好,安全性强,支持分布式事务处理。 | 不能跨语言;配置相对复杂,不同J2EE容器之间很难做无缝迁移 |
|
Web Service | 否 | 跨语言、跨平台,SOA思想的实现;安全性高; | 性能相对差,不支持两阶段事务,不支持复杂对象如:List、Map |
|
Hessian
| 否 | 使用简单,速度快;跨语言,跨平台,支持复杂对象。 | 安全性的支持不够强,不支持两阶段事务,客户代码不能自动生成 | 类Webservice,不过Hessian数据传输格式不用XML,采用二进制方式。 |
NIO | 否 | 基于TCP通信,效率上高于HTTP的方式,非阻塞IO应对高并发绰绰有余。根据具体的需要制定数据传输的格式,可扩展性强。 | 不能跨语言,无法穿透防火墙。 | 底层实现socketcet通信,有Netty,Mina框架。 |
HTTPInvoker | 否 | 基于HTTP的Java到Java Remoting;通过HTTP实现Java串行化;容易建立 | 服务器和客户端应用程序都需要使用Spring。 仅是一种Java方案。
|
|
REST | 否 | 基于HTTP,返回的结构可以是任格式(由开发者定义),效率比Web服务高,适用于无需多步操作场景。 | 只是一种私有约束,缺乏标准,安全性差。 |
|