您的位置:首页 > 运维架构 > 网站架构

学习三层架构感悟

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日
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: