【发布时间】:2021-05-18 07:10:11
【问题描述】:
我们有一个 C# .NET Core 3.1 应用程序需要调用旧版 .NET Framework 32 位 DLL(我们没有源代码)。
我能想到的唯一方法是强制我们的整个应用程序仅针对 32 位,或者制作一个 Web 服务/微服务来包装第三方功能以使其通过 HTTP 可用。
但是我只是想知道对于这样的事情是否有任何 HTTP 替代方案,因为调用将是应用程序的本地调用,并且进程将始终位于同一台机器上。我假设没有办法“包装”32 位 DLL 并直接引用它,所以我猜两个进程通信是唯一的解决方案,但这必须是 HTTP 还是有其他方法?
编辑:
我要避免的主要事情是必须为这个 DLL 拥有一个单独的项目和 Web 主机带来的不便。
【问题讨论】:
-
还有很多其他方法。数据库。文件系统。队列。插座。等等 参见stackoverflow.com/questions/58549763/…。
-
@mjwills 是的,我查看了命名管道、套接字等,但我研究得越多,我认为如果没有办法只是“包装”DLL 以使其与 64 位兼容,那么 HTTP实际上比旧的/遗留方法更容易。
-
“当前”的解决方案是 gRPC 服务。它们基于 http/2,但不需要 iis。 Microsoft 在 .NET Core 中删除了远程处理(这是 .NET 的“原始”进程间通信方式)。 Microsoft 也从 .NET Core 中删除了 WCF。有一个 github 用 .NET 核心替代 WCF,但他们说它还没有生产就绪
-
一种可能的方法是让主应用程序启动主机应用程序并通过其标准与它通信IO 管道(stdin/stdout/stderr)。
标签: c# .net communication