[b]webservice 简介:[/b]
[b]
什么是webservice?[/b]
Web Services 是应用程序组件
Web Services 使用开放协议进行通信
Web Services 是独立的(self-contained)并可自我描述
Web Services 可通过使用UDDI来发现
Web Services 可被其他应用程序使用
XML 是 Web Services 的基础
简单来说。Webservice就是一个能够实现不同平台不同程序之间互相通信调用的应用程序。
[b]它如何工作?[/b]
基础的 Web Services 平台是 XML + HTTP。
HTTP 协议是最常用的因特网协议。
XML 提供了一种可用于不同的平台和编程语言之间的语言。
Web services 平台的元素:
SOAP (简易对象访问协议)
UDDI (通用描述、发现及整合)
WSDL (Web services 描述语言
接下来我们对webservice平台所涉及到元素逐个简单讲解下:
首先是SOAP:
[b]简单对象访问协议(SOAP,全写为Simple Object Access Protocol)[/b],可以从定义中看出SOAP其实是一种标准化的通讯规范,主要用于Web服务(web service)中。
SOAP的出现是为了简化网页服务器(Web Server)在从XML数据库中提取数据时,无需花时间去格式化页面,并能够让不同应用程序之间透过HTTP通讯协定,以XML格式互相交换彼此的数据,使其与编程语言、平台和硬件无关。
此标准由IBM、Microsoft、UserLand和DevelopMentor在1998年共同提出,并在 2000 年 5 月,UserLand、Ariba、Commerce One、Compaq、Developmentor、HP、IBM、IONA、Lotus、Microsoft 以及 SAP 向 W3C 提交了 SOAP 因特网协议。这些公司期望此协议能够通过使用因特网标准(HTTP 以及 XML)把图形用户界面桌面应用程序连接到强大的因特网服务器,以此来彻底变革应用程序的开发。
SOAP 1.2 于 2003 年 6 月 24 日被发布为 W3C 推荐标准。
简单的理解来说SOAP就是在webservice中用于定义数据交换的一种规范,也就是说通过SOAP协议,webservice的客户端和服务端能够互相传递数据。一般webservice框架或者类库例如jax-ws,实际上已经在底层封装好了如何根据SOAP协议针对数据进行处理的方法。大家如无特殊需求可以不用关注SOAP消息这一块的。下面简单说明下SOAP的语法规则和SOAP消息示例。有兴趣的同学可以自己去了解下。
[b]SOAP语法规则[/b]
SOAP 消息必须用 XML 来编码
SOAP 消息必须使用 SOAP Envelope 命名空间
SOAP 消息必须使用 SOAP Encoding 命名空间
SOAP 消息不能包含 DTD 引用
SOAP 消息不能包含 XML 处理指令
[b]SOAP请求实例[/b]
<?xml version="1.0"?>
<soap:Envelope
xmlns:soap="http://www.w3.org/2001/12/soap-envelope"
soap:encodingStyle="http://www.w3.org/2001/12/soap-encoding">
<soap:Body>
<m:GetPrice xmlns:m="http://www.w3school.com.cn/prices">
<m:Item>Apples</m:Item>
</m:GetPrice>
</soap:Body>
</soap:Envelope>
上面的例子请求苹果的价格。请注意,上面的 m:GetPrice 和 Item 元素是应用程序专用的元素。它们并不是 SOAP 标准的一部分。
[b]SOAP响应实例[/b]
<?xml version="1.0"?>
<soap:Envelope
xmlns:soap="http://www.w3.org/2001/12/soap-envelope"
soap:encodingStyle="http://www.w3.org/2001/12/soap-encoding">
<soap:Body>
<m:GetPriceResponse xmlns:m="http://www.w3school.com.cn/prices">
<m:Price>1.90</m:Price>
</m:GetPriceResponse>
</soap:Body>
</soap:Envelope>
接下来是WSDL:
[b]WSDL(网络服务描述语言,Web Services Description Language)[/b]是一门基于 XML 的语言,用于描述 Web Services 以及如何对它们进行访问。 同时wsdl也是一种使用 XML 编写的文档。[b]这种文档可描述某个 Web service。它可规定服务的位置,以及此服务提供的操作(或方法)。 [/b]
W3C组织没有批准1.1版的WSDL,但是2.0版本已经在制订中,2.0版将被作为推荐标准(recommendation)(一种官方标准),并将被W3C组织批准为正式标准。
在实际开发中,客户端都是根据服务器端所提供的wsdl地址或者文档来生产相应的代理类,然后在通过这些代理类调用服务器端得方法。
wsdl的文档结构:
[img]http://dl.iteye.com/upload/attachment/0064/3432/e8e6e606-59ab-3228-b02a-7e70a273bc5e.png[/img]
WSDL 端口
<portType> 元素是最重要的 WSDL 元素。它可描述一个 web service、可被执行的操作,以及相关的消息。可以把 <portType> 元素比作传统编程语言中的一个函数库(或一个模块、或一个类)。
WSDL 消息
<message> 元素定义一个操作的数据元素。每个消息均由一个或多个部件组成。可以把这些部件比作传统编程语言中一个函数调用的参数。
WSDL types
<types> 元素定义 web service 使用的数据类型。为了最大程度的平台中立性,WSDL 使用 XML Schema 语法来定义数据类型。
WSDL Bindings
<binding> 元素为每个端口定义消息格式和协议细节
在后面的实例中会详细讲解下wsdl文档里面的结构。
最后是UDDI,说实话由于我对这个也没有接触所以对它也没有太清晰的概念,按照我的理解UDDI就是webservice的目录,可以利用UDDI快速发布你的webservice或者找到你所需要的webservice。下面我把W3C网站对UDDI的一些说明贴出来:
[b]UDDI [/b]
UDDI,英文为 “Universal Description, Discovery and Integration”,可译为“通用描述、发现与集成服务”。UDDI 是一个独立于平台的框架,用于通过使用 Internet 来描述服务,发现企业,并对企业服务进行集成。企业可以使用它对 Web services 进行注册和搜索。
[b]UDDI 基于什么?[/b]
UDDI 使用 W3C 和 IETF* 的因特网标准,比如 XML、HTTP 和 DNS 协议。
UDDI 使用 WSDL 来描述到达 web services 的界面
此外,通过采用 SOAP,还可以实现跨平台的编程特性,大家知道,SOAP 是 XML 的协议 通信规范,可在 W3C 的网站找到相关的信息。
*注释:IETF - Internet Engineering Task Force
[b]UDDI 的好处[/b]
使得在成百万当前在线的企业中发现正确的企业成为可能
定义一旦首选的企业被发现后如何启动商业
扩展新客户并增加对目前客户的访问
扩展销售并延伸市场范围
满足用户驱动的需要,为在全球 Internet 经济中快速合作的促进来清除障碍
[img]http://dl.iteye.com/upload/attachment/0064/3434/085d1f4b-9138-36ef-a788-7cb37528c262.png[/img]
参考资料:
[url]http://www.w3school.com.cn/webservices/index.asp[/url]
[url]http://www.w3school.com.cn/wsdl/index.asp[/url]
[b]
什么是webservice?[/b]
Web Services 是应用程序组件
Web Services 使用开放协议进行通信
Web Services 是独立的(self-contained)并可自我描述
Web Services 可通过使用UDDI来发现
Web Services 可被其他应用程序使用
XML 是 Web Services 的基础
简单来说。Webservice就是一个能够实现不同平台不同程序之间互相通信调用的应用程序。
[b]它如何工作?[/b]
基础的 Web Services 平台是 XML + HTTP。
HTTP 协议是最常用的因特网协议。
XML 提供了一种可用于不同的平台和编程语言之间的语言。
Web services 平台的元素:
SOAP (简易对象访问协议)
UDDI (通用描述、发现及整合)
WSDL (Web services 描述语言
接下来我们对webservice平台所涉及到元素逐个简单讲解下:
首先是SOAP:
[b]简单对象访问协议(SOAP,全写为Simple Object Access Protocol)[/b],可以从定义中看出SOAP其实是一种标准化的通讯规范,主要用于Web服务(web service)中。
SOAP的出现是为了简化网页服务器(Web Server)在从XML数据库中提取数据时,无需花时间去格式化页面,并能够让不同应用程序之间透过HTTP通讯协定,以XML格式互相交换彼此的数据,使其与编程语言、平台和硬件无关。
此标准由IBM、Microsoft、UserLand和DevelopMentor在1998年共同提出,并在 2000 年 5 月,UserLand、Ariba、Commerce One、Compaq、Developmentor、HP、IBM、IONA、Lotus、Microsoft 以及 SAP 向 W3C 提交了 SOAP 因特网协议。这些公司期望此协议能够通过使用因特网标准(HTTP 以及 XML)把图形用户界面桌面应用程序连接到强大的因特网服务器,以此来彻底变革应用程序的开发。
SOAP 1.2 于 2003 年 6 月 24 日被发布为 W3C 推荐标准。
简单的理解来说SOAP就是在webservice中用于定义数据交换的一种规范,也就是说通过SOAP协议,webservice的客户端和服务端能够互相传递数据。一般webservice框架或者类库例如jax-ws,实际上已经在底层封装好了如何根据SOAP协议针对数据进行处理的方法。大家如无特殊需求可以不用关注SOAP消息这一块的。下面简单说明下SOAP的语法规则和SOAP消息示例。有兴趣的同学可以自己去了解下。
[b]SOAP语法规则[/b]
SOAP 消息必须用 XML 来编码
SOAP 消息必须使用 SOAP Envelope 命名空间
SOAP 消息必须使用 SOAP Encoding 命名空间
SOAP 消息不能包含 DTD 引用
SOAP 消息不能包含 XML 处理指令
[b]SOAP请求实例[/b]
<?xml version="1.0"?>
<soap:Envelope
xmlns:soap="http://www.w3.org/2001/12/soap-envelope"
soap:encodingStyle="http://www.w3.org/2001/12/soap-encoding">
<soap:Body>
<m:GetPrice xmlns:m="http://www.w3school.com.cn/prices">
<m:Item>Apples</m:Item>
</m:GetPrice>
</soap:Body>
</soap:Envelope>
上面的例子请求苹果的价格。请注意,上面的 m:GetPrice 和 Item 元素是应用程序专用的元素。它们并不是 SOAP 标准的一部分。
[b]SOAP响应实例[/b]
<?xml version="1.0"?>
<soap:Envelope
xmlns:soap="http://www.w3.org/2001/12/soap-envelope"
soap:encodingStyle="http://www.w3.org/2001/12/soap-encoding">
<soap:Body>
<m:GetPriceResponse xmlns:m="http://www.w3school.com.cn/prices">
<m:Price>1.90</m:Price>
</m:GetPriceResponse>
</soap:Body>
</soap:Envelope>
接下来是WSDL:
[b]WSDL(网络服务描述语言,Web Services Description Language)[/b]是一门基于 XML 的语言,用于描述 Web Services 以及如何对它们进行访问。 同时wsdl也是一种使用 XML 编写的文档。[b]这种文档可描述某个 Web service。它可规定服务的位置,以及此服务提供的操作(或方法)。 [/b]
W3C组织没有批准1.1版的WSDL,但是2.0版本已经在制订中,2.0版将被作为推荐标准(recommendation)(一种官方标准),并将被W3C组织批准为正式标准。
在实际开发中,客户端都是根据服务器端所提供的wsdl地址或者文档来生产相应的代理类,然后在通过这些代理类调用服务器端得方法。
wsdl的文档结构:
[img]http://dl.iteye.com/upload/attachment/0064/3432/e8e6e606-59ab-3228-b02a-7e70a273bc5e.png[/img]
WSDL 端口
<portType> 元素是最重要的 WSDL 元素。它可描述一个 web service、可被执行的操作,以及相关的消息。可以把 <portType> 元素比作传统编程语言中的一个函数库(或一个模块、或一个类)。
WSDL 消息
<message> 元素定义一个操作的数据元素。每个消息均由一个或多个部件组成。可以把这些部件比作传统编程语言中一个函数调用的参数。
WSDL types
<types> 元素定义 web service 使用的数据类型。为了最大程度的平台中立性,WSDL 使用 XML Schema 语法来定义数据类型。
WSDL Bindings
<binding> 元素为每个端口定义消息格式和协议细节
在后面的实例中会详细讲解下wsdl文档里面的结构。
最后是UDDI,说实话由于我对这个也没有接触所以对它也没有太清晰的概念,按照我的理解UDDI就是webservice的目录,可以利用UDDI快速发布你的webservice或者找到你所需要的webservice。下面我把W3C网站对UDDI的一些说明贴出来:
[b]UDDI [/b]
UDDI,英文为 “Universal Description, Discovery and Integration”,可译为“通用描述、发现与集成服务”。UDDI 是一个独立于平台的框架,用于通过使用 Internet 来描述服务,发现企业,并对企业服务进行集成。企业可以使用它对 Web services 进行注册和搜索。
[b]UDDI 基于什么?[/b]
UDDI 使用 W3C 和 IETF* 的因特网标准,比如 XML、HTTP 和 DNS 协议。
UDDI 使用 WSDL 来描述到达 web services 的界面
此外,通过采用 SOAP,还可以实现跨平台的编程特性,大家知道,SOAP 是 XML 的协议 通信规范,可在 W3C 的网站找到相关的信息。
*注释:IETF - Internet Engineering Task Force
[b]UDDI 的好处[/b]
使得在成百万当前在线的企业中发现正确的企业成为可能
定义一旦首选的企业被发现后如何启动商业
扩展新客户并增加对目前客户的访问
扩展销售并延伸市场范围
满足用户驱动的需要,为在全球 Internet 经济中快速合作的促进来清除障碍
[img]http://dl.iteye.com/upload/attachment/0064/3434/085d1f4b-9138-36ef-a788-7cb37528c262.png[/img]
参考资料:
[url]http://www.w3school.com.cn/webservices/index.asp[/url]
[url]http://www.w3school.com.cn/wsdl/index.asp[/url]