在 2025 收官前,看清 Data + AI 的真实走向,点击查看 BUILD 大会精华版 了解详情
写点什么

Erik Bergstedt 的工具库简化了在.NET 中使用 Protobuf 的方式

  • 2016-03-09
  • 本文字数:813 字

    阅读完需:约 3 分钟

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<Person>(serialize);

开发者可能会感到疑惑,为什么不将这些 API 直接加入 Protobuf 项目中呢?Erik 对此写道:

因为这个库的 API 是写死的,它隐藏了某些功能,这对于某些场景来说可能并不合适。它为了换取简便性而牺牲了某些功能。

举例来说,在这个库里对于流的创建方式是写死的,并且对 GZIP 的支持也超出了原始的 protobuf 的功能范围。

我们需要小心地区分特性与特性膨胀的区别。如果将这个库的功能添加至原始的 protobuf 项目中,我会认为它不是一种特性,而是一种特性膨胀。

Protobuffer 是一个基于 MIT 协议的开源软件。而 Protobuf 工具本身是由 Google 所开发的,它支持多种平台与编程语言,包括 C++、Java、JavaScript、Python 和 Ruby 等等。

查看英文原文: Thanks to a Utility Library by Erik Bergstedt, Protobuf for .NET Just Got Easier

2016-03-09 18:001868
用户头像

发布了 428 篇内容, 共 201.4 次阅读, 收获喜欢 39 次。

关注

评论

发布
暂无评论
发现更多内容

洞悉数据,守护安全!和鲸助力2024年浙江省交通投资集团数字化主题活动圆满闭幕

ModelWhale

人工智能 交通 数据竞赛

Python脚本消费多个Kafka topic

不在线第一只蜗牛

Python kafka

喜讯!云起无垠获“中国产业互联网发展联盟IDAC双奖”

云起无垠

探索OS升级迭代的兼容性和安全性!龙蜥社区走进中科方德MeetUp开始报名

OpenAnolis小助手

操作系统 龙蜥社区 龙蜥meetup

开放原子校源行(天津大学站) 即将启幕,龙蜥技术专家分享开源技术与实践

OpenAnolis小助手

操作系统 龙蜥社区

人类级别语音 AI 路线图丨 Voice AI 学习笔记

RTE开发者社区

如何设计实施 Git 工作流程以提升软件研发效能?

思码逸研发效能

git DevOps 编程语言 研发效能 研发效能管理

终于能随时解决信息焦虑了

最新动态

第三代指标平台相较于前两代的显著优势分析

Aloudata

指标管理 指标平台 指标开发

【JIT/极态云】技术文档--组织架构简介

武汉万云网络科技有限公司

低代码

Apache IoTDB v1.3.3 发布|新增数据订阅,DataNode 主动监听并加载 TsFile 等功能

Apache IoTDB

作为产品经理,如何分析和管理你的产品需求

易成研发中心

产品需求

有哪些ppt一键生成软件?这6个AI不容错过!

职场工具箱

效率工具 职场 PPT 办公软件 AI生成PPT

CSA GCR 2024 | 百度安全DDoS防护服务荣获安全磐石奖等多项殊荣

百度安全

HarmonyOS NEXT用户专属装扮免费体验!华为主题内容大焕新!

最新动态

Redis大Key问题如何排查?如何解决?

王磊

天润融通携手挚达科技:AI技术重塑客户服务体验

天润融通

天润融通解决方案:如何避免门店投诉升级为消费者维权

天润融通

构建真实可靠指标平台:五大核心特征助力企业深度数智化

Aloudata

指标管理 指标平台 指标开发

倒计时1天!龙蜥社区开源软件供应链及操作系统安全MeetUp即将在广州召开

OpenAnolis小助手

操作系统 龙蜥社区 龙蜥meetup

万字长文带你深入Redis底层数据结构

不在线第一只蜗牛

数据库 redis

软件测试丨全面解析 Allure 2 的安装与运用

测试人

软件测试

ChatGPT 开启「眼睛」,实时摄像头对话来了;昆仑万维推出实时语音助手 Skyo丨 RTE 开发者日报

RTE开发者社区

探索1688拍立淘API接口:图像搜索技术引领电商新潮流

代码忍者

API 接口 pinduoduo API

软件测试丨JUnit5动态测试与生命周期解析

测试人

软件测试

存算分离的过去、现在和未来

Databend

快递员上门取件API接口接口Domo下载

快递鸟

快递

选择ETL工具需要注意什么技术性问题?

谷云科技RestCloud

数据分析 ETL 数据集成

Erik Bergstedt的工具库简化了在.NET中使用Protobuf的方式_.NET_Jonathan Allen_InfoQ精选文章