以下内容摘自百度:
Web service是一个平台独立的,低耦合的,自包含的、基于可编程的web的应用程序,可使用开放的XML(标准通用标记语言下的一个子集)标准来描述、发布、发现、协调和配置这些应用程序,用于开发分布式的互操作的应用程序。
Web Service技术, 能使得运行在不同机器上的不同应用无须借助附加的、专门的第三方软件或硬件, 就可相互交换数据或集成。依据Web Service规范实施的应用之间, 无论它们所使用的语言、 平台或内部协议是什么, 都可以相互交换数据。Web Service是自描述、 自包含的可用网络模块, 可以执行具体的业务功能。Web Service也很容易部署, 因为它们基于一些常规的产业标准以及已有的一些技术,诸如标准通用标记语言下的子集XML、HTTP。Web Service减少了应用接口的花费。Web Service为整个企业甚至多个组织之间的业务流程的集成提供了一个通用机制。
简单地说,Web Service是一种可以从内联网(Intranet)或互联网(Internet)中接受、处理和发布请求的通讯技术。
在运用Web Service中,我们不仅作为服务端存在,也可以作为客户端存在。
举个例子,我写了一个网站,网站中提供了一个可以计算a+b的服务:用户可以通过网站中的表单访问Web Service,提交之后显示a+b的结果,这就是一个Web Service的实例,此中我作为服务端接受用户要计算a+b的请求,处理后发布a+b=c;同样地,在另一个实例中,加入我想要在我的程序中展示更复杂的服务,比如天气预报、地理坐标等等,那么我就可以作为一个客户端,向一个系统发送请求,这个系统接受到请求后响应我的请求,返回我所需的内容,这同样也是Web Service。
Web Service的三要素:
SOAP(Simple Object Access Protocol):即简单对象访问协议。基于XML(Extensible Markup Language,可扩展标记语言),在WEB上交换传递信息的格式。
UDDI(Universal Description Discovery and Integration):即统一描述、发现和集成。UDDI是一种目录服务,用来管理,分发,查询Web Service。
WSDL (WebServices Description Language):即Web服务描述语言。基于XML,使其能同时被及其和人阅读,用以描述如何访问具体的接口,也就是说如何调用Web Service。
调用原理
如上图,一个完整的Web Service应该包括以下几步:
- 服务提供者发布服务。
- 用户向服务注册中心请求。
- 服务注册中心根据用户请求的服务,通过UDDI找到服务端,并询问服务端具体的调用方法。
- 服务端返回给服务注册中心一个WSDL描述的xml文档,内有它所能提供的各类方法接口。
- 服务注册中心将xml封装成http(SOAP方式),发送给用户端。
- 用户端生成相应的SOAP消息发送给Web服务提供者,以实现Web服务的调用。
- 服务端按SOAP消息执行相应的Web服务,并将服务结果返回给用户端。
摘自W3school的一个实例:
一个实例:ASP.NET Web Service
在这个例子中,我们会使用 ASP.NET 来创建一个简单的 Web Service。
<%@ WebService Language="VB" Class="TempConvert" %> Imports System Imports System.Web.Services Public Class TempConvert :Inherits WebService <WebMethod()> Public Function FahrenheitToCelsius (ByVal Fahrenheit As Int16) As Int16 Dim celsius As Int16 celsius = ((((Fahrenheit) - 32) / 9) * 5) Return celsius End Function <WebMethod()> Public Function CelsiusToFahrenheit (ByVal Celsius As Int16) As Int16 Dim fahrenheit As Int16 fahrenheit = ((((Celsius) * 9) / 5) + 32) Return fahrenheit End Function End Class
此文档是一个 .asmx 文件。这是用于 XML Web Services 的 ASP.NET 文件扩展名。
使用我们的 ASP.NET Web Service 例子
在上一节,我们创建了一个 Web Service 的例子。
请在此测试华氏度转换摄氏度函数:华氏度转换为摄氏度
请在此测试摄氏度转换华氏度函数:摄氏度转换为华氏度
这些函数会向您发送一个 XML 回答
本测试使用 HTTP POST,会发送类似这样的 XML 响应:
<?xml version="1.0" encoding="utf-8" ?> <short xmlns="http://tempuri.org/">38</short>
使用表单来访问 Web Service
通过使用表单和 HTTP POST,您可以把 web service 置于您的站点上,比如这样:
华氏度转换为摄氏度:摄氏度转换为华氏度:
您可以把 web service 置于您的站点上
您可以使用这些代码把 web service 放置在您的站点上:
<form target="_blank" action='http://w3school.com.cn/webservices/tempconvert.asmx/FahrenheitToCelsius' method="POST"> <label>华氏度转换为摄氏度:</label> <p> <span> <input class="frmInput" type="text" size="30" name="Fahrenheit"> </span> <span> <input type="submit" value="提交" class="button"> </span> </p> </form> <form target="_blank" action='http://w3school.com.cn/webservices/tempconvert.asmx/CelsiusToFahrenheit' method="POST"> <label>摄氏度转换为华氏度:</label> <p> <span> <input class="frmInput" type="text" size="30" name="Celsius"> </span> <span> <input type="submit" value="提交" class="button"> </span> </p> </form>