我花了几个月的时间试图掌握WCF背后的概念,最近我开发了我的第一个WCF服务应用程序。

为了理解配置文件中的所有设置,我花了不少功夫。 我不相信环境,但似乎你可以用它做惊人的事情。

前几天我发现微软推出了一个叫ASP的新东西。NET Web API。

据我所知,这是一个RESTful框架,非常容易使用和实现。

现在,我试图弄清楚这两个框架之间的主要区别是什么,如果我应该尝试用新的API转换我的旧WCF服务应用程序。

有人能帮我了解一下这两种语言的区别和用法吗?


当前回答

在下面列出的场景中,你应该使用WCF:

如果您需要在TCP、MSMQ或MIME等协议上发送数据 如果消费客户端只知道如何消费SOAP消息

WEB API是用于开发RESTful/HTTP服务的框架。

有很多客户端不理解SOAP,比如浏览器,HTML5,在这些情况下,WEB api是一个很好的选择。

HTTP服务头指定如何保护服务,如何缓存信息,消息体的类型和HTTP正文可以指定任何类型的内容,如HTML,而不仅仅是XML作为SOAP服务。

其他回答

新的ASP。NET Web API是之前WCF Web API项目的延续(尽管一些概念已经改变)。

最初创建WCF是为了启用基于soap的服务。对于更简单的RESTful或rpish服务(考虑jQuery这样的客户端)。NET Web API应该是一个很好的选择。

从使用WCF到现在,我发现WCF和Web API有很多不同之处。这两种技术栈都适用于不同的场景,所以不可能说哪个更好,这取决于配置和场景。

Properties              ASP.Net Web API                         WCF
--------------------------------------------------------------------------------------------------
End point (mainly)      Http based                              SOAP based
Service Type            Front End                               Back-end
Support                 caching, compression, versioning        No
Framework               ASP.net                                 WCF
Orientation             Resource Oriented                       Service Oriented
Transports              http                                    http, tcp, MSMQ, Named pipe
Message pattern         Request reply                           request Reply, one way, duplex
Configuration overhead  Less                                    Much
Security                lesser than WCF (web standard security) Very high (WS-I standard)
Hosting                 IIS                                     IIS, Windows Service, Self hosting
Performance             Fast                                    A bit slower than Web API
In use from             .NET 4.0                                .NET 3.5

注:数据不只是个人观点,也有其他官方网站的数据。

ASP.net Web API是基于HTTP和REST的GET,POST,PUT,DELETE,熟悉ASP.net MVC风格的编程和JSON可返回;web API适用于所有轻量级进程和纯基于HTTP的组件。对于使用WCF的人来说,即使是简单或最简单的单个web服务,它也会带来所有额外的负担。对于ajax或动态调用的轻量级简单服务,WebApi总是能解决这一需求。这是对ASP.net MVC的补充或帮助。

查看播客:Hanselminutes播客264 -这不是你父亲的WCF -由Scott Hanselman与Glenn Block一起介绍WebAPI以获取更多信息。

在MSDN上有一个比较

WCF和ASP。NET Web API

对我来说,选择是关于客户是谁,他们在哪里?

在公司内部网络和基于。net的客户端:使用WCF和TCP绑定(比HTTP通信更快)

在公司网络之外,使用不同的技术,如PHP, Python等:使用Web API和REST

WCF会给你很多开箱即用的东西,它甚至是任何东西都无法比拟的。除非您想自己实现(举几个例子)身份验证、授权、加密、排队、节流、可靠消息传递、日志记录、会话等等。WCF不仅仅是web服务;WCF是面向SOA的开发平台。