Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/257.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 与继续使用.NET远程处理相比,将应用程序迁移到WCF有什么好处?_C#_Wcf_C# 4.0_Remoting_.net Remoting - Fatal编程技术网

C# 与继续使用.NET远程处理相比,将应用程序迁移到WCF有什么好处?

C# 与继续使用.NET远程处理相比,将应用程序迁移到WCF有什么好处?,c#,wcf,c#-4.0,remoting,.net-remoting,C#,Wcf,C# 4.0,Remoting,.net Remoting,好的,我已经问了几个关于.NET远程处理的StackOverflow问题,总有至少一个人需要插话,“.NET远程处理已被弃用,请改用WCF。”我知道它已被弃用,并且不能保证将来会支持新版本的.NET Framework。但是,我们想转向WCF还有什么其他好的理由呢?我看到了一些关于.NET远程处理的小麻烦,但是,这还不足以改变那些坚信“如果它没有坏,就不要修复它”的人的想法。目前,态度改变的唯一原因是,如果.NET远程处理从.NET Framework的未来版本中删除,那么谁知道这需要多长时间呢

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

有没有人能理解为什么WCF比.NET远程处理“更好”,或者为什么远程处理不如WCF?每种技术的优缺点是什么?您是否可以使用WCF而不是远程处理来做其他事情

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


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

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

  • 缺乏运输灵活性
  • 版本控制需求是一个巨大的难题
  • 依赖于平台(没有明显的跨平台使用机会)
  • 没有机会从不断增长的移动市场使用
  • 缺乏未来发展:无论你想增加什么功能,都不会

然而,我不同意WCF是自动替代品;WCF本身是一个非常通用的工具,但可能非常复杂,并且有自己的限制。我自己没有使用过它,但我看到了很多对它的赞扬,基本上是用户将它描述为“WCF做得对”,即WCF的好部分,没有痛点。然而,还有很多其他选择。不过,服务堆栈思想的一个优点是,它的迭代速度非常快,如果它缺少您想要的东西,您可以对其进行更改。

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

本主题特定于保留以与现有应用程序向后兼容的遗留技术,不建议用于新开发。现在应该使用Windows通信基金会(WCF)开发分布式应用程序。 下面是2007年完成的WCF和.NET远程处理之间的性能比较:

总而言之,WCF比ASP.NET Web快25%-50% 服务,大约比.NET远程处理快25%


因此,我想速度是放弃.NET远程处理的一个很好的理由。

我对WCF在日志记录和安全性方面的表现给予了评价

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

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

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


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

虽然给出的原因可能是驱动方面的考虑因素,但还有其他不重要的原因:

  • 运输独立性
  • IDE工具
  • 易于测试
  • 维修性
使用WCF时,只需编辑配置文件即可更改传输。当一些堂而皇之的系统管理员不打开端口,而您需要在端口80上使用HTTP来通过公司防火墙时,这会非常方便

VisualStudio中的WCF工具非常出色。最困难的部分是找出你需要的URL。之后,只需点击代码生成。集合的序列化有一个或两个陷阱,但从广义上讲,如果你让两端都使用数组,那么它将很简单。如果您在目的地需要一个集合,您可以围绕接收到的数组构建一个集合,并且由于LINQ将愉快地在数组上运行,因此您可以将其折叠到其他转换中

我不确定Stephan p所说的痛点是什么意思。编辑配置可能很棘手,但Microsoft提供了一个优秀的GUI工具,它提供了完整的选项树,但生成了稀疏的配置文件,从而消除了所有猜测

WCF服务易于测试,因为它们有一个已发布的接口,您可以将测试线束连接到该接口。总体而言,这更像是SoA的优点,而不是WCF的优点,但它仍然是可取的

WCF使我的代码更加简单,因为应用程序和服务都不会受到“路由”代码的污染(以确定应该处理消息内容的内容);看起来像是简单的方法调用或