如有雷同,不胜荣欣,如转载,请注明
首先学习三层架构模式——三层架构实现的留言和查看留言
下面是本人学习三层架构的一点感想和理解,肯定有许多不足的地方,欢迎大家斧正,谢谢,废话到此,下面咱们开始三层架构
大家都知道三层架构分为: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个类是一张表,一个属性是一个字段
///
///实体类,仅用于数据的存储(复杂的数据)
///
//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层就是实实在在做这件事情的操作。