C# 跨平台通信接口的设计
我有一个在本地系统上运行的C#程序,它需要能够做两件事C# 跨平台通信接口的设计,c#,c++,wcf,rpc,C#,C++,Wcf,Rpc,我有一个在本地系统上运行的C#程序,它需要能够做两件事 在运行Windows、Linux或Android的远程系统上异步剥离远程作业 为这些系统提供一种将这些作业的输出(StdOut/StdErr)发送回本地系统的方法 以前我在与远程windows系统通信时使用过WCF。我在远程windows系统上创建了一个WCF服务器,然后我的本地计算机可以通过该WCF通道发送命令和消息。当我尝试用Linux和Android做同样的事情时,事情变得更加复杂 我想我可以使用REST设置一个本地WCF服务,这样所
安全性不是问题,因为这是在安全的专用网络上使用的。我只是在寻找运行远程命令/进程并从这些远程系统接收响应消息的最简单方法。这实际上取决于您使用的基础结构和服务。如果您身处AmazonWeb服务世界,您可以使用简单队列服务(SQS)来接收消息。然后,远程系统可以轮询队列,并根据从SQS队列中提取的消息运行作业 我使用ZMQ和JSON正是为了这个目的:创建一个自定义的私有网络拓扑,通过TCP(通过ZMQ)使用JSON消息进行通信。当然,您可以使用任何序列化格式(我在下面列出了一些备选格式) 我不能给你一个明确的“这是你应该做的”答案,因为这个问题是相当开放的
- ZMQ:
- 非常好的跨平台抽象套接字库
- 可以使用各种传输协议,包括TCP
- 将消息作为纯字节数组发送,将序列化格式的选择权留给您
- 一些序列化格式(按我个人喜好的顺序):
- JSON:
- MessagePack:
与JSON完全相同,但更紧凑
没有架构
跨平台 - 谷歌协议缓冲区:
使用架构
具有C++、C语言、java、Python(至少) 的绑定