什么是WCF(以及优缺点)?

7
我正在尝试理解WCF是什么,但无法形象地理解它如何增加价值(阅读msdn没有帮助)。我过去曾经使用过COM,并且了解webservices。能否有人解释一下什么是WCF以及它的优缺点(也许它如何与COM相关或取代COM等)?
如果我能够将架构布局可视化,我就可以开始理解每个组件所承担的功能。
提供参考网站的链接也将非常有用。
谢谢
2个回答

8

我不建议将WCF与COM进行比较。

Windows Communication Foundation主要涉及通信 - 特别是从WCF网站上来看,它“提供了一个统一的编程模型,快速构建面向服务的应用程序,这些应用程序可以在Web和企业之间进行通信。”

这确实是一种不同的进程间通信方法,将其统一起来。它使您可以在进程之间使用干净的、面向服务的API进行所有通信,并轻松更改服务所使用的底层技术(例如:从HTTP切换到TCP到Pipes等)。

通过利用WCF,您可以使进程以清晰、一致的方式进行通信。相同的API可用于与Web服务进行通信,在两个桌面应用程序之间传递数据,或在桌面和系统上的服务之间进行通信。在所有情况下,您都可以轻松地切换所使用的协议等。

这提供了很多灵活性,只需要一个工具包。


就优缺点与其他选项而言 - 有很多优点,主要是能够使用统一的开发模型。就个人而言,我在目前所有的IPC需求中都使用WCF,因为它几乎已经取代了.NET中作为IPC首选API的远程调用。

主要的缺点可能在某些特定情况下表现为性能问题。使用WCF会增加(轻微的)开销,因此在某些情况下,自己进行低级套接字开发将获得更好的性能。除非你正在编写实时游戏或类似的东西,否则涉及低级通信协议的开发工作量不值得收益。


WCF可以大致与DCOM进行比较,我认为这就是作者的意思。 - Andrey
@Andrey:嗯,它确实有点取代了DCOM的需求,但我个人认为这种思维模式不同到一定程度,以DCOM术语思考真的会影响理解WCF的能力... - Reed Copsey
@user279521:我在我的回答中添加了一些优缺点。这有帮助吗?WCF确实是在.NET中编写进程间通信代码的首选方式 - 除非你正在做一些属于边缘情况的事情,否则没有理由不使用它... - Reed Copsey
2
是的。查看WCF主页,并浏览几个示例。您可以在家庭计算机上非常轻松地创建WCF服务和客户端应用程序。请尝试此操作:http://msdn.microsoft.com/en-us/netframework/first-steps-with-wcf.aspx - Reed Copsey
非常感谢你,里德。这些介绍视频对我很有帮助。你不辞辛苦地回答了我的问题,我真的非常感激。非常非常感谢你。 - user279521
显示剩余2条评论

1

WCF是一个非常通用的跨进程/跨机器通信框架。就是这样。对于.NET,有以下选项:自定义网络通信、Web服务、.NET远程调用。WCF替代了Web服务(向后兼容)和.NET远程调用(不向后兼容),提供了丰富的通信选项和功能。它可以使用不同的传输层 - TCP、Web服务、MSMQ。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接