asp.net-web-api - wcf Restful服务和WEB API的区别

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

我查询了很久,到底哪里需要使用WEB API,哪里应该使用WCF Restful服务。无论我们想在 WEB API 中实现什么,我们都可以在 WCF Rest 中实现。我试图深入研究答案,但我发现我们需要在 wcf 中进行额外的设置,例如 URI 模板、契约(Contract)、端点。但更多的是关于设置,但我想知道使用 WCF Restful Services 背后的真正原因。

最佳答案

网络服务

  • 它基于 SOAP,并以 XML 格式返回数据。
  • 仅支持 HTTP 协议(protocol)。
  • 它不是开源的,但任何理解 XML 的客户端都可以使用。
  • 它只能托管在 IIS 上。


WCF

  • 它也基于 SOAP,并以 XML 格式返回数据。
  • 它是网络服务 (ASMX) 的演变,支持 TCP、HTTP、HTTPS、命名管道、MSMQ 等各种协议(protocol)。
  • 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 构建 RESTful 服务的理想平台。
  • 与 WCF REST 服务不同,它使用 HTTP 的全部功能(例如 URI、请求/响应 header 、缓存、版本控制、各种内容格式)。
  • 它还支持 MVC 功能,例如路由、 Controller 、操作结果、过滤器、模型绑定(bind)器、IOC 容器或依赖项注入(inject)、单元测试,使其更加简单和强大。
  • 它可以托管在应用程序内或 IIS 上。
  • 它是一种轻量级架构,非常适合智能手机等带宽有限的设备。
  • 响应由 Web API 的 MediaTypeFormatter 格式化为 JSON、XML 或您想要添加为 MediaTypeFormatter 的任何格式。


在 WCF 或 Web API 之间进行选择

  • 当您想要创建一项支持特殊场景(例如单向消息传递、消息队列、双工通信等)的服务时,请选择 WCF。
  • 当您想要创建一个可以使用可用的快速传输 channel (例如 TCP、命名管道,甚至 UDP(在 WCF 4.5 中))的服务,并且当所有其他传输 channel 都支持 HTTP 时,请选择 WCF不可用。
  • 如果您想要通过 HTTP 创建面向资源的服务,并且可以使用 HTTP 的全部功能(例如 URI、请求/响应 header 、缓存、版本控制、各种内容格式),请选择 Web API。
  • 如果您希望向广泛的客户端(包括浏览器、手机、iPhone 和平板电脑)公开您的服务,请选择 Web API。

更多详情可以引用http://www.c-sharpcorner.com/UploadFile/8a67c0/who-is-winner-web-api-or-wcf/ .

关于asp.net-web-api - wcf Restful服务和WEB API的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36441875/

相关文章:

javascript - 使用 angularjs 显示 pdf

java - 连接到 .NET REST 端点的 Android 中的对等错误间歇性连接重置

javascript - Web Audio Api 在不同浏览器中的精确循环

asp.net-mvc - Asp.net MVC 4 + WEB API - 自定义身份验证 token

javascript - asp.net/javascript 创建 cookie,创建客户端或服务器端的优势?

c# - 如何在 C# 中使用 WCF REST 服务?

c# - 如何在 WCF Rest 服务中将类对象作为参数传递

c# - 在 Web API 中调用 DELETE 方法

wcf - 在WCF中自定义WebHttp帮助输出

wcf - 我们可以在 WCF REST 中使用 [Operationcontract(isOneWay ="true")] 吗?