5.1 Spring-Remoting
Spring-remoting是Spring提供java领域的远程通讯框架,基于此框架,同样也可以很简单的将普通的spring bean以某种远程协议的方式来发布,同样也可以配置spring bean为远程调用的bean 。
- 是基于什么协议实现的?作为一个远程通讯的框架,Spring通过集成多种远程通讯的library,从而实现了对多种协议的支持,例如rmi、http+io、xml-rpc、binary-rpc等 。
- 怎么发起请求?在Spring中,由于其对于远程调用的bean采用的是proxy实现,发起请求完全是通过服务接口调用的方式 。
- 怎么将请求转化为符合协议的格式的?Spring按照协议方式将请求的对象信息转化为流,例如Spring Http Invoker是基于Spring自己定义的一个协议来实现的,传输协议上采用的为http,请求信息是基于java串行化机制转化为流进行传输 。
- 使用什么传输协议传输?支持多种传输协议,例如rmi、http等等 。
- 响应端基于什么机制来接收请求?响应端遵循协议方式来接收请求,对于使用者而言,则只需通过spring的配置方式将普通的spring bean配置为响应端或者说提供服务端 。
- 怎么将流还原为传输格式的?按照协议方式来进行还原 。
- 处理完毕后怎么回应?处理完毕后直接返回即可,spring-remoting将根据协议方式来做相应的序列化 。
5.2 Hessian
Hessian是由caucho提供的一个基于binary-RPC实现的远程通讯library 。
- 是基于什么协议实现的?基于Binary-RPC协议实现 。
- 怎么发起请求?需通过Hessian本身提供的API来发起请求 。
- 怎么将请求转化为符合协议的格式的?Hessian通过其自定义的串行化机制将请求信息进行序列化,产生二进制流 。
- 使用什么传输协议传输?Hessian基于Http协议进行传输 。
- 响应端基于什么机制来接收请求?响应端根据Hessian提供的API来接收请求 。
- 怎么将流还原为传输格式的?Hessian根据其私有的串行化机制来将请求信息进行反序列化,传递给使用者时已是相应的请求信息对象了 。
- 处理完毕后怎么回应?处理完毕后直接返回,hessian将结果对象进行序列化,传输至调用端 。
5.3 Burlap
Burlap也是有caucho提供,它和hessian的不同在于,它是基于XML-RPC协议的 。
- 是基于什么协议实现的?基于XML-RPC协议实现 。
- 怎么发起请求?根据Burlap提供的API 。
- 怎么将请求转化为符合协议的格式的?将请求信息转化为符合协议的XML格式,转化为流进行传输 。
- 使用什么传输协议传输?Http协议 。
- 响应端基于什么机制来接收请求?监听Http请求 。
- 怎么将流还原为传输格式的?根据XML-RPC协议进行还原 。
- 处理完毕后怎么回应?返回结果写入XML中,由Burlap返回至调用端 。
5.4 XFire、Axis
XFire、Axis是Webservice的实现框架,WebService可算是一个完整的SOA架构实现标准了,因此采用XFire、Axis这些也就意味着是采用webservice方式了 。
- 是基于什么协议实现的?基于SOAP协议 。
- 怎么发起请求?获取到远端service的proxy后直接调用 。
- 怎么将请求转化为符合协议的格式的?将请求信息转化为遵循SOAP协议的XML格式,由框架转化为流进行传输 。
- 使用什么传输协议传输?Http协议 。
- 响应端基于什么机制来接收请求?监听Http请求 。
- 怎么将流还原为传输格式的?根据SOAP协议进行还原 。
- 处理完毕后怎么回应?返回结果写入XML中,由框架返回至调用端 。
5.5 ActiveMQ
ActiveMQ是JMS的实现,基于JMS这类消息机制实现远程通讯是一种不错的选择,毕竟消息机制本身的功能使得基于它可以很容易的去实现同步/异步/单向调用等,而且消息机制从容错角度上来说也是个不错的选择,这是Erlang能够做到容错的重要基础 。
- 是基于什么协议实现的?基于JMS协议 。
- 怎么发起请求?遵循JMS API发起请求 。
- 怎么将请求转化为符合协议的格式的?不太清楚,猜想应该是二进制流 。
- 使用什么传输协议传输?支持多种传输协议,例如socket、http等等 。
- 响应端基于什么机制来接收请求?监听符合协议的端口 。
- 怎么将流还原为传输格式的?同问题3 。
推荐阅读
- Java 读取本地 JSON 文件
- Java中如何实现线程的超时中断
- 1分钟带你看懂Java内部类
- HTML5 的JavaScript 客户端PDF解决方案——jsPDF
- JavaScript核心概念归纳整理
- 如何批量导入电话号码到手机通讯录
- 苹果手机怎么批量删除通讯录联系人?简单实用方法总结
- Javascript事件轮询
- 这篇java的NIO编程,保证你能看懂
- 1分钟读懂JavaScript、Ajax、jQuery全部知识点