.NET Remoting真的被弃用了吗?
大家都在说.NET Remoting如何被WCF取代,但是我想知道这是多么准确。 我还没有看到任何官方的说Remoting被弃用,在我看来Remoting确实比WCF更有意义。 与Remoting相关的对象或方法都不被推荐,即使在框架的4.0版本中也是如此。 这也是我的理解,3.5和4.0框架中的System.AddIn使用远程处理。
有没有人有任何官方的话呢?
在文章中, select.NET中的通信选项 (3.0版本,因为这是该文章的最新版本),它指出:
8跨应用域通信
如果您需要支持同一进程中不同应用程序域中对象之间的通信,则必须使用.NET远程处理。
那么,这当然不准确,因为WCF肯定可以用来跨越应用程序边界,但它是否给出了正式的build议呢?
更新:我发送了Clemens Vasters(谁是拥有Remoting和WCF的团队)这个问题:
克莱门斯,我知道你是在同时拥有远程和wcf的团队中的,我有几个问题,我相信我需要去源代码。
首先,我有一个关于远程遥控是否正在消失的问题。 具体来说,我们有一个相当大的应用程序,广泛使用远程处理跨进程的跨应用程序域通信,我想知道这种远程使用是否被认为是“遗留”。 如果是这样,将AppDomain.CreateInstance和朋友用别的东西replace?
这是他的回答:
远程处理是.Net框架的一部分,因此它不会消失。 COM自Windows NT 3.5 / Windows 95以来一直在Windows,并没有消失,我也看不到很快就会离开。
也就是说,Remoting有很less的开发投入。 WCF是Remoting的inheritance者,代替了托pipe代码的COM / DCOM。
对于进行中的跨应用程序域通信,Remoting是CLR本身的通信方式。 如果您在短时间内看到性能问题抽取大量数据或发送大量消息,则应该仔细查看WCF和NetNamedPipeBinding。
称其为传统技术是一个更准确的描述。
http://msdn.microsoft.com/en-us/library/72x4h507%28VS.85%29.aspx
这个主题是特定于遗留的技术,为了向后兼容现有的应用程序保留,不build议新的开发。 现在应该使用Windows Communication Foundation(WCF)开发分布式应用程序。
更新:WCF不区分inter / intra / process / inter / intra-appdomain。 如果您在WCF中使用单机通信,则使用命名pipe道,使用它应该可以在几乎所有的实际场景中提供良好的性能。
有关各种分布式通信技术的性能比较, 请参阅此处 。
是。 Remoting已被弃用…并且是微软官方提供的。 这是链接:
.NET Remoting
文章的第一行粗体显示:
这个主题是特定于遗留的技术,为了向后兼容现有的应用程序保留,不build议新的开发。 现在应该使用Windows Communication Foundation(WCF)开发分布式应用程序。
我认为这个措辞是“不赞成的”,但显然他们把它称为“传统”
Clemens Vasters是Microsoft .NET Service Bus的技术负责人(这意味着Remoting和WCF都在这篇论坛post中讨论了WCF和Remoting)。 总结一下,他最终推荐WCF通过Remoting。
我不确定.NET 4.0是否在内部使用远程,但是可以尝试给Clemens发送这个问题……我确信他知道答案。
我认为现在(2015年)即使是跨应用程序域也是非常清楚的: https : //msdn.microsoft.com/en-us/library/vstudio/ms180984(v=vs.100).aspx
远程处理跨应用程序域本主题特定于遗留技术,为保持与现有应用程序的向后兼容性而保留,不build议用于新开发。 现在应该使用Windows Communication Foundation(WCF)开发分布式应用程序。
那么WCF也应该用于跨应用程序域。