三层架构分为界面层(UIL),业务逻辑层(BLL),数据访问层(DAL)。
三层架构的思想就是将代码分层,即是一种好的代码风格,也极大的提高了代码的重用率。
界面层(UIL),顾名思义就是界面的表示,显示数据和接收用户输入的数据,它仅仅只显示数据和接收用户输入的数据,只是一个外壳,不能包含任何业务逻辑的处理
数据访问层(DAL),有时候也成为持久层,它主要是负责数据库的访问,可以访问数据库系统。二进制文件,文本文档或XML文档,对于数据库的访问代码全放在数据访问层
而三层架构的核心价值就是业务逻辑层(BLL)了,它处于数据访问层和界面层中间,界面层与数据访问层是一点关系都没有的,而正是有了业务逻辑层后,将DAL和UIL联系了起来,
对于DAL来说,BLL是调用者,调用从数据库等读取的内容;而对于UIL来说,BLL是被调用者,UIL将BLL层从数据库获取的内容应用到界面上
下面我们来看代码
UIL(界面):
<StackPanel Orientation="Horizontal">
<StackPanel Orientation="Vertical" VerticalAlignment="Center" HorizontalAlignment="Left">
<TextBox Width="200" Height="50" Margin="0,30" x:Name="txtname"/>
<TextBox Width="200" Height="50" Margin="0,0,0,50" x:Name="txtage"/>
<TextBox Width="200" Height="50" x:Name="txtheight" />
</StackPanel>
<StackPanel>
<Button Width="200" Height="50" Content="可空数据录入" FontSize="20" Margin="0,50" Click="Button_Click"/>
</StackPanel>
</StackPanel>
DAL(读取数据库数据):
class StudentDAL
{
//和数据库有关的都放在DAL(数据访问层)中
public static object ToDBValue(object value)
{
if (value == null)
{
return DBNull.Value;
}
else
{
return value;
}
}
public static void Insert(Student student)
{
SqlHelper.ExecuteNonQuery(@"insert into T_DBNULL(Name,Age,Height) values(@name,@age,@height)",new SqlParameter("@name",ToDBValue(student.Name)),new SqlParameter("@age",ToDBValue(student.Age)),new SqlParameter("@height",student.Height));
}
}
private void Button_Click(object sender, RoutedEventArgs e)
{
Student student = new Student();
student.Height =decimal.Parse(txtheight.Text);
StudentDAL.Insert(student);
}
三层架构将代码都分离了开,开发人员可以只关注整个结构的其中一层就可以,也可以很容易的用新的实现来替换原有的实现,可以简单的代码改动就可以摇身一变为另一个app,极大的提高了代码复用率,后期的维护工作也很方便。目前可能小项目中还体现的不明显,但是我相信在往后越来越大的项目中,三层架构还是很有优势的。