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

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

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

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

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

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


当前回答

从使用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

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

其他回答

对我们来说,WCF用于SOAP, Web API用于REST。我希望Web API也支持SOAP。我们没有使用WCF的高级特性。以下是来自MSDN的对比:

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以获取更多信息。

从使用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

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

关于“WebApi缺少WSDL”这句话,有几种方法来生成Rest客户端。一个流行的方法是Swagger UI / (swashbuckkle Nuget)。这提供了一个丰富的接口来理解REST端点的输入和输出模式,以及用于测试端点的在线工具。

JSON LD (JSON链接文档)是另一个新兴的标准,它将通过更好的语义公开JSON模式来进一步改善基于JSON的REST开发体验。

使用wcf,我们可以为多个端点(如tcp、http)配置和公开相同的服务支持。如果你想让你的服务只基于http,那么最好使用web API。与wcf相比,Web API的配置非常少,比wcf快一点。Wcf还支持restful服务。如果你有。net framework 3.5的限制,那么你可以选择wcf。