统一沟通

时间:2014-08-18 07:46:17

标签: c# communication interprocess

我想知道如何以比现在更好的方式设置进程间统一通信。客户端进程向服务器进程发送大量不同类型的消息。像...这样的消息我做了一些工作[什么],我在[时间]开始,在[时间]结束。或状态,甚至进行命令消息。

示例消息:发件人:Process1; StartedAt | 12:12:12; EndedAt | 12:45:56; DoneUnit:51

服务器解析器以分号分割字符串。从第一部分读取谁发送的消息。从第二部分和第三部分它读取时间,从最后一部分它做了多少工作。 当我在消息末尾添加另一个信息时

离。自:处理1; StartedAt | 12:12:12; EndedAt | 12:45:56; DoneUnit:51;来源:片剂 我也必须重写服务器解析器。

服务器尝试使用我自己的解析函数解析收到的消息。每条消息都有自己的格式。所以解析器知道消息应该如何。但是,如果我在客户端上更改格式,我也必须在服务器上更改它。它似乎不是非常有效的方式。

因此我问你一个问题。 这种沟通应该如何变得更好,或者如何在一个地方存储客户端和服务器的格式?

我使用c#.net 3.5(必须是此版本)

感谢您的回复

1 个答案:

答案 0 :(得分:1)

您问题的明显解决方案是不自行编写解析代码。

如果您创建了一个可以序列化的类,您可以通过线路发送类的序列化版本,并在另一端反序列化。这意味着可以在两个应用程序之间共享消息类,并且解析代码是微不足道的。根据您的要求,您可以使用各种序列化器:Xml或JSON将是冗长但人类可读的,或者二进制串行器在带宽方面会更有效(但更难调试或监控线上)。