【问题标题】:Difference summary WCF and Web APIWCF和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 做什么,反之亦然?

【问题讨论】:

标签: c# asp.net wcf asp.net-web-api


【解决方案1】:

这个列表绝不是详尽的。

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

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

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

  1. 支持 HTTP 的全部功能。 (基于 Uri 的访问、Http 请求/响应、Http 缓存等)要在 WCF 中执行此操作,您需要进行额外的工作以将其配置为 REST 服务等。
  2. 轻量级配置最少。
  3. 支持路由、控制器/动作 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..
猜你喜欢
  • 2017-10-02
  • 2012-03-16
  • 2016-07-26
  • 1970-01-01
  • 2011-08-14
  • 2012-03-16
  • 1970-01-01
  • 2013-11-30
  • 2017-01-13
相关资源
最近更新 更多