Webservice详解

Web Services

Web Services 可以将应用程序转换为网络应用程序。 可以被其他应用程序使用利用。是应用程序组件,使用开放协议进行通信,是独立的(self-contained)并可自我描述,可通过使用UDDI来发现,XML 是 Web Services 的基础,基本的 Web Services 平台是 XML+HTTP。使用 XML 来编解码数据,并使用 SOAP 来传输数据。

Web services 平台的元素:SOAP (简易对象访问协议)、UDDI (通用描述、发现及整合)、WSDL (Web services 描述语言)

SOAP:指简易对象访问协议,是一种通信协议,用于应用程序之间的通信,是一种用于发送消息的格式 ,被设计用来通过因特网进行通信 ,独立于平台,独立于语言,基于 XML,很简单并可扩展,允许您绕过防火墙 ,将作为 W3C 标准来发展

 WSDL:是基于 XML 的用于描述 Web Services 以及如何访问 Web Services 的语言,指网络服务描述语言,使用 XML 编写,是一种 XML 文档,用于描述网络服务,也可用于定位网络服务,还不是 W3C 标准

UDDI: 是一种目录服务,通过它,企业可注册并搜索 Web services,指通用的描述、发现以及整合(Universal Description, Discovery and Integration), 是一种用于存储有关 web services 的信息的目录。, 是一种由  描述的网络服务接口目录,经由  进行通迅,被构建于 Microsoft .NET 平台之中。

SOAP 构建模块:一条 SOAP 消息就是一个普通的 XML 文档,包含下列元素:

必需的 Envelope 元素,可把此 XML 文档标识为一条 SOAP 消息,可选的 Header 元素,包含头部信息,必需的 Body 元素,包含所有的调用和响应信息,可选的 Fault 元素,提供有关在处理此消息所发生错误的信息

SOAP语法规则:消息必须用 XML 来编码,消息必须使用 , Envelope 命名空间, 消息必须使用 , Encoding 命名空间, 消息不能包含 DTD 引用, 消息不能包含 XML 处理指令

SOAP

可选的 SOAP Header 元素包含头部信息。

SOAP Header 元素

可选的 SOAP Header 元素可包含有关 SOAP 消息的应用程序专用信息(比如认证、支付等)。如果 Header 元素被提供,则它必须是 Envelope 元素的第一个子元素。

actor 属性

通过沿着消息路径经过不同的端点,SOAP 消息可从某个发送者传播到某个接收者。并非 SOAP 消息的所有部分均打算传送到 SOAP 消息的最终端点,不过,另一个方面,也许打算传送给消息路径上的一个或多个端点。

SOAP 的 actor 属性可被用于将 Header 元素寻址到一个特定的端点。

mustUnderstand 属性

SOAP 的 mustUnderstand 属性可用于标识标题项对于要对其进行处理的接收者来说是强制的还是可选的。

假如您向 Header 元素的某个子元素添加了 "mustUnderstand="1",则它可指示处理此头部的接收者必须认可此元素。假如此接收者无法认可此元素,则在处理此头部时必须失效。

SOAP Body 元素

必需的 SOAP Body 元素可包含打算传送到消息最终端点的实际 SOAP 消息。

SOAP Fault 元素用于存留 SOAP 消息的错误和状态信息。

SOAP Fault 元素

可选的 SOAP Fault 元素用于指示错误消息。

如果已提供了 Fault 元素,则它必须是 Body 元素的子元素。在一条 SOAP 消息中,Fault 元素只能出现一次。

SOAP 的 Fault 元素拥有下列子元素:

<faultcode>  供识别故障的代码

<faultstring>可供人阅读的有关故障的说明

<faultactor>有关是谁引发故障的信息

<detail>  存留涉及 Body 元素的应用程序专用错误信息

SOAP Fault 代码

在下面定义的 faultcode 值必须用于描述错误时的 faultcode 元素中:

VersionMismatch SOAP Envelope 元素的无效命名空间被发现

MustUnderstand  Header 元素的一个直接子元素(带有设置为 "1" 的 mustUnderstand 属性)无法被理解

Client  消息被不正确地构成,或包含了不正确的信息。

Server  服务器有问题,因此无法处理进行下去。

HTTP 协议

HTTP 在 TCP/IP 之上进行通信。HTTP 客户机使用 TCP 连接到 HTTP 服务器。在建立连接之后,客户机可向服务器发送 HTTP 请求消息:

随后服务器会处理此请求,然后向客户机发送一个 HTTP 响应。此响应包含了可指示请求状态的状态代码,服务器返回了一个 200 的状态代码。这是 HTTP 的标准成功代码。

SOAP 请求可能是 HTTP POST 或 HTTP GET 请求。

HTTP POST 请求规定至少两个 HTTP 头:Content-Type 和 Content-Length。

Content-Type

SOAP 的请求和响应的 Content-Type 头可定义消息的 MIME 类型,以及用于请求或响应的 XML 主体的字符编码(可选)。

Content-Length

SOAP 的请求和响应的 Content-Length 头规定请求或响应主体的字节数。

WSDL 文档仅仅是一个简单的 XML 文档

它包含一系列描述某个 web service 的定义。

WSDL 文档结构

WSDL 文档是利用这些主要的元素来描述某个 web service 的:

<portType>  web service 执行的操作

<message>   web service 使用的消息

<types>   web service 使用的数据类型

<binding>  web service 使用的通信协议

WSDL 端口

<portType> 元素是最重要的 WSDL 元素。

它可描述一个 web service、可被执行的操作,以及相关的消息。

可以把 <portType> 元素比作传统编程语言中的一个函数库(或一个模块、或一个类)。

WSDL 消息

<message> 元素定义一个操作的数据元素。

每个消息均由一个或多个部件组成。可以把这些部件比作传统编程语言中一个函数调用的参数。

WSDL types

<types> 元素定义 web service 使用的数据类型。

为了最大程度的平台中立性,WSDL 使用 XML Schema 语法来定义数据类型。

WSDL Bindings

<binding> 元素为每个端口定义消息格式和协议细节。

WSDL 端口可描述由某个 web service 提供的界面(合法操作)。

WSDL 端口

<portType> 元素是最重要的 WSDL 元素。

它可描述一个 web service、可被执行的操作,以及相关的消息

端口定义了指向某个 web service 的连接点。可以把该元素比作传统编程语言中的一个函数库(或一个模块、或一个类),而把每个操作比作传统编程语言中的一个函数。

操作类型

请求-响应是最普通的操作类型,不过 WSDL 定义了四种类型:

One-way : 此操作可接受消息,但不会返回响应。

Request-response: 此操作可接受一个请求并会返回一个响应

Solicit-response: 此操作可发送一个请求,并会等待一个响应。

Notification: 此操作可发送一条消息,但不会等待响应

WSDL 绑定可为 web service 定义消息格式和协议细节。

binding 元素有两个属性 - name 属性和 type 属性。

name 属性定义 binding 的名称,而 type 属性指向用于 binding 的端口

soap:binding 元素有两个属性 - style 属性和 transport 属性。

style 属性可取值 "rpc" 或 "document"

operation 元素定义了每个端口提供的操作符。

对于每个操作,相应的 SOAP 行为都需要被定义。同时您必须如何对输入和输出进行编码

 

 

 

原文地址:https://www.cnblogs.com/selfimprove/p/4565967.html