三层架构
程序员文章站
2022-03-14 10:13:41
...
1. 三层结构
多层结构划分方式:物理/逻辑
两层/三层结构
(客户PC;应用服务器;数据库服务器)
两层 | 三层 |
---|---|
物理上的三层:显示层、业务层、数据层
逻辑上的三层:UI、BLL、DAL
在应用程序开发中,数据库DB作为存储介质,UI、BLL、DAL三层是需要设计者完成的。
1.1 显示层UI
1.1.1 UI的作用 | 1.1.2 UI设计原则 | 1.1.3 UI中常用的技术 |
---|---|---|
向用户展现特定的业务数据; | 用户至上,兼顾简洁。 | Windows Form:Form、Control |
采集用户的输入信息和操作. | ASP.NET :aspx、ascx、master、html |
1.2 业务逻辑层BLL
1.2.1 BLL的作用 | 1.2.2 BLL的职责机制 |
---|---|
从DAL中获取数据,以供UI显示用 | UI->BLL->UI |
从UI中获取用户指令和数据,执行业务逻辑 | UI->BLL->DAL->BLL->UI |
从UI中获取用户指令和数据,通过DAL写入数据源 |
namespace Login.BLL
{
public class LoginManager
{
public Login .Model.UserInfo UserLogin (string userName,string password)
{
//BLL要引用DAL类,才能访问DAL
Login.DAL.UserDAO uDao = new DAL.UserDAO();
Login.Model.UserInfo user= uDao.SelectUser(userName, password);
if (user != null )
{
Login.DAL.ScoreDAO sDao = new Login.DAL.ScoreDAO();
sDao.UpdateScore(userName, 10);//更新成绩+10
return user;
}
else
{
throw new Exception("登录失败");
}
}
}
}
1.3 数据访问层DAL
1.3.1 DAL的作用 | 1.3.2 DAL中常用的技术 |
---|---|
从数据源加载数据(select) | ADO.NET+SQL语句 |
向数据源写入数据(Insert、Update) | 访问SQL Server数据库时Linq to SQL |
从数据源删除数据(Delete) | 访问SQL Server数据库时Linq to SQL |
namespace Login.DAL
{
class DbUtil
{
public static string ConnString = @"Server=LJM; Database=Login; User ID=sa; Password=123456";
}
}
namespace Login.DAL
{
public class ScoreDAO
{
public void UpdateScore(string userName, int value)
{
using (SqlConnection conn = new SqlConnection(DbUtil.ConnString)) //有了using之后,connection就可以自动关闭了
{
SqlCommand cmd = conn.CreateCommand();
cmd.CommandText = @"INSERT INTO SCORES(UserName,Score) Values(@UserName,@Score)";
cmd.Parameters.Add(new SqlParameter("@UserName", userName));
cmd.Parameters.Add(new SqlParameter("@Score", value));
conn.Open();//不需要Close
cmd.ExecuteNonQuery();
}
}
}
}
2. 为什么使用三层架构?
不需要使用三层结构的情况:业务逻辑简单,没有真正的数据存储层,也就不需要数据访问层
需要使用三层结构的情况:当业务复杂到一定程度的时候,有数据存储层和数据访问层。
3.总结
其实使用三层结构,就是一个解耦的过程,目的就是降低层与层之间的依赖。上述也说了当业务复杂到一定程度时候,可使用三层结构,也就是说三层结构系统架构复杂,不适用于小型的项目使用。还有大家有没有觉得业务逻辑层就是个中介者,访问了UI,找DAL。
上一篇: 教你如何显示PPT演示文稿的打印预览屏幕
推荐阅读
-
深入解析MapReduce架构设计与实现原理–读书笔记(8)hadoop NIO
-
MYSQL性能调优及架构设计-影响MYSQL性能的相关因素之实例分析_MySQL
-
mysql高可用架构方案之二(keepalived+lvs+读写分离+负载均衡)_MySQL
-
50-互联网安全架构-互联网API开放平台安全设计-基于OAuth2.0协议方式
-
一个高级java架构师用PHP语法回答了一个JS的问题被百度评为专业回答,请问百度专业回答怎么做到的?
-
三层+存储过程实现分页
-
python web 服务器架构(django,flask,fastapi都可以用这个架构)
-
小红书组织架构升级:原社区电商事业部升级为“品牌号”部门
-
看阿里架构师是如何在高并发的情景下运筹帷幄 架构阿里高并发
-
sql server 2005因架构无法删除用户错误15138的解决方法