在前面文章中分别介绍了MSMQ和.NET Remoting技术,今天继续分享.NET 平台下另一种分布式技术——Web Services
二、Web Services 详细介绍 2.1 Web Services 概述Web Services是支持客户端与服务器通过网络互操作的一种软件系统,是一组可以通过网络调用的应用程序API。在Web Services中主要到SOAP/UDDI/WSDL这三个核心概念,下面分别介绍下这三个概念的定义。
SOAP:SOAP(Simple Object Access Protocol,简单对象访问协议)是在分散或分布式的环境中交换信息的简单协议,是一种基于XML的协议,需要绑定一个网络传输协议来完成信息的传输,这个协议通常是Http或Https,但也可以使其他协议。
它包括四个部分:
SOAP封装:它定义了一个框架,描述消息中的内容是描述,是谁发送的,谁又应当接收并处理;
SOAP编码规则:定义了一种序列化的机制,用于表示应用程序需要使用的数据类型的实例;
SOAP RPC:表示一种协定,用于表示远程过程调用和应答;
SOAP绑定:它定义了SOAP使用哪种协议来进行交换信息。使用Http/TCP/UDP都可以。与WCF中的绑定概念一致。
换句话说,SOAP协议只是用来封装消息用的,封装后的消息你可以通过各种已有的协议来传输,如Http、Https、Tcp、UDP、SMTP等,甚至你还可以自定义协议。然而Web Service是采用基于Http协议来传输数据的。关于使用Https协议来访问Web Services的方法可以参考这个文章:如何利用 SSL 调用 Web 服务。
UDDI:是统一描述、发现和集成(Universal Description, Discovery, and Integration)的缩写,它是一个基于XML的跨平台的描述规范,可以使世界范围内的企业在互联网上发布自己所提供的服务供其他客户查询使用。
WSDL:是Web服务描述语言(Web Services Description Language),是为描述Web服务发布的XML格式。用于描述服务器端口访问方式和使用协议的细节,通常用来辅助生产服务器和客户端代码及配置信息。
2.2 Web Services 实现过程调用Web Services的实现过程与进行常规方法调用过程类似。不同的在于,前者方法并不位于客户端应用程序中,而是通过指定传输协议生成请求消息。因为Web Services可能位于不同的计算机上,因此必须将Web Services处理请求所需的信息通过网络传递给含有Web Services的服务器,Web Services在处理信息后,会通过网络将结果发送回客户端应用程序。下图显示了客户端与Web Services之间的通信过程:
下面介绍下调用Web Services时事件发生顺序:
在客户端上,创建了一个Web Services代理类的实例。该对象驻留在客户端机器上。
客户端调用代理类上的方法
客户端机器将Web Services方法的参数序列化为SOAP消息,然后通过传送协议发送给Web Services。
Web Services底层结构接收SOAP消息并进行反序列化。它会创建Web Services的类的实例,同时调用对应的Web Services方法。
Web Services方法执行,并返回结果。
Web Services底层结构会将返回结果序列化为SOAP消息,然后通过网络发送回客户端。
客户端将接收SOAP消息,然后将XML反序列为返回值或任何输出参数,并将它们传递给代理类的实例。
客户端接收返回值和所有输出参数。
2.3 Web Services 优缺点经过上面详细的介绍后,Web Services很明显具有以下优点:
跨平台:Web Services完全基于XML(可扩展标记语言)、XSD(XMLSchema)等与平台无关的行业标准。
自描述:Web Service使用WSDL进行自我描述,包括服务的方法、参数、类型和返回值等相关信息。
跨防火墙:Web Service使用http协议进行通信,可以穿越防火墙。
Web Services也具有以下缺点:
效率低下,不适合做单应用系统的开发。
安全问题:Web Services没有自身的安全机制,必须借助Http协议或IIS等宿主程序实现信息安全加密。
三、使用Web Services来开发分布式应用程序使用Web Services来开发分布式应用较MSMQ和.NET Remoting来说相对简单很多,今天的示例程序分三步走:
创建一个实现用户信息验证的项目WebServiceUserValidation。具体的实现代码如下所示: