1.Web Service的使用背景
当前除了HTTP接口很流行以外,另一个常见使用的接口是Web Service接口。在介绍Web Service接口前先来介绍下SOA。
SOA(Service Oriented Ambiguity)--- 即面向服务架构
首先,SOA并不是某一种具体的技术实现,它是一个系统架构的设计思想。这个架构设计思想的提出背景是随着我们的软件系统解决的问题越来越复杂,那么会带来难以维护、难以扩展,容易出错等问题。SOA思想的提出就是为了解决这个问题。 SOA的提出是在企业计算领域,就是要将紧耦合的系统,划分为面向业务的,粗粒度,松耦合,无状态的服务。服务发布出来供其他服务调用,一组互相依赖的服务就构成了SOA架构下的系统。 不同的厂商和个人对SOA有着不同的理解,但从SOA的定义中可以看到几个关键特性:一种粗粒度、松耦合服务架构,服务之间通过简单、精确定义接口进行通讯,不涉及底层编程接口和通讯模型。
SOA与Web Service
即然SOA是一种解决复杂IT架构,将架构进行拆分解耦,变独立的思想,那么进行拆分后各个看似独立的服务之间也是需要有数据相互调用、消息互相访问的能力才能将他们连接起来使用。不同的服务应用可能会使用不同的语言编写,不同的平台及内部协议实现的,那么就需要某种技术可以在不同的机器上的不同应用无须借助符加的、专门的第三方软件或硬件,就可相互交换数据进行访问。 Web Service则是可实现SOA思想的技术之一,也是当前最适合实现SOA思想的技术。
2.Web Service的技术介绍
2.1 Web Service
官方给出的Web Service概念是:一个平台独立的,低耦合的,自包含的、基于可编程的web的应用程序,可使用开放的XML(标准通用标记语言下的一个子集)标准来描述、发布、发现、协调和配置这些应用程序,用于开发分布式的交互操作的应用程序。 比如我们想开发一个实时预报天气的服务,那么天气的信息怎么获取呢,放一卫星到天上去的成本太高了,我们可以调用国家气象局提供的天气信息接口。但是我们使用的技术和气象部门提供信息平台的技术并不能一致,将会遇到跨平台调用接口的问题,就需要使用Web Service技术实现相互访问、数据传递等。 Web Service也可以说是一种跨编程语言和跨操作系统平台的远程调用技术。
2.2 Web Service使用的三大技术:SOAP、WSDL、UDDI
这三部分组成,分别解答三个问题:
- 服务之间如何传输数据?
- 数据的格式是怎样的?
- 如何发布和查找这些服务?
SOAP(Simple Object Access Protocol)---简单对象访问协议 基于XML在分散或分布式的环境中交换信息的简单协议。允许服务提供者和服务客户经过防火墙在互联网上进行通信。 当SOAP消息真正需要在网络上传输的时候,SOAP消息能够与不同的底层传输协议进行绑定,可在多种消息传输模式中使用,包括HTTP、SMTP、MIME。还支持从消息系统到远程过程调用协议RPC等大量应用程序。
WSDL(Web Services Description Language)---网络服务描述语言 基于XML的语言,用于描述Web Services以及如何对它们进行访问。 WSDL主要使用以下几个元素来描述某个Web Service . <portType>: Web Servicer执行的操作 <message>:Web Service使用的消息 <types>:Web Service使用的数据类型 <binding>:Web Service使用的通信协议
UDDI(Universal Description Discovery and Integration) 可译为“通用描述、发现与集成服务” UDDI是一个独立于平台的框架,通过使用Internet来描述服务,发现企业,并对企业服务进行集成。 UDDI可帮助Web服务提供商在互联网上发布Web Service的信息。是一种目录服务,企业通过UDDI来注册和搜索Web Service.
3.RPC与REST
3.1 RPC(Remote Procedure Call)---远程过程调用
它是Web Service领域广为流行的一种开发风格。开发关注于服务器/客户端之间的方法调用,并不关注基于哪个网络层的哪种协议。 XML-RPC:是一种使用XML格式封装方法的调用,并使用HTTP协议作为传送机制的RPC风格的实现。XML-RPC的请求方法都是HTTP协议的POST方法,请求和响应的数据格式均为XML。目前此技术已被SOAP取代。 大Web服务:基于SOAP+WSDL+UDDI实现RPC风格的大型Web服务的统称。
3.2 REST(Representational State Transfer)---表现层状态转化
具有跨语言、跨平台的特点,REST是设计风格而不是标准。如果一个架构符合REST原则,就称它为RESTful架构。 在三种主流的Web实现方案中,因为REST模式的Web服务与复杂的SOAP和XML-RPC对比来讲明显的更加简洁,越来越多的web服务开始采用REST风格设计和实现。REST 对 Web 的影响非常大,由于其使用相当方便,已经普遍地取代了基于 SOAP 和 WSDL 的接口设计。
Rest架构的主要原则:
1.资源与URI:资源可以是实体也可以是抽象概念。识别资源需要唯一标识URI
2.统一资源接口:每个资源都有一个唯一的资源标识符
| 方法 | 功能 | 幂等 | 安全 | | GET | 查询获取 | 是 | 是 | | POST | 创建 | 否 | 否 | | PUT | 更新 | 是 | 否 | | DELETE | 删除 | 是 | 否 |
3.资源的表述:资源的表现形式,具有多种表现形式。 4.资源的链接:对资源的各种操作不会改变资源标识符 5.状态的转移:无状态通信原则指服务端不应该保存客户端状态,不是客户端应用不能有状态。
|