三层架构学习实例

如有雷同,不胜荣欣,如转载,请注明

 

一、三层架构实例

 

首先学习三层架构模式­——三层架构实现的留言和查看留言

下面是本人学习三层架构的一点感想和理解,肯定有许多不足的地方,欢迎大家斧正,谢谢,废话到此,下面咱们开始三层架构

大家都知道三层架构分为:1,表示层(UI)2,业务逻辑层(BLL)3,数据访问层(DAL),下面咱们用一个简单的实例,实战三层架构

首先建立一个空白的解决方案,添加如下项目以及文件

1.添加一个ASP.net WebApplication项目,命名为UI,新建WebForm类型文件User.aspx(含User.aspx.cs)

2.添加ClassLibrary项目,命名为BLL,新建Class类型文件UserBLL.cs

3.添加ClassLibrary项目,命名为DAL,新建Class类型文件UserDAL.cs。添加SqlHelper引用,(这个是微软的数据访问类,也可以不用,直接编写所有的数据访问代码。我一般用自己写的数据访问类DataAccessHelper)

4.添加ClassLibrary项目,命名为Model,新建Class类型文件UserModel.cs

5.添加ClassLibrary项目,命名为IDAL,新建Interface类型文件IUserDAL.cs

6.添加ClassLibrary项目,命名为ClassFactory

相信大家已经都能很清楚的看出来了,

下图是项目实例解决方案的文件结构实例

 

BLL层

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using Model;

using DAL;

 

namespace BLL

{

    public class UserBLL

    {

        UserDBdb = new UserDB();

        public bool AddUser(UserInfouserInfo)

        {

            returndb.AddUser(userInfo);

        }

 

 

        public void SelectUser(UserInfouserInfo)  //根据传入的username或email得到用户详细信息

        {

            //

        }

 

        public void IsExist(UserInfouserInfo)  //判D断指定的username或email是否存在

        {

            //

        }

    }

}

DAL层

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using Model;

using System.Data.SqlClient;

using System.Configuration;

using System.Data;

 

namespace DAL

{

    //public classUserDAL

    //{

       

    //}

 

    public class UserDB

    {

        UserInfoui = new UserInfo();

        public IList<UserInfo>SelectUser()  //返回所有的用户信息列表

        {

            //

            returnnull;

        }

 

        public UserInfo SelectUser(intuserId)  //返回指定用户的相关信息

        {

            //

            returnui;

        }

 

        public bool AddUser(Model.UserInfouserInfo)

        {

            // stringsetting =ConfigurationManager.ConnectionStrings["ConnectionString"].ToString();

            stringsetting = ConfigurationSettings.AppSettings["ConnectionString"].ToString();

            SqlConnectionmyconn = new SqlConnection(setting);

            myconn.Open();

            SqlCommandcmd = new SqlCommand("insert into dbo.[user]([name]) values(@name)",myconn);

            cmd.Parameters.AddWithValue("@name", userInfo.UserName);

            if(cmd.ExecuteNonQuery() > 0)

            {

                returntrue;

            }

            else

            {

                returnfalse;

            }

        }

 

        public boolInsertUser(UserInfo user)  //新增用户信息

        {

            //

            returnfalse;

        }

 

        public bool UpdateUser(UserInfouser)  //更新用户信息

        {

            //

            returnfalse;

        }

 

        public void DeleteUser(intuserId)  //移除用户信息

        {

            //

        }¨

    }

}

实体类Model

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

 

namespace Model

{

    // 实体类实质:实体类就是在完成数据库与实体类对应的功能,1个类是一张表,一个属性是一个字段

    ///<summary>

    ///实体类,仅用于数据的存储(复杂的数据)

    ///</summary>

    //public classusermodel

    //{

    //    //

    //}

 

    public class UserInfo

    {

        ///<summary>

        ///实体类用户信息

        ///</summary>

        publicUserInfo() { }

 

        privatestring userName;

 

        public string UserName

        {

            get{ return userName; }

            set{ userName = value; }

        }

 

        privatestring passWord;

 

        public string PassWord

        {

            get{ return passWord; }

            set{ passWord = value; }

        }

 

        public int sex;

 

        privatestring birthday;

 

        public string Birthday

        {

            get{ return birthday; }

            set{ birthday = value; }

        }

 

        privatestring email;

 

        public string Email

        {

            get{ return email; }

            set{ email = value; }

        }

 

        privatestring qq;

 

        public string QQ

        {

            get{ return qq; }

            set{ qq = value; }

        }

 

        privatestring mobilePhone;

 

        public string MobilePhone

        {

            get{ return mobilePhone; }

            set{ mobilePhone = value; }

        }

    }

}

 

ClassFactory

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

 

namespace ClassFactory

{

    public class Class1

    {

    }

}

IDAL数据库访问接口类

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

 

namespace IDAL

{

    interface IUserDAL

    {

    }

}

 

UI层

 

 

 

三层架构的关系

 

 

上述代码中DAL主要是对数据库中的内容的操作,在这里就是向数据库中添加用户。BLL则主要是调用DAL层的操作,返回DAL层添加用户的结果(true或者false)。这样也就是在客户端与数据库中加了一个中间层,使得两层的依赖性减小。UI层则主要完成响应用户的需求,去调用BLL层实现的adduser方法,DAL层就是实实在在做这件事情的操作。

转载于:https://www.cnblogs.com/ching2009/p/4293588.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值