3、软件共享的应用举例:学生身份验证模块的共享实现。
目前,在高校中有很多的软件系统,例如:选课系统、成绩查询系统、网络课程系统、图书馆系统、学生财务系统等。由于各个系统相互独立,每一个系统都有一个学生身份验证模块,存在功能上的重复设计;另外,各个系统的相互独立,存在着学生需要记忆不同系统的密码。
鉴于以上情况及目前校园网络的高度发达,我们完全可以用Web服务的方式来实现学生身份验证模块的共享。下面将介绍使用Visual Studio.NET环境用C#语言实现创建并调用学生身份验证Web服务的过程。
1) Web服务的创建
学生身份验证模块有1个Web服务构成:
public Boolean ValidUser(string userID,string Pwd)
Web服务ValidUser用于验证学生身份。已经在Sql Server数据库StudentsInfo中建立了一个学生基本信息表Student,其中字段UserID、Pwd分别保存学生的用户代码及密码。
下面将具体介绍Web服务的创建过程:
a 运行Visual Studio.NET开发环境,新建"ASP.NET Web服务"类型的项目WSStudentLogin。
b Web服务的具体代码实现。
using System.Data.SqlClient;
//省略代码……
public class Service1 : System.Web.Services.WebService
{
string ConStr="";
ConnStr="DATABASE=StudentsInfo;SERVER=10.1.111.19;UID=sa;PWD=;";
//省略代码……
[WebMethod]
public Boolean ValidUser(string userID,string Pwd)
{
Boolean flag=false;
string sqlStr="";
//建立一个数据库连接对象
SqlConnection tempConn=new SqlConnection(ConnStr);
sqlStr="select * from student where ID='"+userID+"' and pwd='"+Pwd+"';";
//建立一个命令对象
SqlCommand tempComm=new SqlCommand(sqlStr,tempConn);
tempConn.Open();
SqlDataReader tempReader=tempComm.ExecuteReader(CommandBehavior.CloseConnection);
if (tempReader.HasRows) flag=true;
tempReader.Close();
tempComm.Dispose();
return flag;
}
}
需要注意的是:只有用[WebMethod]说明的方法才是可以被远程调用的Web服务。因此方法前面的[WebMethod]不能省略。
要使Web服务可由他人使用,必须将其部署到您希望支持的客户端可访问的Web服务器。若要将Web服务部署到开发服务器以外的服务器,可以添加 Web安装项目或者将所需的文件复制到目标服务器。为篇幅所限,本文不对此展开深入讨论,假设本例的Web服务部署在开发服务器上。
创建了并部署了Web服务之后,我们就可以在客户端调用相应的Web服务。下面介绍如何在客户端定位、引用Web服务功能。
2)Web服务的调用
使用Web服务的过程实际上是实现Web服务的使用者与Web服务实现绑定,并调用其方法的过程。为了简化绑定的过程。Visual Studio.NET提供了服务代理类的方法。服务代理类是根据Web服务的描述文档(XXX.WSDL)产生本地类,在执行的过程中,客户使用代理类中的信息访问Web服务,实现实际的方法的调用。Visual Studio.NET提供了我们实现这一过程的简单方式:
a 创建Web服务访问客户程序。
Web服务访问客户程序可是各种类型的应用程序,也可以是其它Web服务。在这里,我们新建一个"ASP.NET WEB应用程序"类型的项目WebApplication2。
b、服务引用。
首先,在"项目"菜单上单击"添加 Web 引用"。接下来,因为本例中的Web服务位于本地计算机上,我们单击浏览器窗格中的"本地计算机上的 Web 服务"链接。然后,从所提供的列表中单击Service1链接以检索有关该 Web服务的信息。然后,单击"添加引用"为目标Web服务添加Web引用。Visual Studio.NET将下载服务说明并生成一个作为应用程序和Web服务之间的接口的代理类。
c、在客户程序中调用Web服务的具体代码举例。
private void Button1_Click(object sender, System.EventArgs e) { //创建代理类对象 localhost.Service1 ClientProxy=new localhost.Service1(); try {//通过代码类对象访问Web服务 if (ClientProxy.ValidUser(TxtUserId.Text,txtPwd.Text)) Label1.Text="OK" ; else Label1.Text="ERROR" ; } catch(e) {throw e;} finally {ClientProxy.Dispose();} } |
其它
Web Services技术为软件共享的实现,为在现有信息系统基础上实现系统集成提供了很好的技术基础。但是,要使基于Web Service技术实现软件共享具有真正的实用性。我们还要需要解决好以下一些问题:首先是安全可靠性,一是Web服务网络传输的连接可靠性,二是Web服务内容的可靠性,即确保数据完整性和保密性。其次是服务使用权限的控制,Web服务是"软件作为一种服务"的体现,什么人被禁止使用此服务,什么人被允许使用此服务,使用此服务如何收费等,都是实际使用需要解决的问题。另外,Web服务的承载能力、Web服务的部署与发现、客户调用Web服务失效处理等问题也是需要解决好的问题。
小结
本文提出了从软件功能共享的角度来实现软件共享,讨论了利用Web Services技术来实现远程软件功能共享,并且通过学生身体验证模块来实例分析软件功能共享的有效性及其优点。软件功能共享的研究对实现分布式计算等都具有重大的意义,它还需要进一步的研究。
查看本文来源