设计跨平台通信接口

时间:2013-06-04 18:29:43

标签: c# c++ wcf rpc

我有一个在本地系统上运行的C#程序,需要能够完成两件事。

  1. 在运行Windows,Linux或Android的远程系统上异步关闭远程作业。
  2. 为这些系统提供一种方法,将这些作业的输出(StdOut / StdErr)发送回本地系统。
  3. 以前我在与远程Windows系统通信时使用过WCF。我在远程Windows系统上创建了一个WCF服务器,然后我的本地机器可以通过该WCF通道发送命令和消息。当我尝试用Linux和Android做同样的事情时,事情变得更加复杂。

    我想我可以使用REST设置本地WCF服务,这样所有3个平台都可以使用任何方便的语言(最有可能是c ++)通过JSON REST向它发送消息。但那么完成需求#1的最佳方法是什么呢?

    我是否应该在Linux和Android上运行的C ++中创建REST服务器? WCF甚至可以使用不是用.Net编写的C ++ REST服务器吗? 使用TCP套接字做一些简单的事情会更好吗?

    安全性不是问题,因为它用于安全的专用网络。我只是在寻找运行远程命令/进程并从这些远程系统接收响应消息的最简单方法。

2 个答案:

答案 0 :(得分:2)

我正是为了这个目的而使用ZMQ和JSON:创建一个自定义专用网络拓扑,通过TCP(通过ZMQ)使用JSON消息进行通信。当然,您可以使用任何序列化格式(我在下面列出了一些替代方案)。

我无法给你一个明确的"这就是你应该做的事情"回答,因为这个问题相当开放。

答案 1 :(得分:0)

这实际上取决于您使用的基础架构和服务。如果您在Amazon Web Services世界中,则可以使用简单队列服务(SQS)来接收消息。然后,远程系统可以轮询队列并根据从SQS队列中提取的消息运行作业。

相关问题