如今,Web开发者的可选技术相当之多;从简化的数据库访问技术,到易用的中间件服务包装技术,以及各种有趣的客户端软件等等,一应俱全。所有这些产品和工具,都是为了帮助Web开发者用最快的速度开发出最好的Web应用。
然而,拥有大量可选软件方案以及为Web应用的特定部分选用特定方案,都是具有挑战的事;而且,现在Web开发者必须持续跟踪各种不断变化着的标准与方法。
举个例子,Web服务技术就有SOAP(Simple Object Access
Protocol,简单对象访问协议)和REST(Representational State
Transfer,表示性状态转移)这两种方案。它们都是有效的方案,但在具体场合下采用哪种方案好,这要取决于Web开发者。
目前,大部分Web开发者似乎都了解REST——一种采用标准URI进行调用的方案。REST很容易理解,而且只要是支持HTTP/HTTPS的客户端
/服务器就支持它。你可以用HTTP
GET方法来执行命令。所以,开发者们感受到的REST的优势是:开发简单、只需依托现有Web基础设施、以及学习成本低。
然而,SOAP作为一种古老的Web服务技术,短期内还不会退出历史舞台。而且,随着SOAP
1.2的出现,SOAP印象中的一些缺点已得到改进,采纳率和易用程度也都得到提高。另需注意的是,从W3C SOAP
1.2版开始,SOAP这一缩写不再代表Simple Object Access Protocol(简单对象访问协议),而是仅仅作为协议名称而已。
相对REST而言,SOAP
1.2多出一些开销,不过这些开销也带来了一些好处。首先,SOAP在三个方面离不开XML(Extensible Markup
Language,可扩展标记语言):SOAP信封(envelope)是基于XML的,它定义了消息里有什么以及如何处理它;一套用于数据类型的编码规
则;过程调用和响应的规划。SOAP信封由传输协议(HTTP/HTTPS)发出,RPC(Remote Procedure
Call,远程过程调用)得到执行,然后一个XML文档随SOAP信封返回。
需要注意的是,基于“通用”传输协议是SOAP的一个优点。REST目前基于HTTP/HTTPS;而SOAP可支持任何传输协议,从HTTP
/HTTPS到SMTP(Simple Mail Transfer Protocol,简单邮件传送协议),甚至JMS(Java Messaging
Service,Java消息传递服务)。不过,由于XML较为冗长且解析费时,因此采用XML也成为一个弊端。
不过,对Web开发者来说的好消息是,目前上述两种方案都是行之有效的方案。REST和SOAP都能解决许多Web方面的问题与挑战,而且在许多情况下,它们各自都能满足开发者的要求,也就是说可互换使用。
但很多人不知道,这两种技术可以混合搭配使用。REST很好理解,且极易上手;不过由于它缺乏标准,因此只被看作是一种架构方法。与之相比,SOAP是一个工业标准,它具备良好定义的协议,以及一套良好确立的规则,在大型和小型系统中均有采用。
因此,REST的适用场合包括:
有限的带宽和资源
别忘了返回的结构可以采用(由开发者定义的)任何格式。另外,由于REST采用标准的GET、PUT、POST和DELETE动词,因此可被任何浏览器所
支持。除此以外,REST还可以使用为目前大多数浏览器支持的XMLHttpRequest对象,这为AJAX增色不少。
完全无状态的操作 对于那些需多步执行的操作,REST并非最佳选择,采用SOAP更合适。但是,如果你需要无状态的CRUD(Create/Read/Update/Delete,创建/读取/更新/删除)操作,那么应采用REST。
缓存考虑 若要利用无状态操作的特性,使得信息可被缓存,那么REST是很好的选择。
以上已经覆盖很多方案了,那么,为什么还要考虑SOAP呢?正如前述,SOAP比较成熟而且是经过良好定义的,具有完整的规范。而REST只不过是一种方法,对开发未作任何规约;因此,假如你遇到以下场合,那么SOAP是最佳选择:
异步处理与调用 如果你的应用需要确保可靠性与安全性,那么请采用SOAP。SOAP 1.2为确保这种操作补充定义了WSRM(WS-Reliable Messaging)等标准。
形式化契约 若提供者/消费者双方必须就交换格式取得一致,那么采用SOAP更合适。SOAP 1.2为这种交互提供了严格的规范。
有状态的操作 如果应用需要上下文信息与对话状态管理,那么应采用SOAP。SOAP
1.2为此补充定义了WS-Security、WS-Transactions和WS-Coordination等标准。相比之下,REST方法要求开发
者自己来实现这些框架性工作。
正如你所看到的,REST和SOAP各自有其用武之地。它们在安全性和传输层等方面有着自己的潜在问题,不过它们都能完成任务,而且在许多情况下,它们都
丰富了Web的技术手段。因此,就这一论题,其实最好的原则就是灵活性原则;因为至少在现今的Web开发中,无论面对何种问题,Web开发者们总有办法运
用好这两种技术中的一种。
关于作者
Mike
Rozlog是Embarcadero科技公司的高级产品主管。他的主要工作是确保Embarcadero公司推出开发工具满足全世界开发者们的期望。他
的大部分时间被致力于从技术和业务两个方面来介绍讲解Embarcadero的产品与服务,其听众是遍布全球分析师及其他听众。Mike曾工作于
CodeGear,一个于2008年被Embarcadero收购的开发工具团队。之前,他为Borland公司工作了八年,担任过包括首席技术架构师在
内的许多职位。作为一名知名作者,Mike出版了很多书。他最近的作品《Mastering JBuilder》已由John Wiley &
Sons出版。
分享到:
相关推荐
为了更好地理解SOAP的工作原理,下面给出一个简单的SOAP请求和响应的例子: - **SOAP请求示例**: ```xml <SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"> <SOAP-ENV:Header/> ...
在实践中,了解并掌握REST和SOAP的基本原理,以及相关的开发工具,能够帮助我们更好地设计和实现Web服务。同时,理解何时使用REST,何时选择SOAP,将有助于提高系统的效率和可维护性。无论选择哪种方法,重要的是...
REST则以其简洁、直观的接口设计和更好的可扩展性受到现代Web服务的青睐。通过此项目,开发者可以将现有SOAP服务的接口转换成RESTful风格,使客户端应用能够更高效地与服务器进行通信。 【标签】"rest-api":REST ...
尽管SOAP和REST都有各自的优势,但在实际应用中选择哪种技术方案取决于具体的需求和场景: 1. **安全性需求高**:如果项目对数据传输的安全性有较高要求,如金融领域,那么选择SOAP可能是更好的选择,因为它提供了...
在IT行业中,Windows Communication Foundation(WCF)是微软推出的一种用于构建分布式应用程序的...通过学习和分析这些源码,开发者可以更好地掌握WCF服务的创建、配置和使用,为后续的Web服务开发打下坚实的基础。
SOAP相比REST(Representational State Transfer),更注重强类型和契约式编程,具有更好的错误处理机制和安全特性。然而,REST通常更简单,更适合资源导向的架构,且更易于实现和消费。 8. **SOAP版本**: SOAP...
通过分析和运行这些示例,你可以更好地理解如何在实际环境中应用上述概念。 总的来说,Mule ESB 提供了一套全面的工具,使开发者能够有效地处理 SOAP 和 REST 通信中的文件附件。理解和掌握这些技术,对于在企业...
如果需要标准、健壮且跨平台的服务,SOAP 可能是更好的选择;如果追求简洁、高效且易于开发,REST 则更具优势。随着互联网的发展,REST 的普及程度越来越高,但也面临着标准化和统一性的挑战。未来,这两种技术可能...
掌握SOAP的基础知识,不仅可以帮助开发者更好地设计和实现分布式应用,还能促进对现代Web服务架构的理解。随着技术的发展,SOAP虽然面临着诸如REST等新兴协议的挑战,但它在某些场景下的优势仍然显著,值得深入学习...
SOAP(Simple Object Access Protocol)是一种基于XML的协议,用于在Web服务中交换结构化和类型化的信息。SOAP消息通常封装在HTTP协议中,允许不同系统...通过深入学习这些文档,开发者将能更好地理解和应用SOAP技术。
这两个版本是SOAP的两个主要迭代,1.1是较早的标准,而1.2则引入了一些改进,如更清晰的XML模式定义、更好的错误处理机制以及更灵活的绑定选项。 标签“PHP开发-REST API”表明,尽管这个客户端主要关注SOAP,但...
SOAP 1.2在SOAP 1.1的基础上进行了改进,包括更清晰的语义定义、更好的错误处理机制以及对XML Schema的引用支持。 ### 4. SOAP与Web服务 Web服务是通过SOAP进行通信的应用程序,它们通过WSDL(Web Services ...
SOAP更注重消息的完整性和安全性,适合企业级的、需要强类型和事务处理的场景。而REST则更轻量,基于HTTP协议,易于理解和实现,适合互联网应用的API设计。选择哪种方式取决于具体的应用需求和环境。 综上所述,...
REST(Representational State Transfer),即“表征...总结来说,REST是一种架构风格,它定义了一系列的约束条件,使得系统能够更好地适应Web的特性和环境。理解并正确应用这些约束条件是构建RESTful服务的关键所在。
3. **互操作性**:REST的简单性和易用性使其具有更好的互操作性。SOAP由于其复杂的协议栈,可能在某些情况下更难实现跨平台互操作性。 4. **性能**:REST通常被认为比SOAP更轻量级,因此在性能方面具有优势。 5. *...