这个问题在这里已有答案:
跟进问题this post:
目前我对SOAP和RESTful Services之间的差异略有了解 .
我的问题是我何时应该使用SOAP,何时应该使用RESTful;在性能/速度或请求处理方面,哪一个“更好”?
我正在RESTful(java)中第一次实现,我想要了解更多;我之前已经处理过SOAP .
休息和肥皂的区别
REST没有WSDL [Web描述语言]接口定义 .
REST通过HTTP,但SOAP可以通过任何传输协议,如HTTP,FTP,SMTP,JMS等 .
SOAP Web服务总是进行POST操作,而使用REST可以选择特定的http方法,如GET,POST,PUT,DELETE . 示例:要使用SOAP获取项目,您应该创建一个请求xml,但在REST的情况下,您只需在URL本身中指定项目ID .
REST是一种架构 . REST将提供人类可读的结果 . REST是无状态的 . REST服务很容易缓存 .
SOAP是一种协议 . 它可以运行在JMS,FTP,Http之上 .
REST在大多数情况下更容易使用,并且更灵活 . 与SOAP不同,REST不必使用XML来提供响应 . 我们可以找到基于REST的Web服务,它们以命令分隔值(CSV),JavaScript对象表示法(JSON)和真正简单的整合(RSS)输出数据 . 我们可以以一种易于在我们的应用程序所需的语言内解析的形式获得我们需要的输出.REST更高效(使用更小的消息格式),在设计理念中更快,更接近其他Web技术
肥皂网服务:
如果您的应用程序需要有保证的可靠性和安全性,那么SOAP提供了额外的标准来确保这种类型的操作 .
如果双方(服务提供商和服务消费者)必须就交换格式达成一致,那么SOAP会为此类交互提供严格的规范 .
RestWeb服务:
完全无状态操作:用于无状态CRUD(创建,读取,更新和删除)操作 .
缓存情况:如果需要缓存信息 .
SOAP
简单对象访问协议(SOAP)标准是定义消息体系结构和消息格式的XML语言,由Web服务使用,它包含操作的描述 . WSDL是一种基于XML的语言,用于描述Web服务以及如何访问它们 . 将运行在SMTP,HTTP,FTP等上 . 需要中间件支持,定义良好的机制以定义WSDL XSD等服务,WS-Policy SOAP将返回基于XML的数据
REST Representational State Transfer(RESTful)Web服务 . 它们是第二代Web服务 . RESTful Web服务,通过HTTP进行通信而不是基于SOAP的服务,并且不需要XML消息或WSDL服务API定义 . 对于REST,不需要中间件只需要HTTP支持.WADL Standard,REST可以返回XML,纯文本,JSON,HTML等
休息VS SOAP
肥皂:
►SOAP是在TCP / UDP / SMTP上运行的简单对象访问协议 .►XML格式的SOAP读写请求响应消息 .►SOAP使用接口来定义服务 .►SOAP更安全,因为它有自己的安全性和明确定义的标准 .►SOAP遵循RPC和Document样式来定义Web服务 .►SOAP使用SOAP-UI作为客户端工具进行测试 .
休息
►REST是使用底层HTTP协议的代表性状态转移 .►REST无国籍 .►REST是一种架构风格,用于描述和定义Web服务 .►REST可以使用JSON / XML / Plain HTML读取和写入请求响应消息 .►REST为Web服务中使用的每个资源使用URI . 资源可以是图像文本方法等 .►REST使用一组VERB,如HTTP的GET,POST,PUT,DELETE .►与SOAP UI相比,REST易于开发且易于管理 .►REST具有轻量级客户端工具或插件,可轻松集成到浏览器中 .►REST服务可以缓存 .
REST代表 Representational State Transfer ,其中SOAP代表 Simple Object Access Protocol .
SOAP定义了自己的 security ,其中REST继承了底层传输的安全性 .
SOAP不支持错误处理,但REST内置了 error handling .
REST是轻量级的,不需要 XML parsing . 任何客户端都可以使用REST,甚至是使用Ajax和Javascript的Web浏览器 . REST使用 less bandwidth ,它不需要每个消息的SOAP标头 .
REST比任何提供URI的协议都有用 . 忽略REST的第5点,如下图所示 .
REST与SOAP Web服务我看到很多新的Web服务现在使用REST样式架构而不是SOAP架构 . 让我们退后一步,解释一下REST是什么 . 什么是REST Web服务首字母缩略词REST代表Representational State Transfer,这基本上意味着每个唯一的URL都是某个对象的表示 . 您可以使用HTTP GET获取该对象的内容,将其删除,然后您可以使用POST,PUT或DELETE来修改对象(实际上,大多数服务都使用POST) . 谁在使用REST?雅虎的所有Web服务都使用REST,包括Flickr,del.icio.us API使用它,pubsub,bloglines,technorati以及eBay和亚马逊都有REST和SOAP的Web服务 . 谁在使用SOAP?谷歌在实现其Web服务以使用SOAP方面保持一致,但Blogger除外,它使用XML-RPC . 您还可以在许多企业软件中找到SOAP Web服务 . REST与SOAP正如您可能已经注意到我提到的使用REST api的公司已经存在很长时间了,而且他们的apis今年大部分都出现了 . 所以REST绝对是创建网络服务的时髦方式,如果创建网络服务可能是时髦的(让我们面对你用肥皂洗,你累了就休息) . REST Web服务的主要优点是:轻量级 - 不需要额外的xml标记人类可读结果易于构建 - 无需工具包SOAP还具有一些优势:易于使用 - 有时是刚性类型检查,遵守 Contract 开发工具对于消费Web服务,有时候它之间的折腾更容易 . 例如,谷歌的AdWords网络服务真的很难消费(无论如何都是CF),它使用SOAP标头,以及其他一些使它变得困难的东西 . 相反,亚马逊的REST Web服务有时候很难解析,因为它可以高度嵌套,结果模式可以根据您搜索的内容而有所不同 . 您选择的哪种架构确保开发人员可以轻松访问它,并且有详细记录 .
Freitag, P. (2005). "REST vs SOAP Web Services". Retrieved from http://www.petefreitag.com/item/431.cfm on June 13, 2010
REST几乎总是会更快 . SOAP的主要优点是它提供了一种服务机制,可以向客户描述自己,并宣传它们的存在 .
REST更轻巧,几乎可以使用任何工具实现,从而带来更低的带宽和更短的学习曲线 . 但是,客户必须知道要发送什么以及期望什么 .
通常,当您向外部世界发布复杂或可能更改的API时,SOAP将更有用 . 除此之外,REST通常是更好的选择 .
11 回答
休息和肥皂的区别
REST没有WSDL [Web描述语言]接口定义 .
REST通过HTTP,但SOAP可以通过任何传输协议,如HTTP,FTP,SMTP,JMS等 .
SOAP Web服务总是进行POST操作,而使用REST可以选择特定的http方法,如GET,POST,PUT,DELETE . 示例:要使用SOAP获取项目,您应该创建一个请求xml,但在REST的情况下,您只需在URL本身中指定项目ID .
REST是一种架构 . REST将提供人类可读的结果 . REST是无状态的 . REST服务很容易缓存 .
SOAP是一种协议 . 它可以运行在JMS,FTP,Http之上 .
REST在大多数情况下更容易使用,并且更灵活 . 与SOAP不同,REST不必使用XML来提供响应 . 我们可以找到基于REST的Web服务,它们以命令分隔值(CSV),JavaScript对象表示法(JSON)和真正简单的整合(RSS)输出数据 . 我们可以以一种易于在我们的应用程序所需的语言内解析的形式获得我们需要的输出.REST更高效(使用更小的消息格式),在设计理念中更快,更接近其他Web技术
肥皂网服务:
如果您的应用程序需要有保证的可靠性和安全性,那么SOAP提供了额外的标准来确保这种类型的操作 .
如果双方(服务提供商和服务消费者)必须就交换格式达成一致,那么SOAP会为此类交互提供严格的规范 .
RestWeb服务:
完全无状态操作:用于无状态CRUD(创建,读取,更新和删除)操作 .
缓存情况:如果需要缓存信息 .
SOAP
简单对象访问协议(SOAP)标准是定义消息体系结构和消息格式的XML语言,由Web服务使用,它包含操作的描述 . WSDL是一种基于XML的语言,用于描述Web服务以及如何访问它们 . 将运行在SMTP,HTTP,FTP等上 . 需要中间件支持,定义良好的机制以定义WSDL XSD等服务,WS-Policy SOAP将返回基于XML的数据
REST Representational State Transfer(RESTful)Web服务 . 它们是第二代Web服务 . RESTful Web服务,通过HTTP进行通信而不是基于SOAP的服务,并且不需要XML消息或WSDL服务API定义 . 对于REST,不需要中间件只需要HTTP支持.WADL Standard,REST可以返回XML,纯文本,JSON,HTML等
休息VS SOAP
肥皂:
►SOAP是在TCP / UDP / SMTP上运行的简单对象访问协议 .
►XML格式的SOAP读写请求响应消息 .
►SOAP使用接口来定义服务 .
►SOAP更安全,因为它有自己的安全性和明确定义的标准 .
►SOAP遵循RPC和Document样式来定义Web服务 .
►SOAP使用SOAP-UI作为客户端工具进行测试 .
休息
►REST是使用底层HTTP协议的代表性状态转移 .
►REST无国籍 .
►REST是一种架构风格,用于描述和定义Web服务 .
►REST可以使用JSON / XML / Plain HTML读取和写入请求响应消息 .
►REST为Web服务中使用的每个资源使用URI . 资源可以是图像文本方法等 .
►REST使用一组VERB,如HTTP的GET,POST,PUT,DELETE .
►与SOAP UI相比,REST易于开发且易于管理 .
►REST具有轻量级客户端工具或插件,可轻松集成到浏览器中 .
►REST服务可以缓存 .
REST代表 Representational State Transfer ,其中SOAP代表 Simple Object Access Protocol .
SOAP定义了自己的 security ,其中REST继承了底层传输的安全性 .
SOAP不支持错误处理,但REST内置了 error handling .
REST是轻量级的,不需要 XML parsing . 任何客户端都可以使用REST,甚至是使用Ajax和Javascript的Web浏览器 . REST使用 less bandwidth ,它不需要每个消息的SOAP标头 .
REST比任何提供URI的协议都有用 . 忽略REST的第5点,如下图所示 .
Freitag, P. (2005). "REST vs SOAP Web Services". Retrieved from http://www.petefreitag.com/item/431.cfm on June 13, 2010
REST几乎总是会更快 . SOAP的主要优点是它提供了一种服务机制,可以向客户描述自己,并宣传它们的存在 .
REST更轻巧,几乎可以使用任何工具实现,从而带来更低的带宽和更短的学习曲线 . 但是,客户必须知道要发送什么以及期望什么 .
通常,当您向外部世界发布复杂或可能更改的API时,SOAP将更有用 . 除此之外,REST通常是更好的选择 .