WCF和Web API的区别总结

Posted

技术标签:

【中文标题】WCF和Web API的区别总结【英文标题】:Difference summary WCF and Web API 【发布时间】:2014-05-13 08:37:04 【问题描述】:

我在找ASP.NET MVC Web APIWCF Service的区别总结。

我看过这个问题What is the difference between Asp.Net Web API and WCF Service? 还有这个问题WCF vs ASP.NET Web API,但他们没有总结我用一个可以实现什么,用另一个我不能实现什么。

两者都可以通过 url 联系,我首先认为这是它们之间的区别。

简而言之: 我可以用 WCF 做什么,而我不能用 ASP.NET Web API 做什么,反之亦然?

【问题讨论】:

主要区别在于 Web API 是关于 web 的,而 WCF 可以处理 web 和 TCP/Binary 等。 ***.com/questions/9348639/wcf-vs-asp-net-web-api 【参考方案1】:

这个列表绝不是详尽的。

WCF 做的事情是您使用 Web API 无法(轻松)做到的。

    支持基于 SOAP 的 XML 格式。 支持强类型数据协定。 支持使用 WSDL 等单点元数据信息交换。 支持各种绑定,例如 TCP、命名管道、MSMQ,甚至 UDP 等。 支持各种托管选项,例如控制台应用程序、WAS、IIS、Windows 服务。 支持开箱即用的单向消息传递、双工、消息队列。 支持多种身份验证方案,如 Windows、表单、证书等。

使用 WCF 无法(轻松)完成的事情是 Web API。

    支持 HTTP 的全部功能。 (基于 Uri 的访问、Http 请求/响应、Http 缓存等)要在 WCF 中执行此操作,您需要进行额外的工作以将其配置为 REST 服务等。 轻量级配置最少。 支持路由、控制器/动作 MVC 范例、模型绑定等。

基本上,Web API 是一种通过 Http 进行 RESTful 服务的简单方法,无需对 Web 服务了解太多。

要在 WCF 中做同样的事情,您需要在 httpBindings、UriTemplates、Verbs 等方面做额外的工作。这意味着,首先要了解 WCF。然后使用 WCF 通过 http 实现 RESTFul 服务,这是 Web Api 开箱即用的。

【讨论】:

感谢您的开始总结 :)【参考方案2】:

这本身不是一个摘要。我希望它是一种实用指南。

对我来说,最终归结为我希望前端应用程序代码看起来有多简单,以及如何实现最大生产力。

传统的 WCF over http 是基于 SOAP 的消息传递协议。您在项目中添加服务引用,Visual Studio 负责生成代理类。并且您使用代理类的实例。因此,当您编写前端代码时,智能感知可以帮助您。不要被愚弄。这只是让您的生活变得更简单的 IDE。其背后相当复杂。但是我的生产力在一定程度上得到了提高。我不必编写代理类。因此,这就是我选择基于 c# 的前端的原因。

或者,如果我必须处理 Webapi 端点,我没有任何 IDE 生成的代理类的奢侈。因此,我会为所有内容编写代码。通常,我使用 HttpClient 类与我的 Web api 端点通信。假设,我可以编写一个代理类来与 web api 对话。但它并不像在您的 wcf 案例中那样简单,它们是为您自动生成的。

换个说法或推理,如果我的前端是 javascript,那么我唯一的最佳选择是通过 web api 而不是 wcf 托管 web 服务。如果我要从 Js 与 wcf 端点交谈,那将是 PITN。

所以它最终取决于您的产品计划、设计、项目进度等软件开发计划。一切顺利。

【讨论】:

谢谢,关于 PITN...我目前正在使用它没有任何问题,例如使用 AJAX/JSON..

以上是关于WCF和Web API的区别总结的主要内容,如果未能解决你的问题,请参考以下文章

WCF Web API 和 WCF 数据服务之间的区别

WCF Web API WCF REST 和 Web Service 的区别

web service, wcf, wcf rest, web api之间的区别

wcf RESTful服务和WEB API的区别

WCF与Web API 区别(应用场景)

Web API RPC 与 WCF 和 JSON [重复]