处仅在于传输的标准格式由XML转为了二进制的格式。
同样来回答问题:
1.传输的标准格式是?
标准格式的二进制文件。
2.怎么样将请求转化为传输的流?
将二进制格式文件转化为流。
3.怎么接收和处理流?
通过监听的端口获取到请求的流,转化为二进制文件,根据协议获取请求的信息,进行处理并将结果写入XML中返回。
4.传输协议是?
Http。
SOAP
SOAP原意为SimpleObjectAccessProtocol,是一个用于分布式环境的、轻量级的、基于XML进行信息交换的通信协议,可以认为SOAP是XMLRPC的高级版,两者的原理完全相同,都是http+XML,不同的仅在于两者定义的XML规范不同,SOAP也是Webservice采用的服务调用协议标准,因此在此就不多加阐述了。
CORBA
CommonObjectRequestBrokerArchitecture(公用对象请求代理[调度]
程序体系结构),是一组用来定义“分布式对象
系统”的标准,由OMG(ObjectMenagementGroup)作为发起和标准制定单位。CORBA的目的是定义一套协议,符合这个协议的对象可以互相交互,不论它们是用什么样的语言写的,不论它们运行于什么样的机器和操作系统。
CORBA在我看来是个类似于SOA的体系架构,涵盖可选的远程通信协议,但其本身不能列入通信协议这里来讲,而且CORBA基本淘汰,再加上对CORBA也不怎么懂,在此就不进行阐述了。
JMS
JMS呢,是实现java领域远程通信的一种手段和方法,基于JMS实现远程通信时和RPC是不同的,虽然可以做到RPC的效果,但因为不是从协议级别定义的,因此我们不认为JMS是个RPC协议,但它确实是个远程通信协议,在其他的语言体系中也存在着类似JMS的东西,可以统一的将这类机制称为消息机制,而消息机制呢,通常是高并发、分布式领域推荐的一种通信机制,这里的主要一个问题是容错(详细见ErLang论文)。
来看JMS中的一次远程通信的过程:
1.客户端将请求转化为符合JMS规定的Message;
2.通过JMSAPI将Message放入JMSQueue或Topic中;
3.如为JMSQueue,则发送中相应的目标Queue中,如为Topic,则发送给订阅了此Topic的JMSQueue。
4.处理端则通过轮训JMSQueue,来获取消息,接收到消息后根据JMS协议来解析Message并处理。
回答问题:
1.传输的标准格式是?
JMS规定的Message。
2.怎么样将请求转化为传输的流?
将参数信息放入Message中即可。
3.怎么接收和处理流?
轮训JMSQueue来接收Message,接收到后进行处理,处理完毕后仍然是以Message的方式放入Queue中发送或Multicast。
4.传输协议是?
不限。
基于JMS也是
常用的实现远程异步调用的方法之一。