用过和WebService相同的技术么?
Hessian是一个轻量级的remoting onhttp工具,使用简单的方法提供了RMI的功能。 相比WebService,Hessian更简单、快捷。采用的是二进制RPC协议,因为采用的是二进制协议,所以它很适合于发送二进制数据。Hessian 是由 caucho 提供的一个基于 binary-RPC 实现的远程通讯 library 。
1 、是基于什么协议实现的?
基于 Binary-RPC 协议实现。
2 、怎么发起请求?
需通过 Hessian 本身提供的 API 来发起请求。
3 、怎么将请求转化为符合协议的格式的?
Hessian 通过其自定义的串行化机制将请求信息进行序列化,产生二进制流。
4 、使用什么传输协议传输?
Hessian 基于 Http 协议进行传输。
5 、响应端基于什么机制来接收请求?
响应端根据 Hessian 提供的 API 来接收请求。
6 、怎么将流还原为传输格式的?
Hessian 根据其私有的串行化机制来将请求信息进行反序列化,传递给使用者时已是相应的请求信息对象了。
7 、处理完毕后怎么回应?
处理完毕后直接返回, hessian 将结果对象进行序列化,传输至调用端。
WebService数据压缩
在使用WebService技术的过程中,免不了进行数据传输,比如说传输文本、图片、Zip压缩包等。在网络环境比较好、数据量小的情况下,传输的方式可以忽略不计,我们可以选择任意的方式,不需要考虑优化的问题,可以将图片、包变成二进制流进行传输,可以从数据库读出数据来,以DataSet形式进行传输。
但是如果网络条件不好,或者数据量很大的时候,我们就要考虑到对数据进行压缩之后再传输。
例如在传输DataSet的过程中,我们首先要从数据库中读取DataSet,利用DataSetSurrogate类将DataSet序列化,转换成二位数组,这个时候数据的大小基本上变成原来的1/3,然后我们利用SharpZipLib对数据进行压缩,最后使用WebService Enhancements的WS-Attachment进行传输。将包放到SOAP附件里面,而不是在信封里面,不用经过XML序列化,封成DIME消息(Direct Internet Message Encapsulation),这样原来的大数据就可以被封成很小的数据了,传输也变得简单,迅速。
实现DIME文件传输,我们首先要安装Microsoft WSE 2.0 SP3.msi,然后在服务器端配置:
1.添加Microsoft.Web.Service2.dll引用
2.修改WebConfig配置文件
3.WebMethod实现
最后在客户端引用,Reference.cs文件中代理类的基类为Microsoft.Web.Services2.WebServicesClientProtocol;
WebService数据加密
发布WebService服务的过程中,为了安全,通常需要安全验证。所谓的安全验证就是客户端的每一次请求,都要带着请求头,而服务端就去解析请求头,看里面带的token是否跟预期的一致,如果一致就说明安全了,否则就抛出异常不让调用。
那么我们在实现安全验证的过程中,我们涉及到了这样两个操作:
首先在客户端发送webService调用前,构造一个SOAP消息头,把token带过去
然后在服务器端解析消息头,把指定的那个头字段解析出来,对比两边的token是否相同 |