我正在做一个项目并且有一个 C# 库,但我需要在 Linux 上用 C 代码调用它。最有效的方法是什么?性能是首要考虑因素。
当然,我可以做一个 C# 服务并使用 TCP 进行通信。但我想知道这是否是最好的方法......
谢谢!
您还可以使用 CoreRT 从 C# 代码创建本机库并从 C 中调用它们。您可以在此处找到示例
编辑:CoreRT 已移至 runtimelab 功能 NativeAOT。更新链接。
我认为最标准的解决方案是让您的 C# 服务导出一个“Web 服务”远程 API,然后 C 代码可以通过标准的 Linux Web 服务包访问该 API。实际上,它们支持一种 RPC 形式,但网页对请求和回复进行编码。使用 Web 服务的优点是通用性;您的解决方案将移植到任何平台,并且可以使用任何语言,而不仅仅是 C。
另一种方法是使用来自 Google、Facebook、Twitter 等的新开源软件包之一。许多云供应商正在开源他们的 RPC 基础设施,因为许多客户提出了您的确切问题并需要这些解决方案。这些肯定会在其他方面更快、更强大:它们包括强大的性能可视化工具和各种调试器。微软也有远程方法调用技术。所以这些是一种选择,可能不太通用,但肯定更快。所以你必须问速度对于这条特定的路径有多重要......
底线是您可能可以使用五个软件包。不知道哪个获胜或最好!