论文部分内容阅读
摘要:传统的Web服务不能进行状态的保存。为了实现有状态的Web服务,文章研究了基于数据库的有状态Web服务和基于单件模式的有状态Web服务两种实现方法。并以身份验证为例,分析了Web服务的消息传递机制,探讨了有状态Web服务在.NET框架中的实现方法。
关键词:Web服务;有状态;无状态;单件模式;.NET框架
0 引言
随着Web服务应用范围的不断扩展,灵活的消息传递机制在许多复杂网络应用中变得越来越重要。目前的Web服务能够很好地提供无状态的信息服务,如提供公共信息服务、企业结构信息服务。但是传统的Web服务不能提供有状态的信息服务,如用户是否在线、在线时长等,因为其本身不保存状态。在Web服务的调用中要传递大量的状态信息,一方面安全性不能保证,另一方面浪费了网络资源。
通常,每个Web服务对象仅能被一个客户端所使用,它们由每个客户端调用创建,调用完后被销毁,并且第一次调用和后面的调用之间都没有保存状态。如图1描述了远程Web服务的调用过程,客户端进程通过SOAP把请求参数组织成XML文档并使用HTTP把请求送到Web服务器。SOAP是一种轻量级的通信协议,它用XML语言定义格式,在通信传输上遵从HTTP协议。HT]TP是个无状态协议,服务器在给客户机发送应答信息后便遗忘了此次交互,其状态信息并未被保存。因此,Web服务适合无状态的解决方案。例如,某个客户端第一次调用Web服务进行了用户身份验证以后,若再次调用Web服务实现具体的功能,由于Web服务不保存状态,这种调用就没有办法使用Web服务实现。当然可以每调用一次Web服务,同时进行身份验证,并且执行具体功能,但是这种方式存在很大的缺陷:一方面存在安全缺陷,另一方面将大部分的资源都用在验证身份的操作上,降低了系统性能。
针对Web服务不能保存状态这一不足,有两种不同的途径去解决它。一种途径是制定新的标准;另一种途径是在现有技术的基础上,加入状态的特征。本文主要针对第二种途径展开研究,探讨了基于数据库的有状态Web服务和基于单件模式Web服务两种解决方案,并以身份验证为例,分别应用这两种方法进行了实现。
1 基于数据库的有状态Web服务
1.1基本原理
注:“本文中所涉及到的图表、注解、公式等内容请以PDF格式阅读原文”
关键词:Web服务;有状态;无状态;单件模式;.NET框架
0 引言
随着Web服务应用范围的不断扩展,灵活的消息传递机制在许多复杂网络应用中变得越来越重要。目前的Web服务能够很好地提供无状态的信息服务,如提供公共信息服务、企业结构信息服务。但是传统的Web服务不能提供有状态的信息服务,如用户是否在线、在线时长等,因为其本身不保存状态。在Web服务的调用中要传递大量的状态信息,一方面安全性不能保证,另一方面浪费了网络资源。
通常,每个Web服务对象仅能被一个客户端所使用,它们由每个客户端调用创建,调用完后被销毁,并且第一次调用和后面的调用之间都没有保存状态。如图1描述了远程Web服务的调用过程,客户端进程通过SOAP把请求参数组织成XML文档并使用HTTP把请求送到Web服务器。SOAP是一种轻量级的通信协议,它用XML语言定义格式,在通信传输上遵从HTTP协议。HT]TP是个无状态协议,服务器在给客户机发送应答信息后便遗忘了此次交互,其状态信息并未被保存。因此,Web服务适合无状态的解决方案。例如,某个客户端第一次调用Web服务进行了用户身份验证以后,若再次调用Web服务实现具体的功能,由于Web服务不保存状态,这种调用就没有办法使用Web服务实现。当然可以每调用一次Web服务,同时进行身份验证,并且执行具体功能,但是这种方式存在很大的缺陷:一方面存在安全缺陷,另一方面将大部分的资源都用在验证身份的操作上,降低了系统性能。
针对Web服务不能保存状态这一不足,有两种不同的途径去解决它。一种途径是制定新的标准;另一种途径是在现有技术的基础上,加入状态的特征。本文主要针对第二种途径展开研究,探讨了基于数据库的有状态Web服务和基于单件模式Web服务两种解决方案,并以身份验证为例,分别应用这两种方法进行了实现。
1 基于数据库的有状态Web服务
1.1基本原理
注:“本文中所涉及到的图表、注解、公式等内容请以PDF格式阅读原文”