Beetle在Tcp通讯中使用Protobuf
2013-06-06 14:18
288 查看
smark
Beetle可靠、高性能的.Net Socket Tcp通讯组件 支持flash amf3,protobuf,Silverlight,windows phoneBeetle在Tcp通讯中使用Protobuf
Protobuf是google制定的一种对象序列化格式,而在.net下的实现有protobuf-net.而protobuf-net在序列化方面有着出色的性能,效率是.net二进制序列化几倍,而序列化后所占的空间也少于.net二进制序列化;除了以上两个优势外Protobuf有着一个更大的优势就是和其他平台交互的兼容性,在现有大部分流行的语言平台中基本都有Protobuf的实现.因此采用protobuf进行对象序列化是个不错的选择.接下来详细讲解Beetle实现对protobuf-net支持.定义协议格式
为了保证TCP数据流正确处理,首先要做的事情还是要制定一个处理协议,来保证数据处理的有效性.数据包同样也是两部分组件,头描述消息总长度,消息体是主内容.由于Protobuf-net序列化的数据交不包括消息类型,所以在协议中必须包括类型名称用于提供给对方实始化对应的类型过行反序列化操作.
实现具体的分析器和消息适配器
协议制定后就可以进行分析器的实现,由于采用头4字节描述大小,所以分析器从HeadSizeOfPackage基础类派生下载重写相关方法即可;完整实现代码如下:?
?
实现相应的TCP服务
协议分析器扩展完成后就通过它来实现一个基于protobuf对象处理的TCP交互服务.?
连接到服务进行对象通讯
同样接入服务端的代码只是改变一下泛型参类型即可?
?
运行效果
下载代码:Code
总结
由于Protobuf制定的协议是开放的,所以很多平台下都有相关实现包括:c++,java,php等.通过整合protobuf作为协议载体可以方便地和其他平台进行TCP数据交互整合.相关文章推荐
- Beetle在Tcp通讯中使用Protobuf
- wp8使用Beetle.NetPackage实现基于TCP通讯的订单查询
- Beetle在TCP通讯中使用协议分析器和自定义协议对象
- Beetle在TCP通讯中使用二进制序列化对象传输
- windows phone使用Beetle实现对象交互的TCP通讯
- Beetle在TCP通讯中使用AMF3协议和Flash通讯
- GCDAsyncSocket类库,IOS下TCP通讯使用心得
- 在WINCC中使用WinSock控件与倍加福RFID进行TCP_IP通讯
- 【转】 在C#中使用异步Socket编程实现TCP网络服务的C/S的通讯构架2
- nodejs 使用net模块进行tcp通讯示例
- 在C#中使用异步Socket编程实现TCP网络服务的C/S的通讯构架(一)----基础类库部分
- C#使用TCP/IP与ModBus进行通讯
- 在C#中使用异步Socket编程实现TCP网络服务的C/S的通讯构架
- GCDAsyncSocket类库,IOS下TCP通讯使用心得
- 使用Beetle.Express简单构建高吞吐的TCP&UDP应用
- 在C#中使用异步Socket编程实现TCP网络服务的C/S的通讯构架(二)----使用方法
- C#中使用异步Socket编程实现TCP网络服务的C/S的通讯构架(一)
- 高效能TCP通讯基础组件Beetle.Express
- 小结一下Linux下使用TCP通讯时遇到的问题
- C#中使用异步Socket编程实现TCP网络服务的C/S的通讯构架(二)