rest - WCF、Web API、WCF REST 和 Web 服务之间的区别?

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

WCF 和 Web API 和 WCF REST 和 Web 服务有什么区别?
WCF真的这么复杂,应该用webapi吗?
WebApi是否可以做所有的工作而不占别人的便宜?

最佳答案

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

网络服务

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

  • WCF
  • 它也是基于 SOAP 并以 XML 形式返回数据。
  • 它是 Web 服务 (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 数据格式。

  • 网络 API
  • 这是以简单的方式构建 HTTP 服务的新框架。
  • Web API 是开源的,是在 .NET Framework 上构建 REST-ful 服务的理想平台。
  • 与 WCF Rest 服务不同,它使用 HTTP 的全部功能(如 URI、请求/响应 header 、缓存、版本控制、各种内容格式)
  • 它还支持 MVC 功能,例如路由、 Controller 、 Action 结果、过滤器、模型绑定(bind)器、IOC 容器或依赖注入(inject)、单元测试,使其更加简单和健壮。
  • 它可以托管在应用程序或 IIS 上。
  • 它是轻量级架构,适用于智能手机等带宽有限的设备。
  • 响应由 Web API 的 MediaTypeFormatter 格式化为 JSON、XML 或您想要添加为 MediaTypeFormatter 的任何格式。

  • To whom choose between WCF or WEB API


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

  • 引用:http://www.dotnettricks.com
    作者:夏琳德拉·乔汉

    关于rest - WCF、Web API、WCF REST 和 Web 服务之间的区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43775132/

    相关文章:

    多个应用程序需要通信时的 C# 最佳方法

    java - 使用不同参数调用 REST WS

    c# - 如何使用非托管 C++ 中的自定义绑定(bind)连接到 WCF 服务

    .net - 将wsHttpBinding SSL传输安全性与消息安全性结合使用有什么好处?

    c# - log4net 是否会杀死我的 WCF 单元测试?

    java - jax-rs Jersey @Post 响应实体为空

    java - 从 postman (休息服务)如何将 json 日期(字符串格式)发送到接受日期对象的 java

    c# - JSON 和 XML 的独立 Web 服务?

    c# - 对 C# Web 服务的静态引用

    jQuery/json 从 .NET Web 服务中的 POST 读取参数