webapi测试(为何要进行webapi测试)
一、webapi是什么意思
Web API是网络应用程序接口。包含了广泛的功能,网络应用通过API接口,可以实现存储服务、消息服务、计算服务等能力,利用这些能力可以进行开发出强大功能的web应用。
存储服务:存储服务关注抽象化和虚拟化存储。这个领域的领头羊是amazon s3,在我的article in web 2.0journal中对其曾有较深入的探讨。对开发者而言,S3提供了极其精简抽象的如哈希表之类的API,允许你轻松存取信息。另一个有意思的服务是openemy,它提供了类似于文件系统接口的api,但增加了给文件标签的能力。今年早些时候,TechCrunch剖析了其他一些在线存储服务。但至今我们还没看到传说中颠覆性的存储服务GDrive(来自google)和LiveDrive(来自微软),他们很大可能都会提供api。
消息服务:消息服务在概念上类似于传统意义上的中间件。由于技术和商业上的复杂性,它们还没有被大规模开发。短期内可见的基于web的通讯服务是Amazon Simple Queue Service。这个服务使得任意应用间安全和可扩展的基于队列的通讯更为便利。
计算服务:目前还没有一个一般的可以通过api访问的web计算服务黑盒,但有不少技术指向这个方向。一个是alexavertical search platform,在下面的搜索服务小节会提及更多,第二个是网格计算,比如 sungrid,datasynapse's gridserver或者platform's symphony。在API里封装任意的计算任务是个相当具挑战性的任务,也许还要很多年这种服务才会广泛流行。
二、WebService与WebApi的区别
1基于SOAP协议的,数据格式为XML
2只支持HTTP协议
3不是开源的,但可以被任意一个了解XML的人使用
4只能部署在IIS上
SOAP:简单对象访问协议Simple Object Access Protocol,传输层,,XML传输消息
WSDL:Web Server Description Language:Web Server描述语言(元数据),给客户端生成代理类的一个描述信息
UDDI:提供了一组基于标准的规范用于描述和发现服务,统一描述,发现和集成(UDDI-Universal Descript,Discovery,Integration),提供注册和查找服务
客户端在UDDI注册表(Registry)查找服务,取得服务的WSDL描述,通过SOAP调用服务。
1是简单的构建HTTP服务的新框架
2在.net平台上WebApi是一个开源的,理想的,构建REST-FUL服务的技术
3不想WCF REST Server它可以使用HTTP的全部特点(URI,request/response头,缓存,版本控制,多种内容格式)
4支持MVC的特征。像路由、控制器、action、filter、模型绑定、控制反转(IOC)或依赖注入(DI),单元测试。
4可以部署在IIS和应用程序上
6轻量级框架,并且对限制带宽的设备,比如智能手机等支持的很好
7、Response可以被Web API的MediaTypeFormatter转换成Json、XML或者任何你想转换的格式。
8、Web API非常适合构建移动客户端服务
1、需要Web Service但是不需要SOAP
2、需要在已有的WCF服务基础上建立non-soap-based http服务
3、只想发布一些简单的Http服务,不想使用相对复杂的WCF配置
4、发布的服务可能会被带宽受限的设备访问
5、希望使用开源框架,关键时候可以自己调试或者自定义一下框架
6、如果服务需要在http协议上,并且希望利用http协议的各种功能
7、如果服务需要被各种客户端(特别是移动客户端)调用
webapi多用于基于http请求的服务应用,比如说移动服务端或者需要提供第三方API服务的场景下
webservice也可以应用于webapi所在的场景,一般是做为内部服务的使用,好比如果一个系统用wcf/webservice作为内部子系统间的服务通信,而webapi用于外部服务的请求。
三、WebService和Webapi的区别
webapi用的是http协议,webservice用的是soap协议
webapi无状态,相对webservice更轻量级。webapi支持如get,post等http操作
http soap关系
http:是一个客户端和服务器端请求和应答的标准(TCP)。http协议其目的是为了提供一种发布和接收htttp页面的方法
一http协议的客户端与服务器的交互:由HTTP客户端发起一个请求,建立一个到服务器指定端口(默认是80端口)的TCP连接。HTTP服务器则在那个端口监听客户端发送过来的请求。一旦收到请求,服务器(向客户端)发回一个状态行,比如”HTTP/1.1 200 OK”,和(响应的)消息,消息的消息体可能是请求的文件、错误消息、或者其它一些信息。
soap协议:它描述了一种在分散或分布式的环境中如何交换信息的轻量级协议。soap在http协议的基础上,一个基于XML的协议。
不同:都是底层的通信协议,请求包的格式不同而已,soap包是XML格式,http纯文本格式。
关系:SOAP是个通信协议, SOAP在HTTP协议的基础上,把编写成XML的REQUEST参数,放在HTTP BODY上提交个WEB SERVICE服务器(SERVLET,ASP什么的)处理完成后,结果也写成XML作为RESPONSE送回用户端,为了使用户端和WEB SERVICE可以相互对应,可以使用WSDL作为这种通信方式的描述文件,利用WSDL工具可以自动生成WS和用户端的框架文件,SOAP具备把复杂对象序列化捆绑到XML里去的能力。
WCF和WEB API我该选择哪个?
1、当你想创建一个支持消息、消息队列、双工通信的服务时,你应该选择WCF。
2、当你想创建一个服务,可以用更快速的传输通道时,像TCP、Named Pipes或者甚至是UDP(在WCF4.5中),在其他传输通道不可用的时候也可以支持HTTP。
3、当你想创建一个基于HTTP的面向资源的服务并且可以使用HTTP的全部特征时(比如URIs、request/response头,缓存,版本控制,多种内容格式),你应该选择Web API。
4、当你想让你的服务用于浏览器、手机、iPhone和平板电脑时,你应该选择Web API。