我正在编写一个通用SDK,我计划使用Protobuf(由于它的优点) . 我会有一个通用标头消息,如下所示

class Header
{
  string Id;
  Datetime Timestamp;
  string ProcessName; //This is the Process in my server
  string SessionID;
}

理想情况下,此消息将由应用程序消息继承并编写自己的消息 . 应用程序消息的伪代码将是

class Application : Header
{
  string AppId;
  string Message;
}

现在实施如下

Application appobj = new Application();
appobj.Id = "1";
appobj.Timestamp = DateTime.Now();
appobj.ProcessName = "ApplicationLog";
appobj.SessionId = "aaa-ee-rr"; //Guid
appobj.AppId = "App Logger";
appobj.Message = "Database";

理想情况下,当我收到消息时,我将只获得Application class proto(内部继承Header),其原型定义将不会出现在我身上,因为不同的应用程序将拥有自己的原型 . 服务器应用程序只有Header的proto消息,它应该读取并重定向到服务器上运行的不同进程,具体取决于“进程名称” .

另一个考虑因素是c#中的不同进程,但在Python中结合使用 . 我看到了protobuf-csharp-port和Protbuf-net版本(由不同的人编写)并且理解为了涉及各种编程语言,使用csharp-port比使用Protobuf-net版本更好 .

我在Stackoverflow和网上搜索了很多,但我无法找到从应用程序消息中获取Header信息的解决方案,而不知道Application message proto(我只知道应用程序继承的Header proto) .