ErikBergstedt工具库简化在.NET中使用Protobuf的方式是什么
Erik Bergstedt工具库简化在.NET中使用Protobuf的方式是什么,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。
我们提供的服务有:网站建设、成都做网站、微信公众号开发、网站优化、网站认证、榆社ssl等。为近1000家企事业单位解决了网站和推广的问题。提供周到的售前咨询和贴心的售后服务,是有科学管理、有技术的榆社网站制作公司
Protobuf是由Google所创建的一种编码格式,它的正式名称叫做Protocol Buffers。这是一种紧凑的二进制格式,它牺牲了内容的可读性与可扩展性,换来了更小的空间占用与更好的性能。为了对某个Protobuf消息进行反序列化,客户端与服务端必须事先对消息中的特定字段达成一致。(与XML或JSON格式相反,客户端可以在运行时对后者的消息结构进行分析。)
.NET版本的Protobuf实现利用了属性的自定义attribute,为每个属性设置了一个“id”值。这些attribute将用于构建包含Protobuf消息的二进制数组。以下是Protobuf的一个应用示例:
[ProtoContract] class Address { [ProtoMember(1)] public string Line1 { get; set; } [ProtoMember(2)] public string Line2 { get; set; } }
在C#中使用Protobuf的方式有些繁琐,因为开发者需要对流(stream)进行操作。而通过使用Erik Bergstedt所开发的Protobuffer库,只需一行代码就可以完成序列化或反序列化工作。
var serialize = _simpleSerializer.ToByteArray(GetPerson()); Person deserialize = _simpleDeserializer.FromByteArray(serialize);
开发者可能会感到疑惑,为什么不将这些API直接加入Protobuf项目中呢?Erik对此写道:
因为这个库的API是写死的,它隐藏了某些功能,这对于某些场景来说可能并不合适。它为了换取简便性而牺牲了某些功能。
举例来说,在这个库里对于流的创建方式是写死的,并且对GZIP的支持也超出了原始的protobuf的功能范围。
我们需要小心地区分特性与特性膨胀的区别。如果将这个库的功能添加至原始的protobuf项目中,我会认为它不是一种特性,而是一种特性膨胀。
Protobuffer是一个基于MIT协议的开源软件。而Protobuf工具本身是由Google所开发的,它支持多种平台与编程语言,包括C++、Java、JavaScript、Python和Ruby等等。
看完上述内容是否对您有帮助呢?如果还想对相关知识有进一步的了解或阅读更多相关文章,请关注创新互联行业资讯频道,感谢您对创新互联的支持。
当前题目:ErikBergstedt工具库简化在.NET中使用Protobuf的方式是什么
当前URL:http://scyanting.com/article/jijspp.html