我正在开发一个使用.Net Remoting与Windows服务“后端”通信的项目。我真的需要在后端服务中使用Task<T>
和异步功能,所以我想要以.NET 4.5为目标
但是,由于我无法控制的因素,“前端”组件必须使用.net 3.5,这将排除使用所有异步语言功能。
这有点令人头疼。
在.net Remoting中,连接的两端必须共享对远程类的引用,因此它们通常位于共享类库中,这是我的方法。我想知道,如果我构建两个版本的“共享”类库,一个针对CLR2而另一个针对CLR4,那么远程处理模式是否仍然有效?或者远程端是否必须使用完全相同的对象?
答案 0 :(得分:3)
是。我已经做了。我们有一个基于Remoting的解决方案,我们的每个商店都有一个&#34;听众&#34; (由客户调用的服务)。公司办公室的帮助台中有一个程序是发送者&#34; (客户)。两者最初都是用.NET 1.1编写的。
最终,我们需要做一些更新,以及&#34;发件人&#34;升级到2.0,它与#34;听众一起工作得很好&#34;。
关键是运行时版本,它是创建的界面。我们无法改变签名。
答案 1 :(得分:1)
.net 4.0可以在混合模式和参考.net 2.0程序集中工作,因此您可以使用相同的组件。请参阅:What 'additional configuration' is necessary to reference a .NET 2.0 mixed mode assembly in a .NET 4.0 project?
答案 2 :(得分:1)
我过去所做的是我使用相同的源代码和一些编译符号创建了一个新项目来启用/禁用功能。类似的东西:
MySharedLibrary.csproj(4.0)
MySharedLibrary.3.5.csproj(3.5)
除非您要传输3.5中不可用或可序列化的对象,否则远程服务器无关紧要。当然,您必须将每一侧链接/引用到匹配的lib版本。
答案 3 :(得分:0)
包含远程处理服务API的共享类库必须使用等于或低于客户端程序的Framewoer进行编译。 我们有一个Remoting Client / Server aplicacion,Server已更新到VS2013并使用.NET 4.5.2重新编译共享库,客户端未连接(使用.NET 4.0编译),直到使用.NET 4.0编译共享类库 问候。