初识
三层架构就是将整个业务应用划分为:显示层(User Interface layer)、业务逻辑层(Business Logic Layer)、数据访问层(Data access layer)。区分层次的目的是为了“高内聚低耦合”。
系统比较容易迁移,业务逻辑层与数据访问层是分离的,修改数据访问层不会影响到业务逻辑层。系统如果从用SQL Server存储数据迁移到用Oracle存储数据,并不需要修改商业逻辑层组件和GUI组件。
何时使用
- 不需要,逻辑结构简单,没有真正的数据存储。
- 需要:业务复杂到一定程度,数据需要独立的数据存储介质;把数据访问脱离开业务单独存在,把业务脱离于UI单独存在。UI只需要呼叫业务访问层就可以实现需求。
作用与技术应用
数据访问层(DAL):
作用:从数据源加载数据(select),向数据源写入数据(insert/update),从数据源删除数据(delete)
技术:ADO.NET+SQL语句,O/R Mapping框架 NHiberate,访问SQL Server数据库时Linq to SQL
显示层(UI):
作用: 向用户展现特定业务数据;采集用户的输入信息和操作
原则:用户至上、兼顾简洁
技术:Windows Form:Form、Control;ASP.NET:aspx,ascx,master,html
业务逻辑层(BLL):
作用:从DAL中获取数据,以供UI显示用;从UI中获取用户指令和数据,执行业务逻辑;从UI中获取用户指令和数据,通过DAL写入数据源。
职责机制:UI-BLL-UI;UI-BLL-DAL-BLL-UI
实体层(Entity):
作用:主要存放数据库中表的字段。
各层联系
层与层间调用关系为:UI->BLL->DAL,每一层都调用业务实体层。
代码与理解
UI层
namespace LoginUI
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void btnLogin_Click(object sender, EventArgs e)
{
string userName = txtUserName.Text.Trim();//接收用户输入数据
string password = txtpassword.Text;
Login.BLL.LoginManager mgr = new Login.BLL.LoginManager();//实例化BLL层LoginManager类
Login.Model.UserInfo user= mgr.UserLogin(userName, password);