我的应用程序在Windows中运行,并使用C++
/ Qt
实现。
应用程序将调用部署在Linux服务器中的另一个应用程序,该应用程序将调用某些第三方工具。 Linux服务器应用程序将根据第三方工具的运行发送一些状态更新。通常,第三方应用程序将运行数小时,更新将在各个阶段发送。 Linux服务器可能还必须发送除状态更新之外的一些文件,Windows客户端还将发送运行这些第三方工具所需的一些文件。
我计划在libssh2中实现此功能,因为可以使用libssh2_channel_exec()
完成文件传输并执行应用程序。可以通过非阻塞套接字传输发送和接收更新。此外,传输必须是安全的,并且经过密码验证,因此我认为SSH
符合我的要求。
我还查看了实现AMQP
的apache的Qpid。对于我的状态更新,消息传递似乎更合适,因为更新频率较低。但我不太确定安全连接,密码验证以及应用程序调用。
那么,我可以在这两者之间做出选择?或者还有其他更好的选择吗?我不太习惯网络编程所以任何指针,关于此的链接都是受欢迎的。
答案 0 :(得分:0)
您是否考虑过一些基于Web的解决方案,如XML-RPC,REST,SOAP或其他?请注意,您可以拥有持续的网络连接和流更新,也可以让客户端根据需要随时请求更新。
此外,我认为基于其中一些协议构建解决方案可以让您更轻松地编码 - 当您拥有优秀的库时,无需使用某些低级解决方案。至于安全部分,我会认为作为HTTPS协议一部分的SSL足够安全。当然你也可以做混合风格,例如SSH tunel来保护服务器并使用SSH密钥授权。
但是如果你确定你想要SSH或AMQP然后使用第一个 - 我认为它具有更好的安全性。另外,请尝试不使用username / passowrd。而是使用上面提到的键。
答案 1 :(得分:0)
从SSH开始,然后考虑在顶层分层其他协议。您可以使用SSH端口转发来创建到服务器的VPN连接,这可能会更容易使用AMQP或0MQ之类的东西。