我们正在开发一些通过Protocol Buffers相互通信的服务。所有服务都是用.NET编写的。我不认为他们会从.NET迁移出来。我不预见在其他平台上使用与服务相同的消息。
消息当前是用.proto编写的。代码生成步骤对我来说似乎是多余的。
除了跨平台兼容性(我们不关心),是否有理由在.proto中而不是直接在.NET语言中编写消息?
答案 0 :(得分:4)
鉴于您描述的设置(.NET-to-.NET,不太可能需要跨平台),那么我会说“不”。我们做了很多很多符合此类别的事情,我们只是在代码优先工作,即我们编写C#类型,然后使用它们。这为我们提供了对类型的完全控制和灵活性,并避免了不必要的构建/工具步骤。
实际上,这实际上是protobuf-net的核心动机和目的:因为它能够在不需要DSL定义的情况下从常规c#类型工作,就像所有其他.NET序列化器一样({{ 1}},XmlSerializer
,DataContractSerializer
等。)
请注意,虽然protobuf-net包含JavaScriptSerializer
功能,但在v2中尚未重新实现;但是,现在我的列表中的下一个是跨平台预编译器已完成并正在运行。我的观点是:如果成为要求进行跨平台等操作,那么protobuf-net可能会帮助您从现有合同中为您生成.proto。
如果您担心可能在某些时候需要与其他平台互操作,请坚持使用核心protobuf功能集。避免使用protobuf-net,例如:
.GetProto<T>
,DateTime
等)