C# 对于同一台计算机上的进程间通信,是否有HTTP的替代方案?

C# 对于同一台计算机上的进程间通信,是否有HTTP的替代方案?,c#,.net,communication,C#,.net,Communication,我们有一个C#.NET Core 3.1应用程序,它需要调用遗留的.NET Framework 32位DLL(我们没有源代码) 我能想到的唯一方法是要么强制我们的整个应用程序只针对32位,要么制作一个web服务/微服务,包装第三方功能,使其通过HTTP可用 然而,我只是想知道,如果调用将是应用程序的本地调用,并且进程将始终在同一台机器上,那么对于类似的东西,HTTP是否有任何替代方案。我假设没有办法“包装”32位DLL并直接引用它,所以我猜两个进程通信是唯一的解决方案,但这必须是HTTP还是有其

我们有一个C#.NET Core 3.1应用程序,它需要调用遗留的.NET Framework 32位DLL(我们没有源代码)

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

然而,我只是想知道,如果调用将是应用程序的本地调用,并且进程将始终在同一台机器上,那么对于类似的东西,HTTP是否有任何替代方案。我假设没有办法“包装”32位DLL并直接引用它,所以我猜两个进程通信是唯一的解决方案,但这必须是HTTP还是有其他方法

编辑:


我试图避免的主要问题是,这个DLL必须有一个单独的项目和web主机。

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

第一个进程是执行正常操作的x64进程,第二个x86迷你应用程序应该托管第三方库,并提供一些接口来访问此库的方法

目前最简单的方法是安装一个运行asp.core的小型控制台应用程序,提供RESTAPI。但这是唯一正确的,如果您的第三方主机应该是无状态的,在每次呼叫中都会获得所有需要的参数,并且可以立即响应您的请求

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


但这可能不再是真正的休息。在这种情况下,你可能是一个更好的候选人,因为这是一个真正的双向沟通。但请注意,您离金属更近,您必须注意通信中断、信息不完整等。

也许这可以帮助您:还有很多其他方法。数据库文件系统。排队。插座。等等等等,请参见。@mjwills是的,我看了命名管道、套接字等,但我越看越觉得,如果没有办法“包装”DLL使其64位兼容,那么HTTP实际上比旧的/旧的方法更容易。当前的解决方案是gRPC服务。它们基于http/2,但不需要iis。Microsoft删除了.NET核心中的远程处理(这是.NET的“原始”进程间通信方式)。Microsoft也从.NET Core中删除了WCF。有一种方法是用.NET内核替换WCF,但他们说这不是生产可读性。如果DLL宿主应用程序只需要对主应用程序的一个实例进行访问,那么一种可行的方法就是让主应用程序启动宿主应用程序,并通过其标准IO管道(stdin/stdout/stderr)与之通信。