我正在编写一个通用 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),它的 proto 定义不会出现在我身上,因为不同的应用程序会有自己的 proto。服务器应用程序将只有标头的原始消息,它应该根据“进程名称”读取并重定向到服务器上运行的不同进程。
另一个考虑因素是不同的进程在 c# 中但在 Python 中是耦合的。我看到了 protobuf-csharp-port 和 Protbuf-net 版本(由不同的人编写),并且了解到对于涉及的各种编程语言,使用 csharp-port 比使用 Protobuf-net 版本更好。
我在 Stackoverflow 和网上进行了很多搜索,但我无法找到从应用程序消息中获取 Header 信息的解决方案,而不知道 Application 消息原型(我只知道由应用程序继承的 Header proto)。