posts - 22, comments - 32, trackbacks - 0, articles - 71
  BlogJava :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理

JMS,RMI,RPC,webservice 区别!

Posted on 2013-10-30 15:54 为自己代言 阅读(1199) 评论(0)  编辑  收藏

SOCKET使用时可以指定协议TCP,UDP等;

RIM使用JRMP协议,JRMP又是基于TCP/IP;

RPC底层使用SOCKET接口,定义了一套远程调用方法;

HTTP是建立在TCP上,不是使用SOCKET接口,需要连接方主动发数据给服务器,服务器无法主动发数据个客户端;

可以用socket实现HTTP;

其实符合HTTP规范的就是HTTP协议,不管用什么技术。

 

hessian是一套用于建立web service的简单的二进制协议,用于替代基于XML的web service,是建立在rpc上的,hessian有一套自己的序列化格式将数据序列化成流,然后通过http协议发送给服务器,看源码发现其实是使用

HttpURLConnection和servlet建立连接,然后发送流

1. RPC:RPC本身没有规范,但基本的工作机制是一样的,即:serialization/deserialization+stub+skeleton
宽泛的讲,只要能实现远程调用,都是RPC,如:rmi .net-remoting ws/soap/rest hessian xmlrpc thrift potocolbuffer

2. RMI是一种PRC.java的RMI就是java平台上的RPC技术方案。

3. JMS是java平台上的消息规范。一般jms消息不是一个xml,而是一个java对象,很明显,jms没考虑异构系统,说白 了,JMS就没考虑非java的东西。但是好在现在大多数的jms provider(就是JMS的各种实现产品)都解决了异构问题。

4. soap专注于远程服务调用,jms专注于信息交换。

5. 大多数情况下soap是两系统间的直接交互(Consumer <--> Producer),而大多数情况下jms是三方系统交互(Consumer <- Broker -> Producer)。当然,JMS也可以实现request-response模式的通信,只要Consumer或Producer其中一方兼任broker即可


只有注册用户登录后才能发表评论。


网站导航: