WCF VS Web API
微软官方链接:https://docs.microsoft.com/en-us/dotnet/framework/wcf/wcf-and-aspnet-web-api?
基本名词解释
SOAP: “Simple Object Access Protocol”的缩写, 即简单对象访问协议。SOAP是使用WCF和XML格式的主要基础。Web Service构建用于提供有关服务数据信息的WSDL(Web Services Description Language)文件。WSDL文件用于客户端理解服务中可用的方法,描述了服务的元数据。
REST:“Representational State Transfer”的缩写,即表述性状态传递,是一种架构设计模式,也可说是一种风格,这个风格的基本原则包括客户端和服务器之间的交互在请求之间是无状态的。从客户端到服务器的每个请求都必须包含理解请求所必需的信息。如果服务器在请求之间的任何时间点重启,客户端不会得到通知。
RESTFUL:REST 指的是一组架构约束条件和原则,而满足这些约束条件和原则的应用程序或设计就是 RESTful。RESTFUL特点包括:每一个URI代表1种资源;客户端使用GET、POST、PUT、DELETE4个表示操作方式的动词对服务端资源进行操作:GET用来获取资源,POST用来新建资源(也可以用于更新资源),PUT用来更新资源,DELETE用来删除资源;通过操作资源的表现形式来操作资源;资源的表现形式是XML或者HTML;客户端与服务端之间的交互在请求之间是无状态的,从客户端到服务端的每个请求都必须包含理解请求所必需的信息。
关于WCF
WCF(Windows Communication Foundation),用于创建分布式和可互操作的应用程序。 WCF是用于开发面向服务的应用程序的有效平台。它使开发人员可以创建安全,可靠且引人注目的开发解决方案,这些解决方案可以跨平台集成,并且可以与现有系统进行互操作。
关于Web API
ASP.NET Web API是一个框架,刻意在浏览器和移动设备构建HTTP服务。 它是在ASP .NET Framework上开发RESTful应用程序的理想平台。
ASP.NET Web API是用于构建基于HTTP的服务的可扩展框架,可以在不同平台(例如Web,Windows,移动设备等)上的不同应用程序中访问这些服务。
WCF的优点
- 支持多种协议,例如HTTP,TCP,命名管道。
- 较高的安全性和可靠性
- 可以将请求-答复,单向和双工消息交换模式与WCF一起使用。
Web API的优点
- 支持基于HTTP的动词(GET,PUT,POST和DELETE),因此支持基于约定的CRUD操作。
- 很方便定义和使用。
- 可向各种设备展示数据和服务。
- Web API是开源的,是在.NET平台上创建RESTful服务的理想选择。
- 可以进行Web服务的可伸缩,分离的开发,其他开发人员可以共享并使用它来访问Web服务。
WCF的特点
- 高度可配置的传输
- 序列化很方便
- 与IIS集成良好
- 易于自我托管
- 非常多的元数据
- 复杂模型
- 复杂的数据合同
Web API的特点
- 与HTTP紧密耦合
- 易于测试
- 提供内容协商支持
- 允许开放式格式
- 不依赖平台
WCF与Web API的对比
参数 | WCF | Web API |
---|---|---|
消息交换模式 | 支持请求-答复,单向和双工消息交换模式。 | HTTP是请求/响应,但可以通过SignalR和WebSockets集成支持其他模式。 |
获得方式 | .NET Framework附带。 | 随.NET Framework一起提供,但它是开源的,也可以作为独立下载带外提供。 |
支持MVC功能 | 不支持任何MVC功能。 | 支持MVC功能,例如路由,控制器,结果,过滤器,操作等。 |
编码支持 | 文本,MTOM和二进制 | XML,JSON等 |
传输协议 | HTTP,TCP,UDP和自定义传输 | HTTP |
使用模型 | 编码模型上的属性定义 | HTTP的动词映射到方法 |
配置 | 使用web.config和属性配置HttpConfiguration类,但不使用web.config服务。 | 可以使用web.config服务配置Web API。 |
RESTful服务 | 它提供对RESTFUL服务的支持,但有局限性。 | 构建RESTFUL服务的理想选择。 |
WCF与Web API的使用场景
场景 | WCF | Web API |
---|---|---|
需要支持诸如消息队列,端到端消息安全性,双工通信,分布式事务等方案。 |
√ |
× |
已经有可用的WCF服务并且想要额外添加HTTP支持时。 | √ | × |
同时支持SOAP和RESTful | √ | × |
想要通过HTTP创建面向资源的服务。 | × | √ |
项目是MVC应用程序,并且需要HTTP上的某些功能。 | × | √ |
只想构建一个HTTP / RESTful服务 | × | √ |
关键区别
- WCF提供请求-答复,单向或双工,而Web API默认仅是请求-答复。
- WCF用于开发基于SOAP的服务,而Web API用于基于SOAP和RESTful的服务。
- WCF不提供对MVC功能的任何支持,而Web API支持MVC功能。
- WCF支持HTTP,UDP和自定义传输协议,而Web API仅支持HTTP协议。
- WCF提供了文本,MTOM和二进制编码支持,而Web API支持UTF-8编码格式。
- WCF支持消息队列,消息安全性,双工通信,事务,而Web API不支持。
- WCF代表Windows Communication Foundation,而API代表应用程序接口。
WCF VS Web API相关推荐
- 【转】WCF与Web API 区别(应用场景)
Web api 主要功能: 支持基于Http verb (GET, POST, PUT, DELETE)的CRUD (create, retrieve, update, delete)操作 请求的回 ...
- WCF 和 ASP.NET Web API
地址:https://docs.microsoft.com/zh-cn/dotnet/framework/wcf/wcf-and-aspnet-web-api WCF 是 Microsoft 为生成面 ...
- 如何选择Web Service/WCF/Web API
在.net平台下,有很多的技术选择来构建一个HTTP Services. Web Service 1.它是基于SOAP协议的,数据格式是XML 2.只支持HTTP协议 3.它不是开源的,可被任意一个了 ...
- Entity Framework 6 Recipes 2nd Edition(9-1)译-用Web Api更新单独分离的实体
第九章 在N层结构的应用程序中使用EF 不是所有的应用都能完全地写入到一个单个的过程中(就是驻留在一个单一的物理层中),实际上,在当今不断发展的网络世界,大量的应用程序的结构包含经典的表现层,应用程, ...
- 浅谈web api和Webservice
浅谈web api和Webservice webapi用的是http协议,webservice用的是soap协议 webapi无状态,相对webservice更轻量级.webapi支持如get,pos ...
- 不写画面的网页程序设计,Web API、Web Service、WCF Service
客户有一个系统,经常要连上我方,查询数据 以前的作法是给对方一个账号,让他可以连上我们的DB来查询. 所以,早期的同仁,真的给他们DB链接字符串 客户的Windows程序.网站就真的靠这么危险的方式, ...
- 在Asp.net应用程序中构建基于WCF Web.Api的服务
WCF Web API Preview 5 发布了,你可以官方网站下载或通过Nuget安装它. 下面让我们在Asp.net applicatoin中来实现一个非常简单的web api service. ...
- WCF和ASP.NET Web API在应用上的选择
在最近发布的Visual Studio 2012及.NET 4.5中, 微软正式推出新的网络服务框架ASP.NET Web API.作为ASP.NET MVC 4的一部分,ASP.NET Web AP ...
- ASP.NET MVC4中调用WEB API的四个方法
当今的软件开发中,设计软件的服务并将其通过网络对外发布,让各种客户端去使用服务已经是十分普遍的做法.就.NET而言,目前提供了Remoting,WebService和WCF服务,这都能开发出功能十分强 ...
最新文章
- express 对数据库数据增删改查
- Android开发一 什么是3G
- php 删除数组的空元素,php删除数组空元素的方法_后端开发
- 使用拓扑数据分析理解卷积神经网络模型的工作过程
- hdu 2019 数列有序!(c语言)
- 学习echarts需要先学习java 吗_Echarts和Echarts-java类库简单使用方法
- 操作系统-Windows操作系统的线程调度了解这些
- linux下运行exe程序之wine的使用与安装
- jetson nano的USB转232 DB9串口线选购
- Python3入门视频教程百度网盘
- 计算机中1kb等于多少字节,在计算机中1kb等于多少字节
- 强对偶性、弱对偶性以及KKT条件的证明(对偶问题的几何证明)
- 读书笔记--家庭教育1
- ttkefu如何下载访客的访问明细
- (实测可用)STM32CubeMX教程-STM32L431RCT6开发板(定时器Timer2)
- android项目屏幕适配的解决方法
- raid卡缓存对硬盘性能_可能是最简单的组raid教程
- BZOJ 3007: 拯救小云公主
- List转Map思想的妙用
- 问mysql数据库varchar(50),能存多少个中文字。 ---浅谈字符与字节的区别