双方程序员针对需求文档的一段对话:
您好,我看文档中写的通讯使用JSON格式的WebService协议,请问是SOAP还是REST的呢
如果是SOAP协议的话能否提供一下对应的WSDL
乙方 : 呃呃呃WebService三要素
SOAP、WSDL(WebServicesDescriptionLanguage)、UDDI(UniversalDescriptionDiscovery andIntegration), soap用来描述传递信息的格式, WSDL 用来描述如何访问具体的接口, uddi用来管理,分发,查询webService 。幂等性
对同一个系统,使用同样的条件,一次请求和重复的多次请求对系统资源的影响是一致的。SOAP
简单对象访问协议(Simple Object Access Protocol,SOAP)是一种基于 XML 的 协议,可以和现存的许多因特网协议和格式结合使用,包括超文本传输协议(HTTP),简单邮件传输协议(SMTP),多用途网际邮件扩充协议(MIME),基于“通用”传输协议是 SOAP的一个优点。SOAP使用基于XML的数据结构和超文本传输协议(HTTP)的组合定义了一个标准的方法来使用Internet上各种不同操作环境中的分布式对象。其实SOAP最早是针对RPC的一种解决方案,很轻量,同时作为应用协议可以基于多种传输协议来传递消息(Http,SMTP等)。但是随着SOAP作为WebService的广泛应用,不断地增加附加的内容,使得现在开发人员觉得SOAP很重,使用门槛很高,而且随着需求的增长,又不得增加协议以支持安全性,这使SOAP变得异常庞大,背离了简单的初衷。在SOAP后续的发展过程中,WS-*一系列协议的制定,增加了SOAP的成熟度,也给SOAP增加了负担。SOAP 常常被称作“web services”,这是一个误称。SOAP 和 web 基本上说不上话。REST 提供的才是真正的基于 URL 和 HTTP 的 “web services”。REST
相对而言,SOAP协议属于复杂的、重量级的协议,当前随着Web2.0的兴起,表述性状态转移(Representational State Transfer,REST)逐步成为一个流行的架构风格。REST是一种轻量级的Web Service 架构风格,其实现和操作比SOAP和XML-RPC更为简洁,可以完全通过HTTP协议实现,还可以利用缓存Cache来提高响应速度,性能、效率和易用性上都优于SOAP协议。REST架构对资源的操作包括获取、创建、修改和删除资源的操作正好对应HTTP协议提供的GET、POST、PUT和DELETE方法,这种针对网络应用的设计和开发方式,可以降低开发的复杂性,提高系统的可伸缩性。REST架构尤其适用于 完全无状态的CRUD(Create、Read、Update、Delete,创建、读取、更新、删除)操作。 基于REST的软件体系结构风格(Software Architecture Style)称之为 面向资源体系架构 (Resource-oriented Architecture,ROA)。按照REST原则设计的软件、体系结构,通常被称为“REST式的”(RESTful)。 由于没有类似于SOAP的权威性协议作为规范,因此各个网站的REST实现都自有一套,也正是因为这种各自实现的情况,在性能和可用性上会大大高于SOAP发布的web service,但细节方面有太多没有约束的地方,其统一通用方面远远不及SOAP。举个例子:假设A组织,B组织都实现了Restful API来通过工号查询人员信息,因为没有统一的规范。
--- A的API 可能是这样:http://A/api/person/001--- B的API 可能是这样:http://A/api/person/id=001
第三方客户端在实现远程调用的时候就必须考虑这些API的差异,分别查看A,B的API文档。 如果有个权威性协议作为规范做指导,规定这个API应该实现成下面这样,那么第三方客户端也只需按照这个标准去调用远程API,而不用查看A,B的API文档:
http://A/api/person/{001}
REST和SOAP区别
SOAP | REST | |
成熟度 | 高 | 低 |
效率和易用性 | 低 | 高 |
安全性 | 高 | 低 |
原子性事务/消息可靠性 | 高 | 低 |
.NET中如何查看WSDL
END