论文部分内容阅读
摘要:设计并实现基于Web的铁路供电段电力作业安全督导系统,利用铁路计算机内部专用网络实现总公司及各供电段电力作业安全督导。
关键词:Web;B/S模式;安全督导
中图分类号:TP315文献标识码:A文章编号:1009-3044(2007)04-10896-02
1 引言
为了适应铁路供电段电力作业劳动安全的现代化分析和管理,借助铁路内部专用网,利用ASP.NET及相关技术己成功开发出基于B/S模式的专用于铁路供电段电力作业安全督导系统,该系统不仅可实现电力作业劳动的动态分析管理,更重要的是能实现铁路电力作业劳动安全的在线式无纸化办公,进行科学分析和管理。系统还具有操作简便、功能全面、维护方便的特点,应用前景广阔。
2 系统设计
2.1 开发方案选择
服务器端:操作系统采用Windows 2000 Server(SP4),数据库采用SQL Server2000,技术平台为.NET framework 1.1,开发工具选用微软的Visual Studio .NET 2003,开发语言为C#,Web服务器采用IIS5.0。
客户端:浏览器IE6.1。
2.2 系统体系结构
B/S结构对用户的技术要求比较低,对客户机的配置要求也较低,而且界面丰富、客户端维护量小、程序分发简单、更新维护方便。它容易进行跨平台布置,容易在局域网与广域网之间进行协调。考虑到B/S结构的优势和铁路信号电源远程监控系统实际的应用环境,本系统的开发也采用这种流行的B/S结构。
在B/S结构中,客户端的标准配置是浏览器,比如在Windows操作系统下大量应用的Internet Explorer。B/S结构在逻辑上采用多层分布式应用结构,即N-层体系结构,它将应用程序分成多个独立的逻辑部分。本系统开发采用常用的3层结构,即将应用程序分为3个逻辑层次:表示层、业务逻辑层和数据层,如图1所示。
图1 系统逻辑结构
2.3 数据库设计
数据库使用SQL Server 2000。SQL Server 2000提供了以Web标准为基础的数据库编程功能。允许使用内置的存储过程以XML格式存储和检索数据。还可以使用XML更新程序进行插入、更新和删除数据。通过Web轻松访问数据。可以使用HTTP来向数据库发送查询、对数据库中存储的文档执行全文搜索、以及通过Web进行自然语言查询。整个系统运行在网络环境下。前台的应用和后台的数据库物理位置可以是在同一台服务器上,也可以是在不同服务器上。
作业具体项目数据库:作业具体项目等数据表。
人员信息管理数据库:用户自然信息等数据表。
设备信息管理数据库:设备自然信息等数据表。
2.4 用户权限设计
根据实际的要求,使用该系统的用户角色分为三种:管理员、普通用户和查阅者,不同的角色具有不同的操作权限和主要功能,例如系统管理员拥有最大的权限,包含对系统合法用户管理、设备以及作业具体项目管理。
2.5 主要功能模块设计
系统结构如图2。系统在表示上主要分为两个大的层次:前台公共信息和后台信息管理,其中,前台公共信息是整个系统的首页,它显示的是一些公共信息,用户无需登录即可进行查阅;后台信息管理是本系统的主要管理平台,大部分的功能都在这个层次来实现,授权用户才能被允许登入,进行相应的操作。
图2 系统结构图
2.6 系统流程设计
由功能模块设计可知,系统公共信息部分是面向所有用户的,用户无需登录即可查阅;而主要的信息管理部分需要管理员授权后才能登录操作。与大多数需要进行身份验证的系统类似,可分为两个过程:
(1)进行用户帐号、密码的验证,确认是否是授权用户。
(2)用户通过验证后,按照不同的角色权限赋予不同的操作。
根据各功能模块的设计和实际业务流程,系统流程图如图3。
图3 系统流程图
3 实现的关键技术
3.1 数据库连接
数据库连接是数据驱动的Web应用程序所必须的功能模块。ADO.NET提供了OLE DB,ODBC等编程接口来访问数据库,由于该系统开发采用SQL Server 2000数据库,所以使用专门的SQL Server数据提供者能够达到更好的访问效率。进行数据库连接的时候,通常采用以下的步骤来进行:
(1)引入命名空间
在开发ASP.NET应用程序时,首先要引用与该操作有关的Namespace后才能使用其功能,方法如下:
using System.Data;//处理数据时使用
using System.Data.SqlClient;/连接SQL Server时使用
(2)配置通用数据库连接字符串
在ASP.NET应用中很多页面都需要使用数据库连接,在每个页面中都重写连接字符串显得十分复杂,并且维护性和可移植性差。所以,最好的方法是对数据库配置进行统一的管理,将程序中用到的所有连接字符串信息统一存放在Web.config配置文档中,方便在需要进行数据库连接时直接引用即可,并且,当环境发生变化时,直接修改这个配置文件即可。用sa用户连接SQL Server 2000数据库,代码如下:
3.2 用户登录及权限控制
用户需要登录后才能使用系统的管理功能,根据不同权限角色的设定进行相关的操作,查阅相应的数据。为防范SQL注入式攻击等非法手段登入系统,用户名、密码设计为只能是字母、数字或者下划线的组合,并且采用验证控件RegularExpressionValidator来完成页面级的数据语法验证,保证系统的安全性。
不同的用户登录后,具有不同的操作权限。本系统使用Session对象来保存用户的权限,它在Session生命期内可以在不同页面中共享数据。Session的生命期在Web.config中定义,默认为20分钟。代码如下:
用户登录验证及保存Session对象的实现方法如下:
cd.CommandType=CommandType.StoredProcedure; //调用存储过程
SqlParameter username=cd.Parameters.Add("@username",SqlDbType.Char,100); //设置存储过程参数
SqlParameter password=cd.Parameters.Add("@password",SqlDbType.Char,200);
username.Value=t1;
password.Value=t2;
SqlDataReader selreader; //设置SqlDataReader类
selreader=cd.ExecuteReader(); //命令执行
if (selreader.Read()==true) //验证
{Session["username"]=selreader.GetString(1); //用户名存入Session
Session["password"]=selreader.GetString(2); //用户密码存入Session
Session["userlevel"]=selreader.GetString(3); //用户权限存入Session
selreader.Close(); //关闭连接
myConnection.Close();
Response.Redirect("manage.aspx"); //通过验证进入管理页面}
else //验证失败,显示错误信息
{selreader.Close(); //关闭连接
myConnection.Close();
Label1.Text="用户名或密码错误";}
在需要进行权限控制的地方,加入一个条件判断即可实现。比如,后台管理界面只有通过登录后才能访问,若企图直接键入地址等方式非法访问未授权地址,将被拒绝,页面将错误提示,代码如下:
if(!Page.IsPostBack)
{string userlevel;
userlevel=(string)Session["userlevel"];
if( userlevel.Trim()!="系统管理员")
{Page.Visible=true;}
else
{Page.Visible=false;
Response.Redirect(Error.aspx); //显示错误信息
}}
合法登录后,通过验证用户类型系统将针对性地显示相关操作页面,如系统管理员权限最大,显示可操作功能就越多。按权限显示界面实现代码如下:
public bool validateUserLevel(string a)
{a=a.Trim();
if(a=="系统管理员")
{return true;}
else return false;}
3.3 .NET环境下水晶报表实现
本系统中主要使用“推模式”来创建水晶报表,以信号电源工作状态表为例,使用“推模式”创建水晶报表具体实现步骤如下:
(1)设计一个DataSet。把服务器资源管理器“数据连接”的RailwaySTUS数据库中Status表拖放到Dataset1.xsd数据集文件中。
(2)创建一个.rpt文件同时将其指定给上一步建立的DataSet。
(3)在aspx页面中拖放一个CrystalReportViewer控件同时将其与前面的rpt文件建立联系。
(4)在代码中访问数据库并把数据库存入DataSet。
(5)报表文件绑定数据源,指定CrystalReportViewer控件的ReportSource属性。在页面隐藏类里添加BindReport()函数,并在Page_Load事件里调用BindReport()函数。代码如下:
string strConn = "Server=10.50.8.2;DataBase=Railway;UID=sa;PWD="; //指定连接数据库字符串
CrystalReport2 oCR = new CrystalReport2(); //实例化报表文件
Dataset1 ds = new Dataset1(); //实例化数据集
SqlConnection MyConn = new SqlConnection(strConn); //获得连接
MyConn.Open();
string sql = "Select * from Status"; //查询语句
SqlDataAdapter MyAdapter = new SqlDataAdapter(sql,MyConn); //实例化数据适配器
MyAdapter.Fill(ds,"Customers"); //填充数据集
oCR.SetDataSource(ds); //报表文件绑定数据集
this.CrystalReportViewer1.ReportSource =oCR; //指定CrystalReportViewer1控件的ReportSource属性
4 结束语
本系统立足于软件开发技术发展的前沿,对微软最新发布的.NET开发平台的框架、关键技术和核心服务进行了研究及应用,实现了铁路供电段电力作业安全督导。经过试运行,无论从数据的安全性、系统的可靠性、稳定性方面,还是从系统可操作性、简便性、实用性等方而均达到了预期的效果。
参考文献:
[1]郑耀东,蔡骞. ASP.NET网络数据库开发实例精解[M]. 北京:清华大学出版社,2006.36.
[2]樊建. ASP.NET+ADO.NET项目开发实例[M]. 北京:清华大学出版社,2004.189.
[3]刘廷,刘帆. ASP.NET开发实例完全剖析[M]. 北京:中国电力出版社,2006.183.
[4]王雪松,申群太,刘家乐. 基于ASP.NET铁路培训管理系统的设计与实现[J]. 铁路计算机应用,2006(2).48.
本文中所涉及到的图表、注解、公式等内容请以PDF格式阅读原文。
关键词:Web;B/S模式;安全督导
中图分类号:TP315文献标识码:A文章编号:1009-3044(2007)04-10896-02
1 引言
为了适应铁路供电段电力作业劳动安全的现代化分析和管理,借助铁路内部专用网,利用ASP.NET及相关技术己成功开发出基于B/S模式的专用于铁路供电段电力作业安全督导系统,该系统不仅可实现电力作业劳动的动态分析管理,更重要的是能实现铁路电力作业劳动安全的在线式无纸化办公,进行科学分析和管理。系统还具有操作简便、功能全面、维护方便的特点,应用前景广阔。
2 系统设计
2.1 开发方案选择
服务器端:操作系统采用Windows 2000 Server(SP4),数据库采用SQL Server2000,技术平台为.NET framework 1.1,开发工具选用微软的Visual Studio .NET 2003,开发语言为C#,Web服务器采用IIS5.0。
客户端:浏览器IE6.1。
2.2 系统体系结构
B/S结构对用户的技术要求比较低,对客户机的配置要求也较低,而且界面丰富、客户端维护量小、程序分发简单、更新维护方便。它容易进行跨平台布置,容易在局域网与广域网之间进行协调。考虑到B/S结构的优势和铁路信号电源远程监控系统实际的应用环境,本系统的开发也采用这种流行的B/S结构。
在B/S结构中,客户端的标准配置是浏览器,比如在Windows操作系统下大量应用的Internet Explorer。B/S结构在逻辑上采用多层分布式应用结构,即N-层体系结构,它将应用程序分成多个独立的逻辑部分。本系统开发采用常用的3层结构,即将应用程序分为3个逻辑层次:表示层、业务逻辑层和数据层,如图1所示。
图1 系统逻辑结构
2.3 数据库设计
数据库使用SQL Server 2000。SQL Server 2000提供了以Web标准为基础的数据库编程功能。允许使用内置的存储过程以XML格式存储和检索数据。还可以使用XML更新程序进行插入、更新和删除数据。通过Web轻松访问数据。可以使用HTTP来向数据库发送查询、对数据库中存储的文档执行全文搜索、以及通过Web进行自然语言查询。整个系统运行在网络环境下。前台的应用和后台的数据库物理位置可以是在同一台服务器上,也可以是在不同服务器上。
作业具体项目数据库:作业具体项目等数据表。
人员信息管理数据库:用户自然信息等数据表。
设备信息管理数据库:设备自然信息等数据表。
2.4 用户权限设计
根据实际的要求,使用该系统的用户角色分为三种:管理员、普通用户和查阅者,不同的角色具有不同的操作权限和主要功能,例如系统管理员拥有最大的权限,包含对系统合法用户管理、设备以及作业具体项目管理。
2.5 主要功能模块设计
系统结构如图2。系统在表示上主要分为两个大的层次:前台公共信息和后台信息管理,其中,前台公共信息是整个系统的首页,它显示的是一些公共信息,用户无需登录即可进行查阅;后台信息管理是本系统的主要管理平台,大部分的功能都在这个层次来实现,授权用户才能被允许登入,进行相应的操作。
图2 系统结构图
2.6 系统流程设计
由功能模块设计可知,系统公共信息部分是面向所有用户的,用户无需登录即可查阅;而主要的信息管理部分需要管理员授权后才能登录操作。与大多数需要进行身份验证的系统类似,可分为两个过程:
(1)进行用户帐号、密码的验证,确认是否是授权用户。
(2)用户通过验证后,按照不同的角色权限赋予不同的操作。
根据各功能模块的设计和实际业务流程,系统流程图如图3。
图3 系统流程图
3 实现的关键技术
3.1 数据库连接
数据库连接是数据驱动的Web应用程序所必须的功能模块。ADO.NET提供了OLE DB,ODBC等编程接口来访问数据库,由于该系统开发采用SQL Server 2000数据库,所以使用专门的SQL Server数据提供者能够达到更好的访问效率。进行数据库连接的时候,通常采用以下的步骤来进行:
(1)引入命名空间
在开发ASP.NET应用程序时,首先要引用与该操作有关的Namespace后才能使用其功能,方法如下:
using System.Data;//处理数据时使用
using System.Data.SqlClient;/连接SQL Server时使用
(2)配置通用数据库连接字符串
在ASP.NET应用中很多页面都需要使用数据库连接,在每个页面中都重写连接字符串显得十分复杂,并且维护性和可移植性差。所以,最好的方法是对数据库配置进行统一的管理,将程序中用到的所有连接字符串信息统一存放在Web.config配置文档中,方便在需要进行数据库连接时直接引用即可,并且,当环境发生变化时,直接修改这个配置文件即可。用sa用户连接SQL Server 2000数据库,代码如下:
3.2 用户登录及权限控制
用户需要登录后才能使用系统的管理功能,根据不同权限角色的设定进行相关的操作,查阅相应的数据。为防范SQL注入式攻击等非法手段登入系统,用户名、密码设计为只能是字母、数字或者下划线的组合,并且采用验证控件RegularExpressionValidator来完成页面级的数据语法验证,保证系统的安全性。
不同的用户登录后,具有不同的操作权限。本系统使用Session对象来保存用户的权限,它在Session生命期内可以在不同页面中共享数据。Session的生命期在Web.config中定义,默认为20分钟。代码如下:
用户登录验证及保存Session对象的实现方法如下:
cd.CommandType=CommandType.StoredProcedure; //调用存储过程
SqlParameter username=cd.Parameters.Add("@username",SqlDbType.Char,100); //设置存储过程参数
SqlParameter password=cd.Parameters.Add("@password",SqlDbType.Char,200);
username.Value=t1;
password.Value=t2;
SqlDataReader selreader; //设置SqlDataReader类
selreader=cd.ExecuteReader(); //命令执行
if (selreader.Read()==true) //验证
{Session["username"]=selreader.GetString(1); //用户名存入Session
Session["password"]=selreader.GetString(2); //用户密码存入Session
Session["userlevel"]=selreader.GetString(3); //用户权限存入Session
selreader.Close(); //关闭连接
myConnection.Close();
Response.Redirect("manage.aspx"); //通过验证进入管理页面}
else //验证失败,显示错误信息
{selreader.Close(); //关闭连接
myConnection.Close();
Label1.Text="用户名或密码错误";}
在需要进行权限控制的地方,加入一个条件判断即可实现。比如,后台管理界面只有通过登录后才能访问,若企图直接键入地址等方式非法访问未授权地址,将被拒绝,页面将错误提示,代码如下:
if(!Page.IsPostBack)
{string userlevel;
userlevel=(string)Session["userlevel"];
if( userlevel.Trim()!="系统管理员")
{Page.Visible=true;}
else
{Page.Visible=false;
Response.Redirect(Error.aspx); //显示错误信息
}}
合法登录后,通过验证用户类型系统将针对性地显示相关操作页面,如系统管理员权限最大,显示可操作功能就越多。按权限显示界面实现代码如下:
public bool validateUserLevel(string a)
{a=a.Trim();
if(a=="系统管理员")
{return true;}
else return false;}
3.3 .NET环境下水晶报表实现
本系统中主要使用“推模式”来创建水晶报表,以信号电源工作状态表为例,使用“推模式”创建水晶报表具体实现步骤如下:
(1)设计一个DataSet。把服务器资源管理器“数据连接”的RailwaySTUS数据库中Status表拖放到Dataset1.xsd数据集文件中。
(2)创建一个.rpt文件同时将其指定给上一步建立的DataSet。
(3)在aspx页面中拖放一个CrystalReportViewer控件同时将其与前面的rpt文件建立联系。
(4)在代码中访问数据库并把数据库存入DataSet。
(5)报表文件绑定数据源,指定CrystalReportViewer控件的ReportSource属性。在页面隐藏类里添加BindReport()函数,并在Page_Load事件里调用BindReport()函数。代码如下:
string strConn = "Server=10.50.8.2;DataBase=Railway;UID=sa;PWD="; //指定连接数据库字符串
CrystalReport2 oCR = new CrystalReport2(); //实例化报表文件
Dataset1 ds = new Dataset1(); //实例化数据集
SqlConnection MyConn = new SqlConnection(strConn); //获得连接
MyConn.Open();
string sql = "Select * from Status"; //查询语句
SqlDataAdapter MyAdapter = new SqlDataAdapter(sql,MyConn); //实例化数据适配器
MyAdapter.Fill(ds,"Customers"); //填充数据集
oCR.SetDataSource(ds); //报表文件绑定数据集
this.CrystalReportViewer1.ReportSource =oCR; //指定CrystalReportViewer1控件的ReportSource属性
4 结束语
本系统立足于软件开发技术发展的前沿,对微软最新发布的.NET开发平台的框架、关键技术和核心服务进行了研究及应用,实现了铁路供电段电力作业安全督导。经过试运行,无论从数据的安全性、系统的可靠性、稳定性方面,还是从系统可操作性、简便性、实用性等方而均达到了预期的效果。
参考文献:
[1]郑耀东,蔡骞. ASP.NET网络数据库开发实例精解[M]. 北京:清华大学出版社,2006.36.
[2]樊建. ASP.NET+ADO.NET项目开发实例[M]. 北京:清华大学出版社,2004.189.
[3]刘廷,刘帆. ASP.NET开发实例完全剖析[M]. 北京:中国电力出版社,2006.183.
[4]王雪松,申群太,刘家乐. 基于ASP.NET铁路培训管理系统的设计与实现[J]. 铁路计算机应用,2006(2).48.
本文中所涉及到的图表、注解、公式等内容请以PDF格式阅读原文。