【问题标题】:Difference between WCF, Web API, WCF REST and Web Service?WCF、Web API、WCF REST 和 Web 服务之间的区别?
【发布时间】:2017-10-02 04:13:01
【问题描述】:

WCF 和 Web API 和 WCF REST 和 Web 服务有什么区别? WCF真的这么复杂,应该用webapi吗? WebApi是否能包揽一切工作,不占别人便宜?

【问题讨论】:

标签: rest web-services wcf asp.net-web-api wcf-web-api


【解决方案1】:

.Net 框架有许多技术允许您创建 HTTP 服务,例如 Web 服务、WCF 和现在的 Web API。互联网上有很多文章可能会描述您应该向谁使用。现在,您有很多选择可以在 .NET 框架上构建 HTTP 服务。 在这里你可以阅读更多:

WCF vs ASP.NET Web API

WCF Service vs ASP.NET Web Api

【讨论】:

  • 请不要回答重复的问题。相反,请投票关闭它们。
【解决方案2】:

.Net 框架有许多技术允许您创建 HTTP 服务,例如 Web 服务、WCF 和现在的 Web API。互联网上有很多文章可能会描述您应该向谁使用。

网络服务

  • 它基于 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 数据格式。

网络 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 中))的服务,并且您还希望在所有其他传输通道时支持 HTTP,请选择 WCF不可用。
  • 如果您想通过 HTTP 创建面向资源的服务,可以使用 HTTP 的全部功能(如 URI、请求/响应标头、缓存、版本控制、各种内容格式),请选择 Web API。
  • 如果您希望将服务公开给各种客户端,包括浏览器、手机、iphone 和平板电脑,请选择 Web API。

参考:http://www.dotnettricks.com
作者 : Shailendra Chauhan

【讨论】:

  • 很好的解释,谢谢
  • 您能多谈谈“在应用程序中托管”而不是在 IIS 上。在高层次上,我们如何实现这一目标?
  • 很棒的帖子。为了对可能的解决方案有一个广泛的看法,我还建议 OP 审查例如 ServiceStack,它提供了 WebAPI 和 WCF 都缺少的一些连接功能。
  • 解释得很好,谢谢。
  • 很好的解释
猜你喜欢
  • 2011-08-14
  • 2012-03-19
  • 2016-07-26
  • 1970-01-01
  • 2013-09-24
  • 2010-11-29
  • 1970-01-01
  • 2012-03-16
  • 2011-03-02
相关资源
最近更新 更多