我查询了很久,到底哪里需要使用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/