AI实践哪家强?来 AICon, 解锁技术前沿,探寻产业新机! 了解详情
写点什么

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:001598
用户头像

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

关注

评论

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

从小白到高手 我只用了30天【全栈开发与测试定向培养班】

测吧(北京)科技有限公司

测试

万界星空科技低代码平台,快速搭建MES系统

万界星空科技

低代码 低代码平台 mes 万界星空科技

通过WebShell登录SQL Server主机并使用SSRS报表服务

阿里云瑶池数据库

数据库 阿里云 数据库开发 SQL sever

低代码开发有哪些厉害之处?

互联网工科生

数据安全之路:Databend 用户与角色管理应用

Databend

大数据

CLion 2024激活码 v2024.1 RC中文版详细图文安装教程

Rose

archicad 27破解版下载 Mac 3D建模软件

Rose

高质量ChatGPT Prompts 精选

蓉蓉

#人工智能 ChatGPT GPT-4 Prompt

HoudahGeo 6新功能,gps定位 HoudahGeo mac注册破解版

Rose

质性数据分析软件 ATLAS.ti 8下载 ATLAS.ti 8 mac中文破解版

Rose

从小白到高手,我只用了一个月

霍格沃兹测试开发学社

“大模型驱动的软件研发” 华为云助推企业研发智能化升级

人工智能 云计算 数字化 华为云

dmgArchiver for mac(简单易用的压缩存档软件)v2024.2激活版

Rose

LLM 推理优化探微 (4) :模型性能瓶颈分类及优化策略

Baihai IDP

程序员 AI LLM 白海科技 企业号 4 月 PK 榜

鸿蒙App开发的几种方式

Onegun

鸿蒙 鸿蒙系统

ApowerREC for mac(多功能屏幕录屏工具)v1.2.7.10激活版

Rose

MES系统怎么解决车间生产调度难的问题?

万界星空科技

mes 万界星空科技 生产管理 生产调度 车间管理

软件测试学习笔记丨Python函数可变参数

测试人

Python 软件测试 测试开发

JustStream PRO for Mac(投屏软件)v2.9激活版

Rose

MES与WMS的区别

万界星空科技

wms mes 生产管理 仓库管理系统 智能仓库

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