Web Service 是一个比较新的分布式的服务组件, 其中新的名词定义很多。 这里只介绍基本概念。
Web Service 本质上就是要以标准化的方式实现企业内外各个不同服务系统之间的互调或者集成,为了实现这个目的, 需要什么样的组成元素呢? 这里从一个最基本的方法来分析一下。假如服务A要远程调用服务B上的服务,要实现这个目的,需要下面的3个要素。
1. 服务B要以一种标准化的语言告诉服务A它能提供什么样的服务, 以及如何调用它的服务, 它的服务在哪里等,这就是Web Service的描述服务, 是What, How and Where 部分。
2. 服务A要以一种标准化的通信消息格式告诉服务B, 他想调用什么服务,并加入相应的输入参数等。 当服务B完成服务后, 会同样以标准化的通信方式告诉B相应的服务结果,是Web Service的服务消息的 Request 和 Response 部分。
3. 服务B要注册到相应的公共网址,以便外部能找到,使URL部分。
快速理解WSDL
是一种基于XML格式的关于WEB服务的描述语言,其主要目的在于Web Service 的提供者将自己的WEB服务的所有相关内容,如所提供的服务的传输方式、服务方法接口、接口参数、服务路径等,生成相应的完全文档,发布给使用者。 使用者可以通过这个WSDL文档,创建相应的SOAP请求(Request)消息。 通过HTTP传递给Web Service 提供者; Web 服务在完成服务请求后, 将SOAP返回(Response)消息传回请求者, 服务请求者再根据WSDL文档将SOAP返回消息解析自己能够理解的内容。
WSDL由3部分组成:
What 部分
它描述了Web Service 的具体内容, 由以下3个部分组成
1) Type
使用 XML Schemea 具体说明服务接口方法,包括方法名、输入参数及其类型和返回结果的类型。值得特别说明的是参数的具体类型以 xsd 的方式来定义。如 xsd:string, xsd:decimal , xsd:int 等为了保证各个软件系统所给出的参数值是通用的。
2)Message
定义Web Service所有的请求消息、响应消息和异常消息, 包括一个或多个part参数。
3) PortType
定义Web Service 的服务接口, 起作用服务接口是将上面的type 和Message 进行关联。
How 部分
将Web Service 的服务内容和通信协议进行绑定。
一般和基于HTTP传输的SOAP协议进行绑定。
Where 部分
通过服务来指定Web Service 的URI
通过Port元素、Binding 和 PortType 关联起来, 再通过 Address 指向一个具体的URI。
快速理解UDDI
UDDI 是 Universal Description, Discovery and Integeration 的缩写。 是一种创建注册表服务的规范,以便大家将自己的Web Service进行注册发布供能够使用者查找。
当服务提供者想将自己的Web Service 服务向全世界公布, 以便外部找到其服务时, 服务提供者可以将自己的Web Service 服务注册到相应的UDDI 商用者册网站, 目前全球有IBM 等四家UDDI 商用者册网站,IBM 的网址是 http://uddi.ibm.com . 这四家网站是同步的, 服务提供者以SOAP 消息格式将自己的服务发布到这些网站即可。
因为WSDL 文件中已经给定了Web Service 的地址URI, 外部可以直接通过wsdl 提供URI 进行相应的Web Service调用,所以UDDI并不是一个必须的Web Service 组件, 服务方完全可以不进行UDDI 的注册。