是否有充分的理由在单平台系统上使用.proto文件?

时间:2012-07-18 07:26:30

标签: .net protocol-buffers protobuf-net

我们正在开发一些通过Protocol Buffers相互通信的服务。所有服务都是用.NET编写的。我不认为他们会从.NET迁移出来。我不预见在其他平台上使用与服务相同的消息。

消息当前是用.proto编写的。代码生成步骤对我来说似乎是多余的。

除了跨平台兼容性(我们不关心),是否有理由在.proto中而不是直接在.NET语言中编写消息?

1 个答案:

答案 0 :(得分:4)

鉴于您描述的设置(.NET-to-.NET,不太可能需要跨平台),那么我会说“不”。我们做了很多很多符合此类别的事情,我们只是在代码优先工作,即我们编写C#类型,然后使用它们。这为我们提供了对类型的完全控制和灵活性,并避免了不必要的构建/工具步骤。

实际上,这实际上是protobuf-net的核心动机和目的:因为它能够在不需要DSL定义的情况下从常规c#类型工作,就像所有其他.NET序列化器一样({{ 1}},XmlSerializerDataContractSerializer等。)

请注意,虽然protobuf-net包含JavaScriptSerializer功能,但在v2中尚未重新实现;但是,现在我的列表中的下一个是跨平台预编译器已完成并正在运行。我的观点是:如果成为要求进行跨平台等操作,那么protobuf-net可能会帮助您从现有合同中为您生成.proto。

如果您担心可能在某些时候需要与其他平台互操作,请坚持使用核心protobuf功能集。避免使用protobuf-net,例如:

  • 继承
  • 特定于.NET的类型支持(.GetProto<T>DateTime等)
  • 参考跟踪
  • 动态类型支持