任何人都可以分享WCF服务和ASP.NET Web Api之间的实际区别吗? 在哪种情况下,我们必须使用WCF服务和ASP.NET Web Api。
答案 0 :(得分:13)
WCF Web API是Microsoft的下一代服务框架。
WCF服务最初设计有通道架构,允许自定义用于系统间通信的协议和传输。虽然这为架构师/开发人员在构建可互操作应用程序方面提供了极大的灵活性,但却以复杂性为代价。配置WCF从未如此简单(IMO)。
最流行的用例(IMO)是使用WCF服务通过浏览器的Ajax请求为Web应用程序提供对其他数据的支持。此外,由于最初引入WCF的时间,应用程序通常使用http提供API。
因为这样,新的WCF Web API试图简化服务基础结构并采用http传输协议。
如果要构建新的Web应用程序,我将使用新的Web API。如果我需要使用其他http。
之类的东西与另一个系统进行通信,我只会考虑使用WCF服务WCF频道架构
http://msdn.microsoft.com/en-us/library/ms729840.aspx
WCF Web API
答案 1 :(得分:10)
来自http://mattmilner.com/Milner/Blog/post/2012/02/28/WebAPI-or-WCF.aspx,关于这个问题的一篇很好的文章:“WCF仍然是构建服务的框架,您关心的是传输灵活性.Web API是构建服务的框架,您关心HTTP。”
答案 2 :(得分:1)
网络服务
它基于SOAP并以XML格式返回数据。 它仅支持HTTP协议。 它不是开源的,但可以被任何理解xml的客户端使用。 它只能在IIS上托管。
<强> WCF 强>
它也基于SOAP并以XML格式返回数据。 它是Web服务(ASMX)的发展,支持TCP,HTTP,HTTPS,命名管道,MSMQ等各种协议。 WCF的主要问题是其繁琐而广泛的配置。 它不是开源的,但可以被任何理解xml的客户端使用。 它可以在应用程序中或在IIS上或使用窗口服务托管。
WCF休息
要将WCF用作WCF Rest服务,您必须启用webHttpBindings。 它分别通过[WebGet]和[WebInvoke]属性支持HTTP GET和POST动词。 要启用其他HTTP谓词,您必须在IIS中进行一些配置,以接受.svc文件上该特定谓词的请求 使用WebGet通过参数传递数据需要配置。必须指定UriTemplate 它支持XML,JSON和ATOM数据格式。
Web API
这是用简单方便的方式构建HTTP服务的新框架。 Web API是开源的,是通过.NET Framework构建REST-ful服务的理想平台。 与WCF Rest服务不同,它使用HTTP的完整特性(如URI,请求/响应头,缓存,版本控制,各种内容格式) 它还支持MVC功能,例如路由,控制器,操作结果,过滤器,模型绑定器,IOC容器或依赖注入,单元测试使其更加简单和健壮。 它可以在应用程序或IIS上托管。 它是轻量级架构,适用于智能手机带宽有限的设备。 响应由Web API的MediaTypeFormatter格式化为JSON,XML或您想要添加为MediaTypeFormatter的任何格式。
向谁选择WCF或WEB API
如果要创建应支持特殊方案的服务(例如单向消息传递,消息队列,双工通信等),请选择WCF。 如果要创建可在可用时使用快速传输通道的服务(例如TCP,命名管道,甚至UDP(在WCF 4.5中)),请选择WCF,并且还希望在所有其他传输通道不可用时支持HTTP。 如果要通过HTTP创建可以使用HTTP的完整功能(如URI,请求/响应头,缓存,版本控制,各种内容格式)的面向资源的服务,请选择Web API。 如果您希望将服务公开给广泛的客户,包括浏览器,手机,iPhone和平板电脑,请选择Web API。