zoukankan      html  css  js  c++  java
  • 三层架构学习实例

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

     

    一、三层架构实例

     

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

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

    大家都知道三层架构分为: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层就是实实在在做这件事情的操作。

  • 相关阅读:
    Centos 7安装python3
    R贡献文件中文
    Sublime text 3 注册码激活码 版本号3143
    Create R NoteBook require updated versions of the following packages : knitr,rmarkdown.
    vim 的升级 安装 重装
    使用yum快速升级CentOS 6.5内核到 3.10.28
    Container With Most Water——LeetCode
    Majority Element II——LeetCode
    Summary Ranges —— LeetCode
    Contains Duplicate III —— LeetCode
  • 原文地址:https://www.cnblogs.com/ching2009/p/4293588.html
Copyright © 2011-2022 走看看