ASP.NET+Web服务实现软件共享

摘 要 本文提出一种新的通过软件功能共享而实现软件共享的方法,这种方法的优点是以远程调用Web服务的形式实现软件功能的共享,而不将软件拷贝到客户端,也减小了网络上的一些资源冗余,也有利于共享现有Web服务集成新的系统。而且本文通过学生身份验证模块实例分析了这种新方法的有效性。

  引言

  传统的软件共享是将软件从网络的服务器拷贝到客户端,以实现软件的共享,这种方法的缺点是每一个需要使用该软件的客户端都必须先拷贝该软件,导致网络上的空间冗余,因而导致产生了大量孤立的数据和重复的业务逻辑。

  Web services 通过使用 XML 消息处理启用数据交换和应用程序逻辑远程调用,使数据能够通过防火墙,并在异类系统之间移动数据,它为实现数据和系统的互操作性提供了一种可行的解决方案。

  本文针对传统软件共享问题提出一种新的通过软件功能共享而实现软件共享的方法,这种方法的优点是以远程调用Web服务的形式实现软件功能的共享,而不将软件拷贝到客户端,也减小了网络上的一些资源冗余,也有利于共享现有Web服务集成新的系统。而且本文通过学生身份验证模块实例分析了这种新方法的有效性。

  软件共享的意义

  随着计算机应用的普及与发展,大到各个行业,小至一个公司、部门都开发并应用了实用的计算机软件。这些软件大大地提高了公司企业的工作效率和现代化管理水平,它已经成为公司企业商业运行和管理的核心。但由于大多数公司几乎在每个部门广泛采用的是自定义软件,因而导致产生了大量实用但孤立且重复的业务逻辑块。如果在设计开发时能够避免重复设计,而是采用软件功能共享的方式来实现各个模块相同功能的话,那将大大节约软件开发成本,也为将来的系统升级和集成提供很好的构架基础。另外,对于已经存在的业务逻辑,可以通过少量的改进以便被其它应用程序所共享,从而降低开发成本。

  由于开发每个应用程序所处的环境是多种多样的,而技术在永不停歇地发展,因此,共享已经存在的应用程序来创建一个功能集合在过去是一件非常困难的事情。值得庆幸的是,Web Services技术的出现为软件共享的实现提供了可能,软件功能的Web服务化,提供了在Internet范围内可共享的业务逻辑,最终形成以各种Web服务为基础的开放性的功能构件体系。下面,将对如何利用Web Services技术实现软件共享进行探讨。

  基于Web Services技术实现软件共享

  1、Web Services技术简介

  Web Services可以看成是部署在Internet上的API,它可以方便被应用程序甚至其它Web Services集成和调用,形成新的应用服务。它具有完好的封装性,松散耦合,高度可集成能力。毫无疑问,Web Services技术将成为下一代Web的主流技术,它是实现"软件作为一种服务"的体现。

  Web Services体系结构如下,由服务请求者、服务代理者和服务提供者组成:




  Web服务提供者就是Web服务的拥有者,它在服务代理处注册以配置和发布服务,并耐心等待为其他服务和用户提供自己的功能;Web服务请求者就是Web功能的使用者,它使用查找操作来从服务代理者检索服务描述,然后与服务提供者绑定并调用Web服务或同它交互。
Web服务提供者相当于中介,它把一个Web服务请求者与合适的Web服务提供者联系在一起,一般是UDDI,UDDI为服务请求者提供了动态查找Web服务的机制。

  2、基于Web Services的软件共享的实现方式

  在软件开发过程中,人们常常按照功能把软件划分为不同的模块,以方便模块功能的重组复用和修改升级。通过Web Services技术实现软件共享,也需要首先对集成系统按功能划分模块;然后,创建Web服务来实现这些功能模块;为了使Web服务可访问,还需要发布服务描述(部署Web服务)以便其它模块可以查找并调用它。这样,以Web服务方式实现的软件功能就可以被应用程序甚至其它Web服务共享。

  应用程序或其它Web服务等服务请求者当需要调用Web服务时,首先检索服务描述或在服务注册中心查询所要求的服务类型。当找到所需服务时,就可以使用服务描述与服务提供者进行绑定,并调用相应的服务。

  微软新推出的旗舰产品Visual Studio.NET是被称为开发Web服务的首选工具,使用Visual Studio.NET可以非常方便地实现Web服务创建与调用。下面,将给出一个具体的基于Web Services技术实现软件共享的实例。
  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技术来实现远程软件功能共享,并且通过学生身体验证模块来实例分析软件功能共享的有效性及其优点。软件功能共享的研究对实现分布式计算等都具有重大的意义,它还需要进一步的研究。

(0)

相关推荐

  • jsp和asp.net共享session值示例代码

    思路是ASP.NET中序列化Session以二进制数据保存到数据库,然后由JSP读取数据库中的二进制数据反序列化成Session对象,再强制转化成的Session对象,在JAVA端转换时,出现了错误,找遍网上的资料也没能解决,故采用一种替换的方式. 替换的方式的思路: 登录的ASPX文件中,在登录成功后将Session中的变量值保存到数据库中的一张表,关键字使用ASP.NET的Session对象的SessionID,然后建立一个ASPX文件,取得当前登录用户的SessionID,并使用的ASP.

  • asp.net实现访问局域网共享目录下文件的解决方法

    本文以实例讲述了asp.net实现访问局域网共享目录下文件的解决方法,完整代码如下所示: using System; using System.Collections; using System.Configuration; using System.Data; using System.Linq; using System.Web; using System.Web.Security; using System.Web.UI; using System.Web.UI.HtmlControls;

  • ASP.NET访问共享文件夹的详细步骤

    假设找找看的ASP.NET程序在A服务器,索引文件在B服务器的ZzkIndex共享文件夹中,访问地址是\\192.168.18.18\ZzkIndex\.要实现就是在A服务器的ASP.NET程序中能读写共享文件夹\\192.168.18.18\ZzkIndex\中的文件. 具体操作步骤: (注:A服务器为ASP.NET程序所在服务器,B服务器为共享文件夹所在服务器) ①在两台服务器上建立相同用户名.相同密码的Windows帐户(A与B服务器都要建),比如假设这里用户名是ZzkIndexer,密码

  • ASP.NET中在不同的子域中共享Session的具体方法

    今天遇到了这个问题,于是研究了一下.要解决这个问题,首先就要明白一些Session的机理.Session在服务器是以散列表形式存在的,我们都知道Session是会话级的,每个用户访问都会生成一个Session.那么服务器是怎么区分不同用户的Session?又是怎么将不同用户的Session与不同的用户绑定的呢?下面我们来研究一下,以下纯属我个人的理解,如有错误请指证. Session在服务器端是以散列表的形式存在的,区分每一个Session是通过SessionID来实现的,所以可以说这个Sess

  • ASP.NET+Web服务实现软件共享

    摘 要 本文提出一种新的通过软件功能共享而实现软件共享的方法,这种方法的优点是以远程调用Web服务的形式实现软件功能的共享,而不将软件拷贝到客户端,也减小了网络上的一些资源冗余,也有利于共享现有Web服务集成新的系统.而且本文通过学生身份验证模块实例分析了这种新方法的有效性. 引言 传统的软件共享是将软件从网络的服务器拷贝到客户端,以实现软件的共享,这种方法的缺点是每一个需要使用该软件的客户端都必须先拷贝该软件,导致网络上的空间冗余,因而导致产生了大量孤立的数据和重复的业务逻辑. Web ser

  • 手把手教你在.NET中创建Web服务实现方法

    最近发现在.NET平台下使用Web服务还是很简单的.下面举个在.NET平台下创建Web服务的简单例子.首先用Visul Studio .Net创建一个C# 项目Asp.Net Web服务程序,源代码如下: 复制代码 代码如下: using System;using System.Collections;using System.ComponentModel;using System.Data;using System.Diagnostics;using System.Web;using Syst

  • ASP.NET如何使用web服务的会话状态

    在web服务中要用到ASP.NET中的会话对象,有2件事情需要做. 1.WebService 类需要继承System.Web.Services.WebService类 2.WebMethod中的EnableSession属性值应该设置为true 来看我们CalculatorWebService类,我们可以看到,它已经继承System.Web.Services.WebService类.但是,我们需要EnableSession属性值设置为true. 本文中,我们将试试在使用一个如下所示的GridVi

  • 如何解决asp.net负载均衡时Session共享的问题

    每个客户端在访问网站时,都会创建相应的Session,用来保存客户的状态信息,网站如果做了负载均衡,session共享是要做的,IIS对于session的存储有五种模式 一.ASP.Net session存储方式 1.InProc模式(进程内模式) .为默认设置. 会话状态存储在Web服务器上的内存中. 2.StateServer模式(状态服务器模式). 会话状态存储在一个名为ASP.Net状态服务的单独进程中.这确保了在重新启动Web应用程序时会保留会话状态,并让会话状态可用于网路场中的多个W

  • asp.net Web Services上传和下载文件(完整代码)第1/2页

    下面,我们就分别介绍如何通过Web Services从服务器下载文件到客户端和从客户端通过Web Services上载文件到服务器.一:通过Web Services显示和下载文件 我们这里建立的Web Services的名称为GetBinaryFile,提供两个公共方法:分别是GetImage()和GetImageType(),前者返回二进制文件字节数组,后者返回文件类型,其中,GetImage()方法有一个参数,用来在客户端选择要显示或下载的文件名字.这里我们所显示和下载的文件可以不在虚拟目录

  • ASP.NET Web Page应用深入探讨第1/2页

    一.服务器脚本基础介绍 首先,我们先复习一下Web服务器页面的基本执行方式: 1.客户端通过在浏览器的地址栏敲入地址来发送请求到服务器端 2.服务器接收到请求之后,发给相应的服务器端页面(也就是脚本)来执行,脚本产生客户端的响应,发送回客户端 3.客户端浏览器接收到服务器传回的响应,对Html进行解析,将图形化的网页呈现在用户面前 对于服务器和客户端的交互,通常通过下面几种主要方式: 1.Form:这是最主要的方式,标准化的控件来获取用户的输入,Form的提交将数据发送给服务器端处理 2.Que

  • 利用docker搭建web服务环境的方法步骤

    前言 做过开发的人对开发环境的安装.配置应该都不会太陌生,不管你做什么开发,对开发环境都会具有一定的依赖性的.对于 PHP 的 Web 开发来说,开发环境至少要有一个 Web 服务器(如 Apache.Nginx).一个数据库服务器(如 MySQL)和一个 PHP 解析器吧,如果你的 PHP 代码使用的一些扩展,那你还需要给你的 PHP 安装上这些扩展,那样你的 PHP 代码才能够顺利地跑起来.对于一个只想静静地敲代码的开发人员来说,开发环境的安装与配置这种事情,只要经历一次就已经很折腾人了.可

  • 使用 Iisext.vbs 列出 Web 服务扩展文件的方法

    应用到: Windows Server 2003, Windows Server 2003 R2, Windows Server 2003 with SP1 可使用命令行脚本 iisext.vbs(存储在 systemroot\system32 中),列出位于 WebSvcExtRestrictionList Metabase Property中的 Web 服务扩展.该命令可在运行带有 IIS 6.0 的 Windows Server 2003 家族的成员的本地计算机或远程计算机上执行.Web

  • 使用 Iisext.vbs 列出Web服务扩展的方法

    应用到: Windows Server 2003, Windows Server 2003 R2, Windows Server 2003 with SP1 可使用命令行脚本 iisext.vbs(存储在 systemroot\system32 中)列出所有已定义的 Web 服务扩展的 ID.这些扩展必须驻留在运行带有 IIS 6 的 Windows Server 2003 家族的成员的计算机上. Iisext.vbs 执行可用于 IIS 管理器的相同的操作.您可以使用任一工具来管理 IIS 网

  • ASP.NET Web.config配置文件详解

    分析: .NET Web 应用程序的配置信息(如最常用的设置ASP.Net Web 应用程序的身份验证方式),它可以出现在应用程序的每一个目录中.当你通过VB.NET新 建 一个Web应用程序后,默认情况下会在根目录自动创建一个默认的Web.config文件,包括默认的配置设置,所有的子目录都继承它的配置设置.如果你想修改子目录的配置设置, 你可以 在该子目录下新建一个 Web.config文件.它可以提供除从父目录继承的配置信息以外的配置信息,也可以重写或修改父目录中定义的设置.      

随机推荐