C#学习之三层架构实例

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

一、三层架构实例

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

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

大家都知道三层架构分为: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)  //根据传入的usernameemail得到用户详细信息

        {

            //

        }

 

        public void IsExist(UserInfouserInfo)  //D断指定的usernameemail是否存在

        {

            //

        }

    }

}

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个类是一张表,一个属性是一个字段

    ///

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

    ///

    //public classusermodel

    //{

    //    //

    //}

 

    public class UserInfo

    {

        ///

        ///实体类用户信息

        ///

        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层就是实实在在做这件事情的操作。

你可能感兴趣的:(.NET,C#,架构,实例,asp.net,webform,c#)