我正在为使用C ++的专业用户编写桌面应用程序。我目前的设计依赖于第三方C ++组件,其API基于TCP / IP。要集成此组件,可能需要对其进行修改,以使用传统的C ++ API替换网络代码。
如果我可以保持组件不被修改并以预期的方式与网络进行通信,那将会容易得多。为此,我需要将组件作为服务器运行,监听某些高端口的环回连接。
我对这种环回方法有两个顾虑。任何人都可以减轻或证实我的恐惧吗?
可靠性和性能 环回连接可能会失败,被防病毒软件阻止或拦截。这样的事情:Loopback connections working in user's context but not working from Local System account
安全 我并不太关心有人嗅探我的环回数据包,但我不希望我的服务器本身成为安全风险。让进程监听某个高端口是否有风险?
许多桌面应用程序都是这样运行的吗?
我最初是在Windows上开发的,但将来可能会迁移到Mac和Linux,因此这个问题适用于所有常见的桌面操作系统。
答案 0 :(得分:1)
可靠性:如果组件本身是可靠的,那么监听环回接口没有问题。如果组件不可靠,那么最好通过loopback接口与它通信,而不是直接调用它的函数。您可以轻松处理断开连接并重新启动组件以继续工作,但如果您链接到组件并且组件将失败 - 您的应用也将失败。
性能:有一些性能损失。当前CPU功率不是很大。大多数应用都应该可以接受。
安全性:组件应绑定到localhost地址以避免安全问题。但是具有足够访问级别的本地三维软件(病毒)软件可以拦截甚至修改通信流。对于任何其他通信方法也是如此。
广泛使用环回连接(java使用它进行相互通信,命名用于主服务控制等)。