我有两个必须通信的应用程序。 这两个应用程序都在同一台计算机上,这就是我使用命名管道进行通信的原因。
我的问题是关于要发送的数据。我有什么选择? 以下可能性是否可行?
如果有其他一些想法,我会打开,我的目标是要有一些非常快的实施。
答案 0 :(得分:3)
除非您需要非常高的性能,否则我会选择标准的跨语言服务通信语言,例如Thrift或Protocol Buffer。
如果有一天您必须使用其他语言与第三个应用程序进行通信,或者您决定在另一台计算机上运行每个服务,这将允许您毫无问题地进行扩展。
答案 1 :(得分:1)
真的很快(为了你)实施,或者真的快速运行?
如果前者 - 使用Web服务,gsoap或WCF将为您提供一个简单的界面,您可以调用。
如果是后者,您可能需要共享内存 - 将原始数据放在那里并允许其他进程读取它。如果你要传输大量数据,那就是要走的路。如果您有少量数量,那么您可以直接通过命名管道(或套接字,直接发送,总是好的,易于使用,并且可以让您更轻松地迁移到多台机器)。
要解释您正在传输的数据,请忘记尝试发送C#对象并让C ++端将其作为同一对象读取,您将不得不处理原始数据。这意味着以某种格式对数据进行序列化(二进制格式也适用于BTW,并且比将其序列化为XML要快得多)。然后,另一方可以将其读入并将其反序列化为自己的数据结构。
答案 2 :(得分:1)
一种选择: 使用zeromq进行传输,使用protobuf,thrift甚至json作为通信语言。 Zeromq非常快。