我花了几个月的时间试图掌握WCF背后的概念,最近我开发了我的第一个WCF服务应用程序。
为了理解配置文件中的所有设置,我花了不少功夫。 我不相信环境,但似乎你可以用它做惊人的事情。
前几天我发现微软推出了一个叫ASP的新东西。NET Web API。
据我所知,这是一个RESTful框架,非常容易使用和实现。
现在,我试图弄清楚这两个框架之间的主要区别是什么,如果我应该尝试用新的API转换我的旧WCF服务应用程序。
有人能帮我了解一下这两种语言的区别和用法吗?
我花了几个月的时间试图掌握WCF背后的概念,最近我开发了我的第一个WCF服务应用程序。
为了理解配置文件中的所有设置,我花了不少功夫。 我不相信环境,但似乎你可以用它做惊人的事情。
前几天我发现微软推出了一个叫ASP的新东西。NET Web API。
据我所知,这是一个RESTful框架,非常容易使用和实现。
现在,我试图弄清楚这两个框架之间的主要区别是什么,如果我应该尝试用新的API转换我的旧WCF服务应用程序。
有人能帮我了解一下这两种语言的区别和用法吗?
当前回答
使用wcf,我们可以为多个端点(如tcp、http)配置和公开相同的服务支持。如果你想让你的服务只基于http,那么最好使用web API。与wcf相比,Web API的配置非常少,比wcf快一点。Wcf还支持restful服务。如果你有。net framework 3.5的限制,那么你可以选择wcf。
其他回答
从业务角度讲,WebApi缺少WSDL,因此开发人员应该手动编写文档。如果,例如,WebApi操作返回一个对象列表,那么客户端应该手动创建对象,也就是说,WebApi确实容易出现定义错误。
Webapi的优点是它比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
注:数据不只是个人观点,也有其他官方网站的数据。
新的ASP。NET Web API是之前WCF Web API项目的延续(尽管一些概念已经改变)。
最初创建WCF是为了启用基于soap的服务。对于更简单的RESTful或rpish服务(考虑jQuery这样的客户端)。NET Web API应该是一个很好的选择。
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以获取更多信息。
关于“WebApi缺少WSDL”这句话,有几种方法来生成Rest客户端。一个流行的方法是Swagger UI / (swashbuckkle Nuget)。这提供了一个丰富的接口来理解REST端点的输入和输出模式,以及用于测试端点的在线工具。
JSON LD (JSON链接文档)是另一个新兴的标准,它将通过更好的语义公开JSON模式来进一步改善基于JSON的REST开发体验。