学习三层架构感悟
2014-03-02 16:55
295 查看
最近自己好久没有写帖子了,反映出自己总结少了,那就是学习少了,每个月写几篇帖子,好好总结这一个月自己学习知识的收获,也包括每个礼拜,甚至每天学习的收获与总结,前段时间的几篇原创帖子,都是记录学习过程中的点滴及总结,发表自己感悟的都太少了,这几天学习三层架构这个思想知识点,学完下来,综合性较强,感觉逻辑分析能力很关键,思维分析能力,培养“整体”代码性。
三层架构学习之前,老师复习了ADO.NET知识,还是老问题,用的少了,自己复习又没有,就“淡”了。
ADO.NET关键就是增、删、改,包括配置文件以及SQLHelper文件的使用。
通过练习一个Winform应用程序来体验三层架构的重要性,类似做一个学生管理信息系统,想到自己之前做的模拟学生档案管理系统,自己的“产品”太劣质了,太乱了,根本没有考虑代码的整体性和维护方面,在那之后,所学专业又有一次课程设计,又练习人事资源管理系统。现在看自己的代码,感觉自己有点“成熟”了,成熟应该在代码考虑方面,有时候写完代码想得东西也更多了,操作还有待提高。
三层架构就是表示层、逻辑层、数据访问层加上一个实体。简单点说就是“一盘菜”经过“洗菜工”、“厨师”、“服务员”之后给顾客的过程。
这里表示层——“服务员“、逻辑层——”厨师“、数据访问层——”洗菜工“、实体——”一盘菜“。打个比方更好理解而已,就像生活中,一盘菜为什么要经过那么多道工序,是为了系统化过程,三层架构也是同样的道理,为了维护代码。
三层的核心就是实体——某些类。
三层架构为了维护代码,实现分层管理,方便操作,必须明白数据库中存储的数据是关系型数据,而C#中,因为C#是面向对象语言,如果直接操作关系型数据,需要好多个变量来存储,会比较麻烦,所以需要将关系型数据经过一定处理,将关系型数据转换成对象,方便在C#面向对象中操作,这个处理过程就是在数据访问层中完成的。数据访问层,通过实体将关系型数据转换成对象,再给逻辑层,再给表示层,一层一层往上递送。
表示层(UI):和用户交互,不仅展示数据给用户,还让用户输入数据内容。
业务逻辑层(BLL):实现具体的逻辑功能。传递数据,隔离UI层和DAL层,让两者少联系,确保层与最近的层发生“关系”。
数据访问层(DAL):操作数据库。提取数据和插入数据,并将数据型数据转换成实体对象。。
实体(Model):三层之间传递数据,某些具体的类。
三层和实体都代表一个项目。
实体部分代码:
//定义一个类Person,拥有字段pID和属性PID、......
public class Person
{
private int pID;
public int PID
{
get { return pID; }
set { pID = value; }
}
}
数据访问层部分代码:
public Person GetPerson(int pid)
{
string sql = "select * from Person where PID=" + pid;
DataTable dt = SQLHelper.GetTable(sql);
Person person = null;
if (dt.Rows.Count > 0)
{
person = RowToPerson(dt.Rows[0], 1);
//方法RowToPerson是用来将关系型数据转换成对象
}
//方法RowToPerson
private Person RowToPerson(DataRow dr, int type)
{
Person per = new Person();
per.PID = Convert.ToInt32(dr["PID"]);
}
业务逻辑层部分代码:
//调用数据访问层中的GetPerson方法......
public Person GetPerson(......)
{
PersonDAL dal=new PersonDAL();
return GetPerson(......);
}
表示层部分代码:
//调用业务逻辑层中的GetPerson方法来实现界面上相应的功能
if(bll.Login(name,pwd,type,out msg,out person))
{
PersonBLL bll=new PersonBLL();
Person person=bll.GetPerson(.......);
......
}
三层架构,是根据表示层,也就是界面上用户的操作,发送指令给业务逻辑层,再给数据访问层,最后开始操作,数据访问层将数据从数据库中查询得到,并经过一定处理,转换成实体类的实例对象属性,再传送给业务逻辑层交由其处理,最后返回给表示层操作,展示在界面上。
创建三层的一些注意点:
1.整个解决方案和项目命名规范问题,尤其是项目命名必须让人看了“一目了然”。
2.层与层之间的引用关系,以及实体的引用:Ul—>BLL和Model;BLL—>DAL和Model;DAL—>Model。
3.表示层存放代码尽量是简单的处理语句,以及操作用户输入和输出代码语句;
业务逻辑层代码应该是进行是否,条件判断等逻辑性问题的代码语句;
数据访问层代码是简单的数据获得操作以及数据处理——关系转对象操作。
实体就是类,包括类的字段以及属性。
附上代码三层架构
备注:写于2013年7月27日
三层架构学习之前,老师复习了ADO.NET知识,还是老问题,用的少了,自己复习又没有,就“淡”了。
ADO.NET关键就是增、删、改,包括配置文件以及SQLHelper文件的使用。
通过练习一个Winform应用程序来体验三层架构的重要性,类似做一个学生管理信息系统,想到自己之前做的模拟学生档案管理系统,自己的“产品”太劣质了,太乱了,根本没有考虑代码的整体性和维护方面,在那之后,所学专业又有一次课程设计,又练习人事资源管理系统。现在看自己的代码,感觉自己有点“成熟”了,成熟应该在代码考虑方面,有时候写完代码想得东西也更多了,操作还有待提高。
三层架构就是表示层、逻辑层、数据访问层加上一个实体。简单点说就是“一盘菜”经过“洗菜工”、“厨师”、“服务员”之后给顾客的过程。
这里表示层——“服务员“、逻辑层——”厨师“、数据访问层——”洗菜工“、实体——”一盘菜“。打个比方更好理解而已,就像生活中,一盘菜为什么要经过那么多道工序,是为了系统化过程,三层架构也是同样的道理,为了维护代码。
三层的核心就是实体——某些类。
三层架构为了维护代码,实现分层管理,方便操作,必须明白数据库中存储的数据是关系型数据,而C#中,因为C#是面向对象语言,如果直接操作关系型数据,需要好多个变量来存储,会比较麻烦,所以需要将关系型数据经过一定处理,将关系型数据转换成对象,方便在C#面向对象中操作,这个处理过程就是在数据访问层中完成的。数据访问层,通过实体将关系型数据转换成对象,再给逻辑层,再给表示层,一层一层往上递送。
表示层(UI):和用户交互,不仅展示数据给用户,还让用户输入数据内容。
业务逻辑层(BLL):实现具体的逻辑功能。传递数据,隔离UI层和DAL层,让两者少联系,确保层与最近的层发生“关系”。
数据访问层(DAL):操作数据库。提取数据和插入数据,并将数据型数据转换成实体对象。。
实体(Model):三层之间传递数据,某些具体的类。
三层和实体都代表一个项目。
实体部分代码:
//定义一个类Person,拥有字段pID和属性PID、......
public class Person
{
private int pID;
public int PID
{
get { return pID; }
set { pID = value; }
}
}
数据访问层部分代码:
public Person GetPerson(int pid)
{
string sql = "select * from Person where PID=" + pid;
DataTable dt = SQLHelper.GetTable(sql);
Person person = null;
if (dt.Rows.Count > 0)
{
person = RowToPerson(dt.Rows[0], 1);
//方法RowToPerson是用来将关系型数据转换成对象
}
//方法RowToPerson
private Person RowToPerson(DataRow dr, int type)
{
Person per = new Person();
per.PID = Convert.ToInt32(dr["PID"]);
}
业务逻辑层部分代码:
//调用数据访问层中的GetPerson方法......
public Person GetPerson(......)
{
PersonDAL dal=new PersonDAL();
return GetPerson(......);
}
表示层部分代码:
//调用业务逻辑层中的GetPerson方法来实现界面上相应的功能
if(bll.Login(name,pwd,type,out msg,out person))
{
PersonBLL bll=new PersonBLL();
Person person=bll.GetPerson(.......);
......
}
三层架构,是根据表示层,也就是界面上用户的操作,发送指令给业务逻辑层,再给数据访问层,最后开始操作,数据访问层将数据从数据库中查询得到,并经过一定处理,转换成实体类的实例对象属性,再传送给业务逻辑层交由其处理,最后返回给表示层操作,展示在界面上。
创建三层的一些注意点:
1.整个解决方案和项目命名规范问题,尤其是项目命名必须让人看了“一目了然”。
2.层与层之间的引用关系,以及实体的引用:Ul—>BLL和Model;BLL—>DAL和Model;DAL—>Model。
3.表示层存放代码尽量是简单的处理语句,以及操作用户输入和输出代码语句;
业务逻辑层代码应该是进行是否,条件判断等逻辑性问题的代码语句;
数据访问层代码是简单的数据获得操作以及数据处理——关系转对象操作。
实体就是类,包括类的字段以及属性。
附上代码三层架构
备注:写于2013年7月27日