SOA不是Web Service,Web Service是目前最适合实现SOA的技术
今天应用Webservices的面向服务架构与过去不同的特点就在于它们是基于标准以及松散耦合的。广泛接受的标准(如XML和SOAP)提供了在各不同厂商解决方案之间的交互性。而松散耦合将分布计算中的参与者隔离开来,交互两边某一方的改动并不会影响到另一方。这两者的结合意味着公司可以实现某些Web services而不用对使用这些Web services的客户端的知识有任何了解。
将这种基于标准的、松散耦合的面向服务的架构简称为SOA。
SOAP特性
SOA服务具有平台独立的自我描述XML文档。Web服务描述语言(WSDL, Web Services Description Language)是用于描述服务的标准语言。
SOA 服务用消息进行通信,该消息通常使用XML Schema来定义(也叫做XSD, XML Schema Definition)。消费者和提供者或消费者和服务之间的通信多见于不知道提供者的环境中。服务间的通讯也可以看作企业内部处理的关键商业文档。
在一个企业内部,SOA服务通过一个扮演目录列表(directory listing)角色的登记处(Registry)来进行维护。应用程序在登记处(Registry)寻找并调用某项服务。统一描述,定义和集成(UDDI, Universal Description, Definition, and Integration)是服务登记的标准。
每项SOA服务都有一个与之相关的服务品质(QoS, quality of service)。QoS的一些关键元素有安全需求(例如认证和授权),可靠通信(译注:可靠消息是指,确保消息“仅且仅仅”发送一次,从而过滤重复信息。),以及谁能调用服务的策略。
REST是RepresentationalState Transfer的简写,REST采用简单的URL的方式来代表一个对象,例如一个URL就对应一个对象。Amazon、Yahoo和国内的阿里软件都提供了REST方式的Webservice调用。
REST的优点:
1)轻量级的解决方案,不必向SOAP那样要构建一个标准的SOAP XML。
2)可读性比较好:可以把URL的名字取得有实际意义。
3)不需要SDK支持:直接一个Http请求就可以,但是SOAP则可能需要使用到一些Webservice的类库(例如Apache的Axis)。
SOAP的优点:
1)定义严格。必须符合SOAP的格式
2)某些时候使用比较方便
3)开发工具支持比较多一点。
Google基本上采用SOAP方式的Webservice。
REST的缺点:
1)复杂的应用中,URL可能非常长,而且不容易解析。