论文部分内容阅读
摘 要分析Web Service体系结构,介绍其技术优势,并通过对一个会员验证系统的实现,研究运用Web Service技术实现对远程数据库的访问。
关键词Web Service;Net;远程数据库
中图分类号 TP311.11 文献标识码 A 文章编号 1671-489X(2008)08-0091-03
1 引言
随着网络技术的发展,软件开发经历了单机、C/S、B/S 3种模式,Web信息处理技术也经历了从采用中间件如CGI、ASP传统的3层模式到目前以Corba、DCom、EJB等构件技术为基础的多层分布式模型。这些模型最典型的应用目的,就是使客户端桌面程序可以直接访问远程数据库。虽然像Corba、Dcom、EJB等分布模型在一定程度上实现了这一点,但如果客户端和服务器之间隔有防火墙或代理服务器,那么来自于Corba等构件的调用就会被认为是恶意访问而可能被挡在防火墙外。这些组件由于严格受限于TCP/IP端口和特定的网络传输协议,无法直接解决基于B/S的瘦客户应用程序的处理问题,而Web Service技术的出现可以很好地解决这个问题,利用Web Service技术实现访问远程数据库具有较大的优势。本文拟通过一个基于Web Service会员验证系统的模型来实现对数据库的访问,其研究意义在于解决客户端访问远程数据库的困难。
2 Web Service技术简介
客户端与服务器的通信问题,一个完美的解决方法是使用HTTP协议来通信。这是因为任何运行Web浏览器的机器都在使用HTTP协议。同时,当前许多防火墙也配置为只允许HTTP连接。利用Web Service可以能够用编程的方法通过Web调用来实现服务器端的某个功能的应用程序。
Web Service 就是一个应用程序,它向外界暴露出一个能够通过Web进行调用的API,也就是能够用编程的方法通过Web来调用这个应用程序。调用这个Web Service应用程序的叫做客户。从本质层次来讲,Web服务是放置于Web站点上的可重用构件。Web服务可以分散于互联网上的各个地方,通过相互调用来协同完成特定任务。资源共享须解决的首要问题,是提高资源的可管理性。由于服务器上的应用软件只对特定资源操作,且不同的应用软件对相同资源的操作有一定程度的差异,这种资源的自治性导致难以为每个特定资源定义标准的接口。利用面向服务的集成(Service Oriented Integration)和虚拟化技术能够解决该问题。这是因为面向服务能够对复杂的过程和功能进行封装,并通过消息交换为服务请求者提供某种功能。Web服务是目前流行的提供面向服务的技术,具有独立于平台和执行的特性,能够为建立在不同硬件平台、操作系统和编程语言之上的应用程序提供服务。其主要工作原理是使用WSDL对服务进行统一描述,通过UDDI发布服务,利用SOAP访问服务。
3 基于Web Service的会员验证系统总体设计
本文通过采用Web Service技术,实现对会员的验证,系统采用Asp.Net开发Web Serivice 技术。本系统主要实现的功能:用户通过客户端程序可以在线验证用户是否为会员,查询时,向客户端程序提供自己的账号与密码参数,客户端获取参数后向调用服务端验证Web Servcie,由此Web Service实现对本地用户数据库的查询验证。系统要做以下3方面的内容设计:1)数据库的设计;2)服务端创建的Web Service,该服务提供会员信息查询的接口;3)客户端的调用程序,该程序调用服务端提供的验证Web Service,实现会员验证。整个系统是基于Web Service的松散结构,可以顺利实现异构系统间跨越防火墙通信与互操作。系统示意图如图1所示。
4 运用Web Service技术开发会员验证系统
根据前文分析,把系统划分为3个层次:数据层、服务层和客户层。其中,数据层由于只是记录会员的基本信息,在实现时只需建立对应的数据信息表。因此,文中主要介绍基于ASP.Net开发系统中的验证服务ValidateWebService和客户端调用此服务的实现。
1)Web服务端的实现。首先,在Microsoft Visual Studio.Net2005环境中建立一个ValidateWebService,并在此系统中定义一个封装服务功能的类ValidateWebService。该服务提供用户对个人信息的查询,在这个服务模块中设立用户接口,负责管理Web服务与用户之间的交互。该类应当是公共的,并且可以随意地从 Web Service 基类继承。在这个类中设计ValidateUserinfo函数,它是实现验证的核心模块:
[HTK]WebMethod()> _
Public Function ValidateUserinfo(ByVal username As String, ByVal password As String) As Boolean
’调用个人信息查询,连接数据库
……
’ 验证username , password 字段身份有效性
If (’如果验证通过) Then
Return True
Else
Return False
End If
End Function
在.Net体系结构里,Web 服务文件以.asmx文件扩展名保存,与.aspx 文件一样,这些文件也在服务请求发出(后面的请求由缓存的预编译type对象服务)时由ASP.Net 运行库自动编译,并创建相应的Web服务描述WSDL。本系统将ValidateWebService发布到服务器上,使用 Web 浏览器,然后就可以输入该服务的URL,如http://202.204.215.191/somefolder/ValidateWebService.asmx wsdl,返回该服务的Web服务描述语言WDSL文档。在这个文档中,可以清楚地看出ValidateWebService发布在互联网中的接口参数。以下是ValidateWebService服务描述WSDL文档片断:
<wsdl:types>
<s:schema elementFormDefault=“qualified” targetNamespace=“http://tempuri.org/”>
<s:element name=“ValidateUser”>
<s:complexType>
<s:sequence>
<s:element minOccurs=“0” maxOccurs=“1” name=“username” type=“s:string”/>
<s:element minOccurs=“0” maxOccurs=“1” name=“password” type=“s:string” />
</s:sequence>
</s:complexType>
</s:element>
<s:element name=“ValidateUserResponse”>
<s:complexType>
<s:sequence>
<s:element minOccurs=“1” maxOccurs=“1” name=“ValidateUserResult” type=“s:boolean”/>
</s:sequence>
</s:complexType>
</s:element>
</s:schema>
</wsdl:types>
2)客户端。Web 服务最大的特点就在于它的松散耦合性,每个Web 服务都封装了离散的功能,完成单个的任务,并且可以在其他程序中自由访问调用,在代码级与其他软件进行集成。在访问Web Service时,代理类和.Net Framework完成主要工作,用户只需在代码中调用代理类的相应方法即可。因此,在客户端,首先运用.Net的SDK提供Web服务描述语言工具(WSDL.exe)的工具。此命令行工具用于从 WSDL 创建代理类,这里输入WSDL http://202.204.215.191/somefolder/ValidateWebService.asmx wsdl,创建一个客户端的代理类ValidateService.VB。
本系统中的客户端采用了Windows Forms 形式,客户端界面要求输入用户名称和密码。当用户运行客户端程序时,系统给出一个传统的Windows风格的登陆界面,如图3所示,一旦点击验证按钮,客户端就会通过本地的代理类去调用远程的ValidateWebService。
在此按钮事件中添加如下代码,实现会员验证。
Public Sub Submit_Click(Sender As Object, E As EventArgs)
’调用本地代理类,实现远程调用
Dim Service As ValidateService=New ValidateService()
’进行验证
Dim result As Boolean=Service.ValidateUserinfo(txtUser.Text,txtPwd.Txt)
’处理验证结果
If result then
……
Else
……
End If
End Sub
这样就完成了具有会员验证Web服务的客户端。
5 结束语
Web Service是一个崭新的面向服务的分布式计算模型,它的优势不像传统的组件技术那样依赖特定对象模型协议,而是建立在一些通用协议之上(SOAP、XML等)。本文结合具体的实例,通过一个会员验证系统模型的设计和实现,并以.Net开发环境开发实现了该系统,验证了运用Web Service技术可以实现对远程数据库的访问。
关键词Web Service;Net;远程数据库
中图分类号 TP311.11 文献标识码 A 文章编号 1671-489X(2008)08-0091-03
1 引言
随着网络技术的发展,软件开发经历了单机、C/S、B/S 3种模式,Web信息处理技术也经历了从采用中间件如CGI、ASP传统的3层模式到目前以Corba、DCom、EJB等构件技术为基础的多层分布式模型。这些模型最典型的应用目的,就是使客户端桌面程序可以直接访问远程数据库。虽然像Corba、Dcom、EJB等分布模型在一定程度上实现了这一点,但如果客户端和服务器之间隔有防火墙或代理服务器,那么来自于Corba等构件的调用就会被认为是恶意访问而可能被挡在防火墙外。这些组件由于严格受限于TCP/IP端口和特定的网络传输协议,无法直接解决基于B/S的瘦客户应用程序的处理问题,而Web Service技术的出现可以很好地解决这个问题,利用Web Service技术实现访问远程数据库具有较大的优势。本文拟通过一个基于Web Service会员验证系统的模型来实现对数据库的访问,其研究意义在于解决客户端访问远程数据库的困难。
2 Web Service技术简介
客户端与服务器的通信问题,一个完美的解决方法是使用HTTP协议来通信。这是因为任何运行Web浏览器的机器都在使用HTTP协议。同时,当前许多防火墙也配置为只允许HTTP连接。利用Web Service可以能够用编程的方法通过Web调用来实现服务器端的某个功能的应用程序。
Web Service 就是一个应用程序,它向外界暴露出一个能够通过Web进行调用的API,也就是能够用编程的方法通过Web来调用这个应用程序。调用这个Web Service应用程序的叫做客户。从本质层次来讲,Web服务是放置于Web站点上的可重用构件。Web服务可以分散于互联网上的各个地方,通过相互调用来协同完成特定任务。资源共享须解决的首要问题,是提高资源的可管理性。由于服务器上的应用软件只对特定资源操作,且不同的应用软件对相同资源的操作有一定程度的差异,这种资源的自治性导致难以为每个特定资源定义标准的接口。利用面向服务的集成(Service Oriented Integration)和虚拟化技术能够解决该问题。这是因为面向服务能够对复杂的过程和功能进行封装,并通过消息交换为服务请求者提供某种功能。Web服务是目前流行的提供面向服务的技术,具有独立于平台和执行的特性,能够为建立在不同硬件平台、操作系统和编程语言之上的应用程序提供服务。其主要工作原理是使用WSDL对服务进行统一描述,通过UDDI发布服务,利用SOAP访问服务。
3 基于Web Service的会员验证系统总体设计
本文通过采用Web Service技术,实现对会员的验证,系统采用Asp.Net开发Web Serivice 技术。本系统主要实现的功能:用户通过客户端程序可以在线验证用户是否为会员,查询时,向客户端程序提供自己的账号与密码参数,客户端获取参数后向调用服务端验证Web Servcie,由此Web Service实现对本地用户数据库的查询验证。系统要做以下3方面的内容设计:1)数据库的设计;2)服务端创建的Web Service,该服务提供会员信息查询的接口;3)客户端的调用程序,该程序调用服务端提供的验证Web Service,实现会员验证。整个系统是基于Web Service的松散结构,可以顺利实现异构系统间跨越防火墙通信与互操作。系统示意图如图1所示。
4 运用Web Service技术开发会员验证系统
根据前文分析,把系统划分为3个层次:数据层、服务层和客户层。其中,数据层由于只是记录会员的基本信息,在实现时只需建立对应的数据信息表。因此,文中主要介绍基于ASP.Net开发系统中的验证服务ValidateWebService和客户端调用此服务的实现。
1)Web服务端的实现。首先,在Microsoft Visual Studio.Net2005环境中建立一个ValidateWebService,并在此系统中定义一个封装服务功能的类ValidateWebService。该服务提供用户对个人信息的查询,在这个服务模块中设立用户接口,负责管理Web服务与用户之间的交互。该类应当是公共的,并且可以随意地从 Web Service 基类继承。在这个类中设计ValidateUserinfo函数,它是实现验证的核心模块:
[HTK]WebMethod()> _
Public Function ValidateUserinfo(ByVal username As String, ByVal password As String) As Boolean
’调用个人信息查询,连接数据库
……
’ 验证username , password 字段身份有效性
If (’如果验证通过) Then
Return True
Else
Return False
End If
End Function
在.Net体系结构里,Web 服务文件以.asmx文件扩展名保存,与.aspx 文件一样,这些文件也在服务请求发出(后面的请求由缓存的预编译type对象服务)时由ASP.Net 运行库自动编译,并创建相应的Web服务描述WSDL。本系统将ValidateWebService发布到服务器上,使用 Web 浏览器,然后就可以输入该服务的URL,如http://202.204.215.191/somefolder/ValidateWebService.asmx wsdl,返回该服务的Web服务描述语言WDSL文档。在这个文档中,可以清楚地看出ValidateWebService发布在互联网中的接口参数。以下是ValidateWebService服务描述WSDL文档片断:
<wsdl:types>
<s:schema elementFormDefault=“qualified” targetNamespace=“http://tempuri.org/”>
<s:element name=“ValidateUser”>
<s:complexType>
<s:sequence>
<s:element minOccurs=“0” maxOccurs=“1” name=“username” type=“s:string”/>
<s:element minOccurs=“0” maxOccurs=“1” name=“password” type=“s:string” />
</s:sequence>
</s:complexType>
</s:element>
<s:element name=“ValidateUserResponse”>
<s:complexType>
<s:sequence>
<s:element minOccurs=“1” maxOccurs=“1” name=“ValidateUserResult” type=“s:boolean”/>
</s:sequence>
</s:complexType>
</s:element>
</s:schema>
</wsdl:types>
2)客户端。Web 服务最大的特点就在于它的松散耦合性,每个Web 服务都封装了离散的功能,完成单个的任务,并且可以在其他程序中自由访问调用,在代码级与其他软件进行集成。在访问Web Service时,代理类和.Net Framework完成主要工作,用户只需在代码中调用代理类的相应方法即可。因此,在客户端,首先运用.Net的SDK提供Web服务描述语言工具(WSDL.exe)的工具。此命令行工具用于从 WSDL 创建代理类,这里输入WSDL http://202.204.215.191/somefolder/ValidateWebService.asmx wsdl,创建一个客户端的代理类ValidateService.VB。
本系统中的客户端采用了Windows Forms 形式,客户端界面要求输入用户名称和密码。当用户运行客户端程序时,系统给出一个传统的Windows风格的登陆界面,如图3所示,一旦点击验证按钮,客户端就会通过本地的代理类去调用远程的ValidateWebService。
在此按钮事件中添加如下代码,实现会员验证。
Public Sub Submit_Click(Sender As Object, E As EventArgs)
’调用本地代理类,实现远程调用
Dim Service As ValidateService=New ValidateService()
’进行验证
Dim result As Boolean=Service.ValidateUserinfo(txtUser.Text,txtPwd.Txt)
’处理验证结果
If result then
……
Else
……
End If
End Sub
这样就完成了具有会员验证Web服务的客户端。
5 结束语
Web Service是一个崭新的面向服务的分布式计算模型,它的优势不像传统的组件技术那样依赖特定对象模型协议,而是建立在一些通用协议之上(SOAP、XML等)。本文结合具体的实例,通过一个会员验证系统模型的设计和实现,并以.Net开发环境开发实现了该系统,验证了运用Web Service技术可以实现对远程数据库的访问。