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



我们正在开发一些通过协议缓冲区相互通信的服务。所有的服务都是在.NET上编写的。我不打算将它们从.NET中迁移出去。我也不打算将相同的消息用于其他平台上的服务。

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

除了跨平台兼容性(这不是我们关心的问题)之外,还有什么理由用.proto而不是直接用.NET语言编写消息吗?

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

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

请注意,虽然protobuf-net包含.GetProto<T>特性,但它尚未在v2中重新实现;然而,现在跨平台预编译器已经完成并可以工作了,这是我列表中的下一个。我的观点是:如果成为跨平台等的需求,那么protobuf-net可能能够帮助您从现有合同中生成.proto。

如果您担心可能在某个时候需要与其他平台互操作,请坚持使用核心protobuf功能集。避免protobuf网络添加,如:

  • 继承
  • .NET特定的类型支持(DateTimedecimal等)
  • 参考跟踪
  • 动力式支架

最新更新