ITPub博客

首页 > Linux操作系统 > Linux操作系统 > ASP.N ET中的简单三层结构

ASP.N ET中的简单三层结构

原创 Linux操作系统 作者:wsx2miao 时间:2011-01-24 08:53:43 0 删除 编辑
我们用三层结构主要是使项目结构更清楚,分工更明确,有利于后期的维护和升级.

  三层结构包含:表示层(USL),业务逻辑层(BLL),数据访问层(DAL)

  1:数据访问层:主要是对原始数据(数据库或者文本文件等存放数据的形式)的操作层,而不

     是指原始数据,也就是说,是对数据的操作,而不是数据库,具体为业务逻辑层或表示层提供数据服务.

  2:业务逻辑层:主要是针对具体的问题的操作,也可以理解成对数据层的操作,对数据业务逻

     辑处理,如果说数据层是积木,那逻辑层就是对这些积木的搭建。

  3:表示层:主要表示WEB方式,也可以表示成WINFORM方式,

       如果逻辑层相当强大和完善,无论表现层如何定义和更改,逻辑层都能完善地提供服务。

具体的区分方法

  1:数据访问层:主要看你的数据层里面有没有包含逻辑处理,实际上他的各个函数主要完成

     各个对数据文件的操作。而不必管其他操作。

  2:业务逻辑层:主要负责对数据层的操作。也就是说把一些数据层的操作进行组合。

  3:表示层:主要对用户的请求接受,以及数据的返回,为客户端提供应用程序的访问。

三层结构说明

  完善的三层结构的要求是:修改表现层而不用修改逻辑层,修改逻辑层而不用修改数据层

  .否则你的应用是不是多层结构,或者说是层结构的划分和组织上是不是有问题就很难说.

不同的应用有不同的理解,这是一个概念的问题.

流程图

                

部署三层结构

1:新建一空白解决方案

2:在此解决方案上添加>>新建项目>>类库 取名DBEntity(数据库实体)

3:在此解决方案上添加>>新建项目>>类库 取名DAL(数据访问层)

4:在次解决方案上添加>>新建项目>>类库 取名BLL(业务逻辑层)

5:在次解决方案上添加>>新建网站>>ASP.NET网站 取名WebSite(表示层,WinForm项目的话添加一Window应用程序)

6:DAL,BLL, WebSite分别添加对数据库实体DBEntity的引用

7:BLL添加对对DAL的引用,WebSite添加对BLL的引用

 

 

下面用一用户登陆演示项目

DBEntity添加UserInfo.cs,代表数据库实体,一般是和数据库一一对应的

 
01usingSystem;
02usingSystem.Collections.Generic;
03usingSystem.Text;
04  
05namespaceDBEntity
06{
07    publicclassUserInfo
08    {
09        privateint_id;
10        privatestring_userName;
11        privatestring_passWord;
12  
13        publicintId
14        {
15            get{return_id; }
16            set{ _id = value; }
17        }
18  
19        publicstringUserName
20        {
21            get{return_userName; }
22            set{ _userName = value; }
23        }
24         
25        publicstringPassWord
26        {
27            get{return_passWord; }
28            set{ _passWord = value; }
29        }
30    }
31}

DAL里添加UserDAL.cs

 
01usingSystem;
02usingSystem.Data;
03usingSystem.Data.SqlClient;
04usingSystem.Configuration;
05usingSystem.Collections.Generic;
06usingDBEntity;
07  
08namespaceDAL
09{
10    publicclassUserDAL
11    {
12        privatestringConnectionString = ConfigurationManager.AppSettings["ConnectionString"].ToString();
13        publicUserInfo Login(stringuserName,stringpassWord)
14        {
15            UserInfo info =newUserInfo();
16            stringstrSql ="select id,userName,passWord from Users where userName=@userName and passWord=@passWord";
17            SqlConnection conn =newSqlConnection(ConnectionString);
18            conn.Open();
19            SqlCommand com =newSqlCommand();
20            com.CommandType = CommandType.Text;
21            com.CommandText = strSql;
22            com.Connection = conn;
23            com.Parameters.AddWithValue("@userName", userName);
24            com.Parameters.AddWithValue("@passWord", passWord);
25            SqlDataReader dr = com.ExecuteReader(CommandBehavior.CloseConnection);
26            if(dr.Read())
27            {
28                info.Id = Convert.ToInt32(dr["id"]);
29                info.UserName = dr["userName"].ToString();
30                info.PassWord = dr["passWord"].ToString();
31                returninfo;
32            }
33            else
34            {
35                returnnull;
36            }
37        }
38    }
39}

BLL里添加UserBLL.cs

 
01usingSystem;
02usingSystem.Collections.Generic;
03usingSystem.Text;
04usingDBEntity;
05usingDAL;
06  
07namespaceBLL
08{
09    publicclassUserBLL
10    {
11        UserDAL dal =newUserDAL();
12        publicUserInfo Login(stringuserName,stringpassWord)
13        {
14            returndal.Login(userName, passWord);
15        }
16    }
17}

Web里Login.aspx对应的后台代码

 
01usingSystem;
02usingBLL;
03usingDBEntity;
04  
05publicpartialclass_Default : System.Web.UI.Page 
06{
07    protectedvoidPage_Load(objectsender, EventArgs e)
08    {
09  
10    }
11    protectedvoidButton1_Click(objectsender, EventArgs e)
12    {
13        UserBLL data =newUserBLL();
14        UserInfo info =newUserInfo();
15        info = data.Login(TextBox1.Text, TextBox2.Text);
16        if(info !=null)
17        {
18            //登陆成功
19            Response.Write("");
20        }
21        else
22        { 
23            //登陆失败
24            Response.Write("");
25        }
26    }
27}

至此,简单的三层架构用户登陆完成了!

水平有限,写的不好大家来指点!

下次写下三层架构的扩展:工厂模型

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/25284529/viewspace-684522/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2011-01-22

  • 博文量
    45
  • 访问量
    44317