在同一台计算机上进程间通信是否有HTTP的替代方案?



我们有一个c# . net Core 3.1应用程序,需要调用遗留的。net框架32位DLL(我们没有源代码)。

我能想到的唯一方法就是要么强制我们的整个应用程序只针对32位,要么制作一个web服务/微服务,包装第三方功能,使其通过HTTP可用。

然而,我只是想知道是否有任何替代HTTP这样的东西,考虑到调用将是本地的应用程序和进程将始终在同一台机器上。我假设没有办法"包装"32位DLL并直接引用它,所以我猜通信的两个进程是唯一的解决方案,但这必须是HTTP还是有另一种方式?

编辑:

我试图避免的主要事情是必须为这个DLL拥有一个单独的项目和web主机的不便。

如果我理解正确的话,您应该希望在同一台机器上运行两个应该相互通信的进程。

第一个进程是你的x64进程做正常的事情,第二个x86迷你应用程序应该托管你的第三方库,并提供一些接口来访问这个库的方法。

我认为最简单的方法(今天)是设置一个运行asp的小控制台应用程序。提供REST API的核心。但只有当你的第三方主机是无状态的,每次调用都能得到所有需要的参数,并能立即回答你的请求时,这才是对的。

如果你需要在主机应用程序中配置一些本地状态(通过一些调用)和/或请求需要更多的时间来响应(因为库只需要几分钟来计算结果),你也可以用REST来设计所有这些东西。例如,长时间运行的请求立即返回一个操作id,通过第二个REST调用,您可以请求处理的当前状态。

但这可能不再是真正的REST。在这种情况下,命名管道可能是更好的选择,因为它是一种真正的双向通信。但要注意,你离金属更近,你必须注意沟通中断,不完整的信息等。

最新更新