本文旨在向读者分享springMVC项目中Protocol Buffers的一个使用技巧,前提是需要具备对springMVC和Protocol Buffers的基本了解。
Protocol Buffers(以下简称PB)是谷歌推出的一种数据交换格式,高效、易扩展、跨语言(C++, Java, Python)。将它用于网络传输是一个不错的选择。我们服务器与客户端的通讯就是使用它来做序列化与反序列化的。
PB的使用方法大致是这样的:
1.服务器与客户端约定要交换的数据格式,然后用PB的语法将其定义为.proto文件。
2.用PB自带的编译器编译.proto文件,生成对应语言的代码文件,比如java的类文件。
3.生成好的代码包含了对象定义、对象的序列化与反序列化等功能。
PB的详细使用方法不是本文的讨论范畴,如需学习请移步【PB官网】和【博客A】
我曾使用过一款与PB类似的开源项目Hessian,spring中集成了Hessian的服务出口类,相当于一个特殊的servlet,需要配置Web.xml和对应的-servlet.xml文件,它可以完成方法参数和返回值的自动转换。客户端通过代理工厂HessianProxyFactory访问服务器上的接口,就像访问本地方法一样方便,是货真价实的RPC(远程过程调用)。详细参考【Hessian官网】和【博客B】。
受惯性思想影响,我在初次使用PB时到处寻找其与springMVC结合的配置方法。几经折腾后才发现,PB的用法与Hessian很不一样。PB的用法更像是使用工具类,我们需要调用它的parseFrom、writeTo、toByteArray等方法实现对象与流的转换。因此有这些方法就够了,我们无需任何配置。在controller中的使用举例如下:
InputStream in = request.getInputStream();
UseClientInfo useClientInfo = UseClientInfo.parseFrom(in);
说明&#