9

好的,所以我在 StackOverflow 上问了几个关于 .NET Remoting 的问题,并且总是至少有一个人不得不插话,“.NET Remoting 已被弃用,请改用 WCF。” 我了解它已被弃用,并且不保证将来支持新版本的 .NET Framework。但是我们想要转移到 WCF 的其他一些好的理由是什么?我已经看到了 .NET Remoting 的一些小问题,但是,这还不足以改变那些坚信“如果它没有损坏,就不要修复它”的权力的想法。目前,态度会改变的唯一原因是如果 .NET Remoting 从未来版本的 .NET Framework 中删除,那么谁知道这会持续多久?

有没有人知道为什么 WCF 比 .NET Remoting“更好”,或者为什么 Remoting 不如 WCF?每种技术的优缺点是什么?您是否可以使用 WCF 而不是 Remoting 执行其他操作?

我的意思是,如果我能说服他们让我们将软件迁移到 WCF 只是为了允许在客户端设置可配置的 TcpChannel 超时(无论采取什么步骤,这似乎已经中断了一段时间)或故障排除我尝试),当这种情况发生时,它使我们的软件看起来像绝对的垃圾。

提前感谢您帮助阐明这一点。

4

4 回答 4

7

有很多理由放弃远程处理;一些可能包括:

  • 缺乏运输灵活性
  • 版本控制要求是巨大的痛苦
  • 平台相关(跨平台使用的可能性不大)
  • 没有机会从不断增长的移动市场中使用
  • 缺乏未来的发展:你想添加的任何功能 - 它不会是

但是,我不同意 WCF 是自动替换;WCF 本身是一个非常通用的工具,但可能非常复杂,并且有其自身的限制。我自己没有使用过它,但我看到很多Service Stack的赞誉,基本上用户将其描述为“WCF 做得对”,即 WCF 的优点,没有痛点。但是,还有很多其他选择。不过,Service Stack 的一个优点是它的迭代速度非常快,如果它缺少你想要的东西,你可以改变它

于 2012-09-28T07:36:00.620 回答
5

.NET Remoting 现在是一项遗留技术,引用自 MSDN:

本主题特定于为与现有应用程序向后兼容而保留的遗留技术,不建议用于新开发。现在应该使用 Windows Communication Foundation (WCF) 开发分布式应用程序。

这是 2007 年完成的 WCF 和 .NET Remoting 之间的性能比较:http: //msdn.microsoft.com/en-us/library/bb310550.aspx

总结结果,WCF比 ASP.NET Web 服务快 25%—50%,比.NET Remoting快大约25%

所以我想速度是放弃 .NET Remoting 的一个很好的理由。

于 2012-09-28T07:37:28.160 回答
3

虽然给定的原因可能是驱动因素,但还有其他重要的原因:

  • 运输独立
  • IDE工具
  • 易于测试
  • 可维护性

当您使用 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 应用程序提供服务。

走另一条路不是那么容易,但它相当简单。

于 2012-10-03T00:05:04.717 回答
2

我在日志记录和安全性方面为 WCF 打分。

日志记录 WCF 具有集成的日志记录机制,可帮助您记录在维护期间成为福音的跟踪。在其他技术中,开发人员必须做一些工作来实现这一点,但在 WCF 中,我们所要做的就是通过更改配置文件来启用跟踪,然后 WCF 开始为您提供跟踪。

从实现者的角度来看,WCF 中的安全 机制相当简单且开箱即用,但非常健壮且高度安全。最好的部分是,对于高度使用和推荐的绑定,WCF 提供了可以信任核心的默认安全性。WSHTTPbinding 上的消息安全性就是这些行中的一个示例。

默认情况下,.NET Framework 远程处理不进行身份验证或加密。因此,建议您在与客户端或服务器进行远程交互之前采取所有必要的步骤来确定它们的身份

此外,WCF 是一个在微软平台下开发面向服务的应用程序的框架,混合了消息和 rpc 编程风格。哪个不在远程处理中。远程处理基本上只面向 rpc。

于 2012-09-28T10:57:24.897 回答