飞诗(fsxm) 发表于 2024-11-21 21:36:05

如何让.net8与.net3.5跨进程调用?

之前我lisp编辑器,与autocad之间是通过wcf NamedPipe来通信的,
但是我想升级到.net8,发现已经不支持wcf NamedPipe了。

因为2007还是用的.net3.5,之间要如何通信?

guangdonglbq 发表于 2024-11-22 14:50:45

这种问题,可以先问ai——当然,不一定可以直接使用。

在.NET环境中,跨进程通信(IPC)可以通过多种方式实现,例如Windows通信基础(WCF)、内存映射文件、命名管道、套接字等。由于.NET 8和.NET 3.5是两个不同的运行时版本,直接通过二进制兼容的方式调用可能会有问题,但是使用基于标准的通信机制可以实现跨进程调用。

以下是一个使用命名管道实现跨进程通信的基本示例,命名管道是一种可以在不同.NET版本间进行IPC的有效方式。

服务端(.NET 8)
首先,创建一个.NET 8的服务端项目,该服务端将监听命名管道上的连接请求。

客户端(.NET 3.5)
然后,创建一个.NET 3.5的客户端项目,该客户端将连接到上述服务端创建的命名管道。

请注意,你需要确保服务器端在客户端尝试连接之前运行,并且它们具有访问命名管道的权限。

这个例子展示了如何在两个不同的.NET版本之间进行基本的跨进程通信。在实际应用中,你可能需要考虑错误处理、安全性、并发连接处理等因素。

飞诗(fsxm) 发表于 2024-11-28 09:39:05

你有种再说一遍 发表于 2024-11-27 16:50
https://learn.microsoft.com/zh-c ... ting-started-sample
备注
如果你喜欢从一个将服务承载于控制台应 ...

这个示例是基于.NET Framework 的,与.net8不一样
我之前旧版的就是用的.NET Framework 的WCF,现在想升级.net8

你有种再说一遍 发表于 2024-11-27 16:50:06

https://learn.microsoft.com/zh-c ... ting-started-sample
备注
如果你喜欢从一个将服务承载于控制台应用程序(而不是 IIS)的示例进行入门学习,请参阅自承载示例。

不知道是否有帮助,微软的官方教程会随时间更新的.

你有种再说一遍 发表于 2024-11-21 21:47:47

System.ServiceModel.NetNamedPipe的nuget包是支持到net8.0的
所以其实不是不支持,只是换了方式

https://www.nuget.org/packages/System.ServiceModel.NetNamedPipe/

飞诗(fsxm) 发表于 2024-11-21 21:50:56

你有种再说一遍 发表于 2024-11-21 21:47
System.ServiceModel.NetNamedPipe的nuget包是支持到net8.0的
所以其实不是不支持,只是换了方式



我用的CoreWCF.NetNamedPipe预览包,没有例子。要改的代码太多了,编译没通过

你有种再说一遍 发表于 2024-11-21 21:55:53

飞诗(fsxm) 发表于 2024-11-21 21:50
我用的CoreWCF.NetNamedPipe预览包,没有例子。要改的代码太多了,编译没通过

实在不行转内存共享或者socket

飞诗(fsxm) 发表于 2024-11-21 21:57:34

你有种再说一遍 发表于 2024-11-21 21:55
实在不行转内存共享或者socket

能不重复造轮子就不造

飞诗(fsxm) 发表于 2024-11-21 22:09:33

https://github.com/CoreWCF/samples/blob/main/Scenarios/Getting-Started-with-CoreWCF/NetCoreServer/Program.cs

例子中
WebHost.CreateDefaultBuilder(args)
我又不是在网站使用,这个没法用

panliang9 发表于 2024-11-22 08:33:11

进来看顶级高手们的交流!

你有种再说一遍 发表于 2024-11-22 15:13:26

guangdonglbq 发表于 2024-11-22 14:50
这种问题,可以先问ai——当然,不一定可以直接使用。

在.NET环境中,跨进程通信(IPC)可以通过多种方 ...

你猜它问的是不是有名管道的包问题
页: [1] 2
查看完整版本: 如何让.net8与.net3.5跨进程调用?