是否有可能拥有.net Remoting组件,其中每个端使用不同版本的框架

本文关键字:框架 版本 net 拥有 有可能 Remoting 组件 是否 | 更新日期: 2023-09-27 17:50:56

我正在做一个使用。net Remoting与Windows Service"后端"通信的项目。我真的需要在后端服务中使用Task<T>和异步特性,所以我想瞄准。net 4.5

然而,由于我无法控制的因素,"前端"组件必须使用。net 3.5,这就排除了所有异步语言特性的使用。

这有点让人头疼。

在。net Remoting中,连接的两端必须共享对远程类的引用,因此它们通常位于共享类库中,这就是我的方法。我想知道,如果我构建两个版本的"共享"类库,一个针对CLR2,另一个针对CLR4,远程模式是否仍然有效?或者远程端必须使用完全相同的对象吗?

是否有可能拥有.net Remoting组件,其中每个端使用不同版本的框架

是。我已经做到了。我们有一个基于Remoting的解决方案,其中每个商店都有一个"监听器"(由客户端调用的服务)。在公司办公室的帮助台上有一个程序是"发送者"(客户端)。

最终,我们需要做一些更新,"发送者"升级到2.0,它与"监听者"工作得很好。

关键不在于运行时版本,而在于创建的接口。我们只是不能更改签名。

.net 4.0可以在混合模式下工作,并引用。net 2.0程序集,因此您可以使用相同的程序集。参见:What '附加配置'有必要在。net 4.0项目中引用。net 2.0混合模式程序集吗?

我过去所做的是用相同的源代码加上一些编译符号来启用/禁用功能创建一个新项目。比如:

MySharedLibrary。csproj (4.0)

MySharedLibrary.3.5。csproj (3.5)

远程服务器应该无关紧要,除非您传输的对象在3.5中不可用或不可序列化。当然,您必须链接/引用每一面到匹配的库版本。

包含远程服务API的共享类库必须使用等于或低于客户端程序的帧数进行编译。我们有一个远程客户端/服务器应用程序,服务器更新到VS2013,用。net 4.5.2重新编译了共享库,客户端没有连接(用。net 4.0编译),直到共享类库也用。net 4.0编译问候。