1.WebApi
也可叫做HTTPService,基于HTTP协议,我们日常网站、系统都是使用这种形式进行访问我们的应用程序。在处理数据上WebApi效率较高。WebApi无状态,相对WebService更轻量级。
HTTP-GET 和 HTTP-POST
HTTP-GET和HTTP-POST是标准协议,使用HTTP对参数进行编码并将参数作为名称/值对传递,还使用关联的请求语义。每个协议都包含一系列HTTP请求标头,HTTP请求标头及其他一些信息定义客户端向服务器请求哪些内容,哪个服务器用一系列HTTP响应标头和所请求的数据进行响应。
HTTP-GET使用MIME类型 application/x-www-form-urlencoded(将追加到处理请求的服务器的 URL 中)以URL编码文本的形式传递其参数。
HTTP-POST参数也是 URL 编码的。 但是名称/值对是在实际的 HTTP 请求消息内部传递的,而不是作为URL的一部分进行传递。
2.WebService
基于SOAP协议,相比HTTPService能处理些更加复杂的数据类型。
WebService 就是一个应用程序,它的一个最基本的目的就是提供在各个不同平台的不同应用系统的协同工作能力。向外界暴露出一个能够通过Web进行调用的API。
SOAP是一种在HTTP协议的基础上,一个基于XML的协议。用户web上交换结构化信息和类型信息。SOAP请求是HTTP POST的一个专用版本,遵循一种特殊的xml消息格式,Content-type设置为: text/xml,任何数据都可以xml化。
SOAP协议规范
由4个主要的部分组成:
- SOAP封装(Envelop)定义了一个的框架(描述消息的内容多少、谁发送、谁应当接受、处理,以及如何处理它们)。
- SOAP编码规则(Encoding Rules)定义了可选数据编码规则,用于表示应用程序定义的数据类型和直接图表,以及一个用于序列化非语法数据模型统一标准。
- SOAP RPC表示(RPC Representation)定义一个远程调用风格(请求/响应)信息交换的模式。
- SOAP绑定(Binding)定义了SOAP和HTTP之间的绑定和使用底层协议的交换。
SOAP协议可以简单地理解为:SOAP=RPC+HTTP+XML,即采用HTTP作为通信协议,RPC(Remote Procedure Call Protocol - 远程过程调用协议)作为一致性的调用途径,XML作为数据传送的格式,从而允许服务提供者和服务客户经过防火墙在Internet上进行通信交互。
3.RestApi
REST(Representational State Transfer)是一种轻量级的Web Service架构,可以完全通过HTTP协议实现。其实现和操作比SOAP和XML-RPC更为简洁,还可以利用缓存Cache来提高响应速度,性能、效率和易用性上都优于SOAP协议。 REST架构对资源的操作包括获取、创建、修改和删除资源的操作正好对应HTTP协议提供的GET、POST、PUT和DELETE方法(Verb)。
REST并没有一个明确的标准,而更像是一种设计的风格。但是为什么目前各大平台API为什么不使用RESTful的风格来进行开发呢,比如:URL命名格式,只有post get 并没有put delete ,更加没有用到HttpStatusCode ,他们是出于什么目的没有遵循这样的面向资源的开发和设计模型?
我想主要原因有如下:
- 因为支持那些行为能带来的好处显然不及要付出的代价
- 开发效率低【不适应于自动化处理】
- 运行效率低【需要比较复杂的字符串匹配模式】
- 环境适应性差【不适应参数复杂的情况】
- 如果不是有客户硬性需求,那完全就是画蛇添足,为了这种鸡肋的风格又何必呢?
SOAP与HTTP的区别
WebService相对WebApi的优点
- 接口中实现的方法和要求参数一目了然
- 不用担心大小写问题
- 不用担心中文urlencode问题
- 代码中不用多次声明认证(账号,密码)参数
- 传递参数可以为数组,对象等…
- webapi类似于cs架构,需要同时开发客户端API和服务器端程序, 而WebService则类似于bs架构,只需要开发服务器端,不需要开发客户端,客户端只要遵循soap协议,就可以调用。
WebService相对WebApi的缺点
- 由于要进行xml解析,速度可能会有所降低。
- 编写WebService比编写HTTP接口复杂很多。
webService 可以被WebApi替代
webService完全可以被WebApi替代,而且现在的开放平台都是用的WebApi实现的。
归纳总结
- 在同一套内部系统中如果跨开发工具多种语言协同开发使用,最佳的方式还是WebService。用HTTP接口麻烦啰嗦。因为请求调用频率太高且繁琐。
- 在同一开发平台中基于web架构的客户端或者是多客户端,PC,WEB,APP共存环境,要实现与后台前后端分离,WEBAPI首选。WebApi的出现主要目的就是实现前后端分离。
Restful与SOAP的区别
- 安全性:SOAP会好于restful
- 效率和易用性(REST更胜一筹)
- 成熟度(总的来说SOAP在成熟度上优于REST)
6.MVC和WebApi对比
- MVC是建站的一种框架,倾向于返回用户的页面请求
- WebApi倾向于返回用户数据请求
- MVC直接继承System.Web.Mvc.Controller
- 而webapi继承的是System.Web.Http.ApiController
7.三种Web服务交互方案
- REST描述了一个架构样式的网络系统,比如 web 应用程序。REST相比于SOAP(Simple Object Access protocol,简单对象访问协议)以及XML-RPC更加简单明了,无论是对URL的处理还是对Payload的编码,REST都倾向于用更加简单轻量的方法设计和实现。值得注意的是REST并没有一个明确的标准,而更像是一种设计的风格。
- SOAP 简单对象访问协议是交换数据的一种协议规范,是一种轻量的、简单的、基于XML(标准通用标记语言下的一个子集)的协议,它被设计成在WEB上交换结构化的和固化的信息。
- RPC远程过程调用协议,它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议。RPC协议假定某些传输协议的存在,如TCP或UDP,为通信程序之间携带信息数据。在OSI网络通信模型中,RPC跨越了传输层和应用层。RPC使得开发包括网络分布式多程序在内的应用程序更加容易。