Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/163.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
什么类型的数据可以在C#和C+之间传输+;_C#_C++_Wcf_Types_Named Pipes - Fatal编程技术网

什么类型的数据可以在C#和C+之间传输+;

什么类型的数据可以在C#和C+之间传输+;,c#,c++,wcf,types,named-pipes,C#,C++,Wcf,Types,Named Pipes,我有两个应用程序必须通信。 这两个应用程序都在同一台计算机上,这就是我使用命名管道进行通信的原因 我的问题是关于将要发送的数据。我有什么选择? 下列可能性是否可行 在两个应用程序之间发送字节 发送C结构 发送一些协议缓冲区对象 如果有其他想法,我会敞开心扉,我的目标是实现一些真正快速的功能。除非您需要非常高的性能,否则我会选择标准的跨语言服务通信语言,如或 如果有一天您必须用另一种语言与第三个应用程序通信,或者您决定在不同的机器上运行每项服务,这将允许您无问题地进行扩展。实现起来真的很快,还

我有两个应用程序必须通信。 这两个应用程序都在同一台计算机上,这就是我使用命名管道进行通信的原因

我的问题是关于将要发送的数据。我有什么选择? 下列可能性是否可行

  • 在两个应用程序之间发送字节
  • 发送C结构
  • 发送一些协议缓冲区对象

如果有其他想法,我会敞开心扉,我的目标是实现一些真正快速的功能。

除非您需要非常高的性能,否则我会选择标准的跨语言服务通信语言,如或

如果有一天您必须用另一种语言与第三个应用程序通信,或者您决定在不同的机器上运行每项服务,这将允许您无问题地进行扩展。

实现起来真的很快,还是运行起来真的很快

如果前者使用web服务,gsoap或WCF将使您成为一个可以调用的简单接口

如果是后者,您可能需要共享内存—将原始数据放在其中,并允许另一个进程读取它。如果你有很多数据要传输,这是一个好办法。如果您有少量,那么您可以直接通过一个命名管道(或一个套接字)发送它,它总是好的,易于使用,并且可以让您更轻松地迁移到多台机器上

为了解释你正在传输的数据,忘记尝试发送一个C++对象并让C++侧读取它作为同一个对象,你必须处理原始数据。这意味着以某种格式序列化数据(顺便说一句,二进制格式的工作也很好,并且比将其序列化为XML要快得多)。然后,另一方可以读入并将其反序列化为自己的数据结构。

一个选项: 用于传输,protobuf、thrift甚至json用作通信语言。
ZeOMQ确实很快。

你是说一个C是C,另一个C++在自己的进程中运行?如果两个程序都是C或C++,那么发送原始C结构是一个很好的选择,但是在你的情况下你必须使用某种形式的序列化。协议缓冲区提供了一种方法。@SimonMourier是的,我将有两个应用程序在两个不同的进程中运行。@JoachimPileborg是的,我期待着这个答案,我仍然希望我可以在C#中共享C struct,但我将使用Thrift或协议缓冲区,因为我已经使用了这两种方法,我应该不会太长时间让它工作!我将这样做,因为我已经在另一个组件中使用Thrift实现RPC功能,所以应该很容易实现!!Zeromq似乎真的很有趣,但我没有时间学习一些新的东西,因为我的IPC必须在同一台名为pipe的计算机上,所以我要做的就是!