好吧,所以我在StackOverflow上询问了几个关于.NET Remoting的问题,并且总有至少一个人只需要插入,“.NET Remoting已被弃用,而是使用WCF。”我知道它已被弃用,并且无法保证将来支持新版本的.NET Framework。但是我们想要转移到WCF还有哪些其他好的理由呢?我已经看到了.NET Remoting的一些主要的小麻烦,然而,这还不足以改变那些坚定地相信“如果它没有破坏,不修复它”的权力。此时,态度将改变的唯一原因是.NET Remoting是否已从.NET Framework的未来版本中删除,那么谁知道这将会持续多长时间?
有没有人知道为什么WCF比.NET Remoting“更好”,或者为什么Remoting不如WCF?每种技术的优缺点是什么?您是否可以使用WCF进行其他操作而不使用远程处理?
我的意思是,如果我能说服他们让我们将软件迁移到WCF只是为了允许在客户端设置可配置的TcpChannel超时(这似乎已经被打破了一段时间,那就太棒了无论我尝试什么步骤或排除故障),当发生这种情况时,它会使我们的软件看起来像绝对的。
提前感谢您帮助阐明这一点。
答案 0 :(得分:7)
有很多理由放弃远程处理;一些可能包括:
答案 1 :(得分:5)
本主题特定于为保持与现有应用程序向后兼容而保留的旧技术,不建议用于新开发。现在应该使用Windows Communication Foundation(WCF)开发分布式应用程序。
这是在2007年完成的WCF和.NET Remoting之间的性能比较:http://msdn.microsoft.com/en-us/library/bb310550.aspx
总结结果, WCF 比ASP.NET Web快25%-50% 服务,并且 25%比 .NET Remoting 快。
所以我认为速度是放弃.NET Remoting的一个很好的理由。
答案 2 :(得分:3)
虽然给出的理由可能是驾驶考虑因素,但还有其他一些重要的原因:
使用WCF时,只需编辑配置文件即可更改传输。当一些假装不善的系统管理员无法打开端口而您需要在端口80上使用HTTP来通过公司防火墙时,这非常方便。
Visual Studio中的WCF工具非常出色。最困难的部分是找出您需要的URL。之后,只需点击即可生成代码。有一两个带有序列化集合的陷阱,但从广义上讲,如果你告诉两端使用数组,它只是简单的工作。如果你需要在目的地的集合,你总是可以在接收的数组周围构建一个集合,并且由于LINQ将很乐意在数组上运行,你可以将其折叠成其他变换。
我不确定Stephan P的痛点是什么意思。编辑配置可能很棘手,但是Microsoft提供了一个出色的GUI工具,通过提供完整的选项树然后生成稀疏配置文件来消除它的所有猜测。
WCF服务很容易测试,因为它们具有可以连接测试工具的已发布接口。这通常是SoA的优点,而不是特别是WCF,但它仍然是可取的。
WCF使我的代码变得更加简单,因为应用程序和服务都没有被“路由”代码污染(以确定应该处理消息内容的内容);它看起来像简单的方法调用或实现。我主要使用WCF作为MSMQ的包装器,并且传输选择的唯一可见结果是这些方法调用必须都是void函数,因为它是OneWay传输。但是当这一点持续排队时,这并不奇怪。
这一切都说明了可维护性。即使对于内部应用程序,维护也是一项主要成本,当您在客户站点支持软件时,可维护性可能会很差。
然后与其他不兼容的平台进行互操作。在这种情况下,我正在考虑使用HTTP / XML或HTTP / JSON为用(例如)PHP编写的Web应用程序提供服务。
走另一条路并不是那么容易,但它相当简单。
答案 3 :(得分:2)
我为WCF提供了有关日志记录和安全性的分数。
<强>登录强> WCF具有集成的日志记录机制,可帮助您记录在维护期间成为福音的跟踪。在其他技术中,开发人员必须做一些工作才能实现这一目标,但在WCF中,我们所要做的就是通过更改配置文件启用跟踪,WCF开始为您提供跟踪。
安全强> 从实现者的角度来看,WCF中的安全机制非常简单且开箱即用,但是非常强大且高度安全。最好的部分是对于高度使用和推荐的绑定,WCF提供了可以信任核心的默认安全性。 WSHTTPbinding上的消息安全性就是这些行的一个例子。
.NET Framework远程处理默认情况下不进行身份验证或加密。因此,建议您在与客户端或服务器远程交互之前采取一切必要步骤来确定客户端或服务器的身份
此外,WCF是一个在微软平台下开发面向服务的应用程序的框架,它混合了消息和rpc编程风格。哪个不在远程处理中。远程处理基本上只针对rpc。