zoukankan      html  css  js  c++  java
  • .Net项目框架

    摘要:本文描述了在用VS.NET进行B/S开发时采用的框架结构,一般建立类库项目和Web项目,在Web基本aspx页面类中调用类库中方法,同时在aspx页面类中不需要写任何对数据库操作的SQL代码,便于分层开发和代码维护。

    1、概述

    使用微软Visual Studio .NET进行B/S或者C/S结构应用程序开发,为了使软件分层开发和易维护原则,将整个项目框架分为类库和应用程序两个项目。在应用程序中调用类库中相应类的方法,这样对于应用程序开发和类库开发可以同步进行,同时,类库中相应方法内容的修改不会影响应用程序调用。在应用程序和类库交互过程中,方法参数尽量采用对象进行传递。在B/S结构中,应用程序为Web程序。

    在类库中分为两种类,一种为实体类,主要是和数据库对应的字段属性;另一种为操作类,主要包括对此实体对象的增加、修改、查询、删除操作。在实体类中也定义对于异常的处理,这样,在操作类中就可以在数据库操作底层捕获具体增删改查异常。

    在Web应用程序中,使用一个具体类BasePage,让其继承Web窗体页System.Web.UI.Page,此类封装对session操作,这样每一个Web窗体页只要继承BasePage就可以进行页面验证,不需要每一个页面都进行Session操作。

    2、类库项目

    类库主要是编写各种类,以便供Web应用程序调用。类库包括实体类和操作类。

    (1)实体类

    每一个类定义数据库中对应字段,便于在操作类中调用时,可以将对象传递给操作类方法。同时对每一个成员变量使用get和set操作,以便获取对象属性值或者给对象属性赋值。

     1 public class USERINFO
     2     {
     3         private int uid;//用户ID
     4         private string name;//用户名称
     5         private string pass;// 用户密码
     6         public USERINFO()
     7         { uid = 0;  name = "";  pass = "";}
     8         public int UID
     9         {   get{  return uid; }
    10             set { uid = value; }
    11         }
    12         public string NAME
    13         { get { return name; }
    14             set{ value.Trim();name = value; }   
    15         }
    16         public string PASS
    17         { get{ return pass; }
    18             set{ value.Trim();pass = value; }   
    19         }
    20     }
    例一:用户信息实体类
     1  public class EdException : System.Exception
     2     {
     3         private int m_nCode;// 异常相关代码
     4         private string m_sMessage;// 异常相关消息
     5         public EdException(string message)
     6         { m_nCode = 0;  m_sMessage = message; }
     7         public int Code
     8         { get { return m_nCode; }
     9             set{ m_nCode = value; }
    10         }
    11         public new string Message
    12         {  get{ return m_sMessage; }
    13             set{ m_sMessage = value; }  
    14         }
    15     }
    例二:异常处理实体类

    (2)操作类

    操作类主要对实体类中定义对象进行新增,修改,查询和删除操作。其中新增和修改方法参数为实体类对象。

     1 public class PerUser
     2 {
     3 private SqlConnection m_Conn;
     4 public PerUser(SqlConnection Conn)
     5 { m_Conn = Conn; }
     6 public SqlConnection GetSqlConnection()// 获取数据库连接
     7 {
     8      if(m_Conn == null)
     9     {
    10         m_Conn = new SqlConnection(ConnectionString);
    11         return m_Conn;
    12     }
    13     else {return m_Conn;}        
    14 }                
    15 public int f_insUSER(USERINFO user) // 新增用户信息
    16 {
    17     int line = 0; // 返回新增种子号
    18     SqlConnection conn = GetSqlConnection();
    19    try
    20    {
    21        string strSql = "";
    22        strSql="insert into user_info(userAccount,userPwd) 
    23        values(@userAccount,@userPwd);"
    24              +" SELECT SCOPE_IDENTITY()";
    25        SqlCommand cmd = new SqlCommand(strSql, conn);
    26        cmd.Parameters.Add("@userAccount", SqlDbType.VarChar);//参数
    27        cmd.Parameters["@userAccount"].Value = user.NAME;//给参数赋值
    28        cmd.Parameters.Add("@userPwd", SqlDbType.VarChar);//参数
    29        cmd.Parameters["@userPwd"].Value = user.PASS;//给参数赋值
    30        conn.Open();//打开连接
    31 line = int.Parse(cmd.ExecuteScalar().ToString());//返回生成的新种子号码
    32     }catch (SqlException se)
    33     {
    34        EdException we = new EdException("新增个人用户操作失败," + se.Message);
    35        throw we;
    36     }
    37     finally { conn.Close();//关闭连接}
    38      return line;  
    39 }
    40 }
    用户操作类

    3、Web项目

    在Web应用程序中,定义页面基类BasePage,在此类中封装了对于数据库连接,以及Session验证操作,所有基本页面类均继承此基类,这样在需要验证才能访问的页面,只要继承这个页面就可以拿到数据库连接,以及调用相应方法进行Session验证。

     1 public class BasePage:Page
     2 {
     3     private static readonly string ses_name = "_Auth_Session";
     4     private USERINFO m_ui;
     5     private string m_connString;
     6     private SqlConnection m_conn;
     7     public BasePage()
     8     {
     9         this.m_connString = Configuration.ConfigurationManager.
    10         ConnectionStrings["ConnectionString"].ConnectionString;
    11         this.m_conn = new SqlConnection(this.m_connString);
    12     }
    13     public SqlConnection GetSqlConnection()
    14     { return new SqlConnection(this.m_connString); }
    15     // 当前登录用户帐号信息对象
    16     public USERINFO currUserInfo
    17     { get{ return this.m_ui; }   }
    18     protected override void OnInit(EventArgs e)
    19     {//验证页面访问权限
    20         try 
    21         { this.m_ui = new USERINFO();
    22             this.InitSessionUser();
    23         }
    24         catch (EdException we)
    25         { Response.Write(we.Message + "[" + we.Code.ToString() + "]");}
    26         base.OnInit(e);
    27     }
    28     private void InitSessionUser()
    29     {
    30         object auth = this.Session[ses_name];
    31         if (auth == null)
    32         { this.m_ui = new USERINFO();
    33             this.Session[ses_name] = this.m_ui;
    34         }
    35         else { this.m_ui = (USERINFO)auth; }
    36     }
    37     protected bool sessioncheck()
    38     {
    39         bool flag = false;
    40         try
    41         { if (this.currUserInfo.NAME.Length > 0 && this.currUserInfo.UID > 0)
    42             { flag = true; }
    43             else
    44             { flag = false; }
    45         } catch { flag = false; }
    46         return flag;
    47     }
    48 }
    BasePage类

    (2)基本aspx页面

    例:新增用户页面InserUser.aspx,对应代码页面为InserUser.aspx.cs

     1 public partial class InserUser: BasePage  //继承基类页面,进行验证处理
     2 {
     3     protected void Page_Load(object sender, EventArgs e)
     4     {// 判断是否登录
     5         if (!this.sessioncheck())
     6         { Response.Redirect("Default.aspx");}
     7 }
     8     protected void BtnIns_Click(object sender, EventArgs e)
     9 {
    10     try
    11        {
    12              PerUser m_peruser = new PerUser(this.GetSqlConnection());
    13              USERINFO userinfo = new USERINFO ();
    14              userinfo.USER = this.TxtName.Text; //用户名
    15              userinfo.PASS = this.TxtPwd.Text; //密码
    16              int line = m_peruser.f_insUSER(userinfo);
    17              lblinfo.Text = "你是第"+line.ToString()+"位用户";
    18         }
    19         catch (EdException we)
    20         { lblinfo.Text = we.Message; }
    21 }
    22 }
    aspx页面

    (3)给Session赋值

    在用户登录页面,进过数据库查询判断,如果用户是系统用户,则登录成功后,将用户信息对象封装到Session中。

    1 //将用户信息放入Session中
    2 USERINFO   m_ui = new USERINFO();
    3 m_ui.UID = id;
    4 m_ui.NAME = this.TxtName.Text;
    5 m_ui.PASS = this.TxtPwd.Text;
    6 HttpContext.Current.Session["_Auth_Session"] = m_ui; //将用户信息放入Session中
    给Session赋值

    4、配置文件

    将数据库连接信息配置到Web.config,以方便修改。

    1 <?xml version="1.0"?>
    2 <configuration>
    3   <connectionStrings>
    4     <add name="ConnectionString" connectionString="Data
    5      Source=.;Initial Catalog=DbAuc;User ID=test;Password=123456"/>
    6   </connectionStrings>  
    7 </configuration>
    web.config
  • 相关阅读:
    SQL SERVER中变量的定义、赋值与使用
    框架设计总结
    Sass学习之路(5)——变量
    gulp入坑系列(4)——gulp的代码转换
    gulp入坑系列(3)——创建多个gulp.task
    Sass学习之路(4)——不同样式风格的输出方式
    Sass学习之路(3)——Sass编译
    gulp入坑系列(2)——初试JS代码合并与压缩
    gulp入坑系列(1)——安装gulp
    Sass学习之路(2)——Sass环境安装(windows版)
  • 原文地址:https://www.cnblogs.com/yinyuejie/p/3237612.html
Copyright © 2011-2022 走看看