首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Protobuf-net .proto模式

使用Protobuf-net .proto模式
EN

Stack Overflow用户
提问于 2019-05-09 09:30:55
回答 1查看 621关注 0票数 2

我有一个现有的Web项目,在运行了一些测试之后,我想开始实现protobuf。使用Serializer.GetProto<>()方法,我得到了以下数据(仅显示开头):

代码语言:javascript
复制
syntax = "proto2";
package MyProject.Models;
import "protobuf-net/bcl.proto"; // schema for protobuf-net's handling of core .NET types

message AssemblyComponentDetailsModel {
   optional .bcl.Guid ID = 1 [default = 00000000-0000-0000-0000-000000000000];
   optional string AssemblyName = 2;
   optional string ReferenceNumber = 3;
   optional .bcl.Guid TypeID = 4 [default = 00000000-0000-0000-0000-000000000000];
   optional .bcl.Guid CategoryID = 5 [default = 00000000-0000-0000-0000-000000000000];
   optional string Symbol = 6;
   repeated ComponentDetailsModel ComponentDetails = 7;
   optional .bcl.Decimal MsrpTotal = 8 [default = 0];
}

这个项目的前端是使用Range7,而我正在使用这个页面上的信息来实现它:https://medium.com/francesco-pongetti/using-protocol-buffers-in-a-node-js-angular-web-application-fba17df8ab51

我的问题是,proto文件具有导入语句import "protobuf-net/bcl.proto",并且正在使用来自该文件的项(例如optional .bcl.Guid)。这会导致问题反序列化的角度吗?如果是的话,修复这个问题最简单的方法是什么?这个项目中有很多类的,我试图避免手工编写所有的.proto文件。

任何指导/建议都是非常感谢的,因为这是我第一次在实际项目中使用protobuf。

提前谢谢你。

EN

回答 1

Stack Overflow用户

发布于 2019-05-09 09:41:13

从理论上讲,它应该工作得很好-- bcl.proto是一个完全正常的.proto模式。 --然而,bcl.proto中的类型本质上描述了我如何将.NET类型黑客到protobuf中。在可能的情况下,我建议在可能的情况下避免这种情况--例如,DateTimeTimeSpan在bcl.proto work中,但如果您不在.NET中,则使用起来非常尴尬,但是protobuf也允许您使用后来添加的Google类型:DurationTimestamp。protobuf不默认的原因是Google添加的时间远远晚于protobuf的支持。若要使用此选项(对其工作的类型(这是有限的)):请使用:

代码语言:javascript
复制
[ProtoMember(n, DataFormat = DataFormat.WellKnown)]

在财产/场地上。GetProto/GetSchema将自动发出正确的import语句,以匹配正在生成的模式。

然而,在Guiddecimal的情况下,我要说的是,这些选项不太清楚。对于Guid,如果可能的话,我很想使用string --事实上,guids在二进制表示中有太多的歧义,使用简单的string是最实用的选择。decimal对非.NET平台非常不友好:如果可能的话,考虑使用double -或者如果您需要避免浮点:要么通过手动缩放整数使用定点,要么再次使用string

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56056394

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档