JS:
什么是SOAPQ我想不用多_google一把满眼都是。其?/span>SOAP最早是针对RPC的一U解x案,单对象访问协议,很轻量,同时作ؓ应用协议可以Z多种传输协议来传递消息(Http,SMTP{)。但是随着SOAP作ؓWebService的广泛应用,不断地增加附加的内容Q得现在开发h员觉?/span>SOAP很重Q用门槛很高。在SOAP后箋的发展过E中Q?/span>WS-*一pd协议的制定,增加?/span>SOAP的成熟度Q也l?/span>SOAP增加了负担?/span>
REST其实q不是什么协议也不是什么标准,而是?/span>Http协议的设计初衷作了诠释,?/span>Http协议被广泛利用的今天Q越来越多的是将其作Z输协议,而非原先设计者所考虑的应用协议?/span>SOAPcd?/span>WebService是最好的例子Q?/span>SOAP消息完全是?/span>Http协议作ؓ消息承蝲Q以至于对于Http协议中的各种参数Q例如编码,错误码等Q都|之不顾。其实,最轻量U的应用协议是Http协议?/span>Http协议所抽象?/span>get,post,put,delete好比数据库中最基本的增删改查,而互联网上的各种资源好比数据库中的记录Q可能这么比M是很好)Q对于各U资源的操作最后L能抽象成四种基本操作Q在定义了定位资源的规则以后Q对于资源的操作通过标准?/span>Http协议可以实玎ͼ开发者也会受益于q种轻量U的协议?/span>
REST的思想归结以下有如下几个关键点Q?/span>
1Q面向资源的接口设计
所有的接口设计都是针对资源来设计的Q也很cM于我们的面向对象和面向过E的设计区别Q只不过现在网l上的操作实体都作ؓ资源来看待,同时URI的设计也是体C对于资源的定位设计。后面会提到有一些网站的API设计说是REST设计Q其实是RPC-REST的合体Qƈ非是REST的思想?/span>
2Q抽象操作ؓ基础?/span>CRUD
q点很简单,Http中的get,put,post,delete分别对应?/span>read,update,create,delete四种操作Q如果仅仅是作ؓ对于资源的操作,抽象成ؓq四U已l够了Q但是对于现在的一些复杂的业务服务接口设计Q可能这L抽象未必能够满。其实这也在后面的几个网站的API设计中暴露了q样的问题,如果要完全按?/span>REST的思想来设计,那么适用的环境将会有限制Q而非放之四v皆准的?/span>
3Q?/span>Http是应用协议而非传输协议
q点在后面各大网站的API分析中有很明昄体现Q其实有些网站已l走CSOAP的老\上,说是REST的理念设计,其实是作了一套私有的SOAP协议Q因此称之ؓREST风格的自定义SOAP协议?/span>
4Q无状态,自包?/span>
q点其实不仅仅是对于REST来说的,作ؓ接口设计都需要能够做到这点,也是作ؓ可扩展和高效性的最基本的保证,q是?/span>SOAP?/span>WebService也是一栗?/span>
SOAP虽然发展到现在已l脱M初衷Q但是对于异构环境服务发布和调用Q以及厂商的支持都已l达C较ؓ成熟的情c不同^収ͼ开发语a之间通过SOAP来交互的web service都能够较好的互通(在部分复杂和Ҏ(gu)的参数和q回对象解析上,协议没有作很l致的规定,Dq是需要作部分修正Q?/span>
REST国外很多大网站都发布了自q开?/span>APIQ很多都提供?/span>SOAP?/span>REST两种Web ServiceQ根据调查部分网站的REST风格的用情况要高于SOAP。但是由?/span>REST只是一U基?/span>Http协议实现资源操作的思想Q因此各个网站的REST实现都自有一套,在后面会讲诉各个大网站的REST API的风根{也正是因ؓq种各自实现的情况,在性能和可用性上会大大高?/span>SOAP发布?/span>web serviceQ但l一通用斚wq远不及SOAP。由于这些大|站?/span>SP往往专注于此|站?/span>API开发,因此通用性要求不高?/span>
׃没有cM?/span>SOAP的权威性协议作范,REST实现的各U协议仅仅只能算是私有协议,当然需要遵?/span>REST的思想Q但是这L节方面有太多没有U束的地斏V?/span>REST日后的发展所走向规范也会直接影响到这部分的设计是否能够有很好的生命力?/span>
ȝ来说SOAP在成熟度上优?/span>REST?/span>
SOAP协议对于消息体和消息头都有定义,同时消息头的可扩展性ؓ各种互联|的标准提供了扩展的基础Q?/span>WS-*pd是较ؓ成功的规范。但是也׃SOAP׃各种需求不断扩充其本n协议的内容,D?/span>SOAP处理斚w的性能有所下降。同时在易用性方面以及学习成本上也有所增加?/span>
REST被h们的重视Q其实很大一斚w也是因ؓ光效以及简z易用的Ҏ(gu)。这U高效一斚w源于光向资源接口设计以及操作抽象简化了开发者的不良设计Q同时也最大限度的利用?/span>Http最初的应用协议设计理念。同Ӟ在我看来RESTq有一个很吸引开发者的是能够很好的融合当?/span>Web2.0的很多前端技术来提高开发效率。例如很多大型网站开攄REST风格?/span>API都会有多U返回Ş式,除了传统?/span>xml作ؓ数据承蝲Q还有(JSON,RSS,ATOMQ等形式Q这对很多网站前端开发h员来说就能够很好?/span>mashup各种资源信息?/span>
因此在效率和易用性上来说Q?/span>REST更胜一{V?/span>
q点其实可以攑օ到成熟度中,不过在当前的互联|应用和q_开发设计过E中Q安全已l被提到了很高的高度Q特别是作ؓ外部接口l第三方调用Q安全性可能会高过业务逻辑本n?/span>
SOAP在安全方面是通过使用XML-Security?/span>XML-Signature两个规范l成?/span>WS-Security来实现安全控制的Q当前已l得C各个厂商的支持,.net Q?/span>php Q?/span>java 都已l对其有了很好的支持Q虽然在一些细节上q是有不兼容的问题,但是互通基本上是可以的Q?/span>
REST没有M规范对于安全斚w作说明,同时现在开?/span>REST风格API的网站主要分成两U,一U是自定义了安全信息装在消息中Q其实这?/span>SOAP没有什么区别)Q另外一U就是靠gSSL来保?/span>,但是q只能够保证点到点的安全Q如果是需要多点传输的?/span>SSL无能ؓ力了。安全这块其实也是一个很大的问题Q今q在BEAC上看到有演示采用SAML2实现的网站间SSOQ其实是直接采用?/span>XML-Security?/span>XML-SignatureQ效率看h也不是很高。未?/span>REST规范化和通用化过E中的安全是否也会采用这两种规范Q是未知的,但是加入的越多,REST失去它高效性的优势多?/span>
我们的系l要么就是已l有了那些需要被发布出去的服务,要么是刚刚设计好的服务Q但是开发h员的传统设计思想?/span>REST的Ş式被接受q需要一Ҏ(gu)间。同时在资源型数据服务接口设计上来说按照REST的思想来设计相Ҏ(gu)说要Ҏ(gu)一些,而对于一些复杂的服务接口来说Q可能强要去按照REST的风格来设计会有些牵强。这一点其实可以看看各大网站的接口可以知道,很多|站q要传入function的名UC为参敎ͼq就明显已经q背?/span>REST本n的设计思\?/span>
?/span>SOAP本n是面向RPC来设计的Q开发h员十分容易接受,所以不存在什么适应的过E?/span>
技术没有好坏,只有是不是合适,一U好的技术和思想被误用了Q那么就会得到反效果?/span>REST?/span>SOAP各自都有自己的优点,同时如果在一些场景下如果L?/span>RESTQ其实就会走?/span>SOAPQ例如安全)?/span>
REST对于资源型服务接口来说很合适,同时特别适合对于效率要求很高Q但是对于安全要求不高的场景。?/span>SOAP的成熟性可以给需要提供给多开发语a的,对于安全性要求较高的接口设计带来便利。所以我觉得Ua说什么设计模式将会占据主导地位没有什么意义,关键q是看应用场景?/span>
同时很重要一点就是不要扭曲了REST现在很多|站都跟风去开?/span>REST风格的接口,其实都是在学其ŞQ不知其心,最后弄得不伦不c,性能上不去,安全又保证不了,徒有一个看D摸象L皮囊?/span>?/span>SOA的基技术实现方式中WebService占据了很重要的地位,通常我们提到WebServiceW一x是SOAP消息在各U传输协议上交互。近几年REST的思想伴随着SOA逐渐被大家接受,同时各大|站不断开?/span>API提供l开发者,也激起了REST风格WebService的热潮?/span>
什么是SOAPQ我想不用多_google一把满眼都是。其?/span>SOAP最早是针对RPC的一U解x案,单对象访问协议,很轻量,同时作ؓ应用协议可以Z多种传输协议来传递消息(Http,SMTP{)。但是随着SOAP作ؓWebService的广泛应用,不断地增加附加的内容Q得现在开发h员觉?/span>SOAP很重Q用门槛很高。在SOAP后箋的发展过E中Q?/span>WS-*一pd协议的制定,增加?/span>SOAP的成熟度Q也l?/span>SOAP增加了负担?/span>
REST其实q不是什么协议也不是什么标准,而是?/span>Http协议的设计初衷作了诠释,?/span>Http协议被广泛利用的今天Q越来越多的是将其作Z输协议,而非原先设计者所考虑的应用协议?/span>SOAPcd?/span>WebService是最好的例子Q?/span>SOAP消息完全是?/span>Http协议作ؓ消息承蝲Q以至于对于Http协议中的各种参数Q例如编码,错误码等Q都|之不顾。其实,最轻量U的应用协议是Http协议?/span>Http协议所抽象?/span>get,post,put,delete好比数据库中最基本的增删改查,而互联网上的各种资源好比数据库中的记录Q可能这么比M是很好)Q对于各U资源的操作最后L能抽象成四种基本操作Q在定义了定位资源的规则以后Q对于资源的操作通过标准?/span>Http协议可以实玎ͼ开发者也会受益于q种轻量U的协议?/span>
REST的思想归结以下有如下几个关键点Q?/span>
1Q面向资源的接口设计
所有的接口设计都是针对资源来设计的Q也很cM于我们的面向对象和面向过E的设计区别Q只不过现在网l上的操作实体都作ؓ资源来看待,同时URI的设计也是体C对于资源的定位设计。后面会提到有一些网站的API设计说是REST设计Q其实是RPC-REST的合体Qƈ非是REST的思想?/span>
2Q抽象操作ؓ基础?/span>CRUD
q点很简单,Http中的get,put,post,delete分别对应?/span>read,update,create,delete四种操作Q如果仅仅是作ؓ对于资源的操作,抽象成ؓq四U已l够了Q但是对于现在的一些复杂的业务服务接口设计Q可能这L抽象未必能够满。其实这也在后面的几个网站的API设计中暴露了q样的问题,如果要完全按?/span>REST的思想来设计,那么适用的环境将会有限制Q而非放之四v皆准的?/span>
3Q?/span>Http是应用协议而非传输协议
q点在后面各大网站的API分析中有很明昄体现Q其实有些网站已l走CSOAP的老\上,说是REST的理念设计,其实是作了一套私有的SOAP协议Q因此称之ؓREST风格的自定义SOAP协议?/span>
4Q无状态,自包?/span>
q点其实不仅仅是对于REST来说的,作ؓ接口设计都需要能够做到这点,也是作ؓ可扩展和高效性的最基本的保证,q是?/span>SOAP?/span>WebService也是一栗?/span>
SOAP虽然发展到现在已l脱M初衷Q但是对于异构环境服务发布和调用Q以及厂商的支持都已l达C较ؓ成熟的情c不同^収ͼ开发语a之间通过SOAP来交互的web service都能够较好的互通(在部分复杂和Ҏ(gu)的参数和q回对象解析上,协议没有作很l致的规定,Dq是需要作部分修正Q?/span>
REST国外很多大网站都发布了自q开?/span>APIQ很多都提供?/span>SOAP?/span>REST两种Web ServiceQ根据调查部分网站的REST风格的用情况要高于SOAP。但是由?/span>REST只是一U基?/span>Http协议实现资源操作的思想Q因此各个网站的REST实现都自有一套,在后面会讲诉各个大网站的REST API的风根{也正是因ؓq种各自实现的情况,在性能和可用性上会大大高?/span>SOAP发布?/span>web serviceQ但l一通用斚wq远不及SOAP。由于这些大|站?/span>SP往往专注于此|站?/span>API开发,因此通用性要求不高?/span>
׃没有cM?/span>SOAP的权威性协议作范,REST实现的各U协议仅仅只能算是私有协议,当然需要遵?/span>REST的思想Q但是这L节方面有太多没有U束的地斏V?/span>REST日后的发展所走向规范也会直接影响到这部分的设计是否能够有很好的生命力?/span>
ȝ来说SOAP在成熟度上优?/span>REST?/span>
SOAP协议对于消息体和消息头都有定义,同时消息头的可扩展性ؓ各种互联|的标准提供了扩展的基础Q?/span>WS-*pd是较ؓ成功的规范。但是也׃SOAP׃各种需求不断扩充其本n协议的内容,D?/span>SOAP处理斚w的性能有所下降。同时在易用性方面以及学习成本上也有所增加?/span>
REST被h们的重视Q其实很大一斚w也是因ؓ光效以及简z易用的Ҏ(gu)。这U高效一斚w源于光向资源接口设计以及操作抽象简化了开发者的不良设计Q同时也最大限度的利用?/span>Http最初的应用协议设计理念。同Ӟ在我看来RESTq有一个很吸引开发者的是能够很好的融合当?/span>Web2.0的很多前端技术来提高开发效率。例如很多大型网站开攄REST风格?/span>API都会有多U返回Ş式,除了传统?/span>xml作ؓ数据承蝲Q还有(JSON,RSS,ATOMQ等形式Q这对很多网站前端开发h员来说就能够很好?/span>mashup各种资源信息?/span>
因此在效率和易用性上来说Q?/span>REST更胜一{V?/span>
q点其实可以攑օ到成熟度中,不过在当前的互联|应用和q_开发设计过E中Q安全已l被提到了很高的高度Q特别是作ؓ外部接口l第三方调用Q安全性可能会高过业务逻辑本n?/span>
SOAP在安全方面是通过使用XML-Security?/span>XML-Signature两个规范l成?/span>WS-Security来实现安全控制的Q当前已l得C各个厂商的支持,.net Q?/span>php Q?/span>java 都已l对其有了很好的支持Q虽然在一些细节上q是有不兼容的问题,但是互通基本上是可以的Q?/span>
REST没有M规范对于安全斚w作说明,同时现在开?/span>REST风格API的网站主要分成两U,一U是自定义了安全信息装在消息中Q其实这?/span>SOAP没有什么区别)Q另外一U就是靠gSSL来保?/span>,但是q只能够保证点到点的安全Q如果是需要多点传输的?/span>SSL无能ؓ力了。安全这块其实也是一个很大的问题Q今q在BEAC上看到有演示采用SAML2实现的网站间SSOQ其实是直接采用?/span>XML-Security?/span>XML-SignatureQ效率看h也不是很高。未?/span>REST规范化和通用化过E中的安全是否也会采用这两种规范Q是未知的,但是加入的越多,REST失去它高效性的优势多?/span>
我们的系l要么就是已l有了那些需要被发布出去的服务,要么是刚刚设计好的服务Q但是开发h员的传统设计思想?/span>REST的Ş式被接受q需要一Ҏ(gu)间。同时在资源型数据服务接口设计上来说按照REST的思想来设计相Ҏ(gu)说要Ҏ(gu)一些,而对于一些复杂的服务接口来说Q可能强要去按照REST的风格来设计会有些牵强。这一点其实可以看看各大网站的接口可以知道,很多|站q要传入function的名UC为参敎ͼq就明显已经q背?/span>REST本n的设计思\?/span>
?/span>SOAP本n是面向RPC来设计的Q开发h员十分容易接受,所以不存在什么适应的过E?/span>
技术没有好坏,只有是不是合适,一U好的技术和思想被误用了Q那么就会得到反效果?/span>REST?/span>SOAP各自都有自己的优点,同时如果在一些场景下如果L?/span>RESTQ其实就会走?/span>SOAPQ例如安全)?/span>
REST对于资源型服务接口来说很合适,同时特别适合对于效率要求很高Q但是对于安全要求不高的场景。?/span>SOAP的成熟性可以给需要提供给多开发语a的,对于安全性要求较高的接口设计带来便利。所以我觉得Ua说什么设计模式将会占据主导地位没有什么意义,关键q是看应用场景?/span>
同时很重要一点就是不要扭曲了REST现在很多|站都跟风去开?/span>REST风格的接口,其实都是在学其ŞQ不知其心,最后弄得不伦不c,性能上不去,安全又保证不了,徒有一个看D摸象L皮囊?/span>