标签:
1.1 三层架构简介
假如你在经营一个大饭店,大体上你会请三方面的人,一方面是负责饭店服务的服务员,一方面是负责烹饪、做饭的厨师,一方面是负责饭店蔬菜、肉类、调料等的采购员。
如果你这样做了,那么饭店管理起来,就好比较好管理(简单来说)。比如任何一方面的员工出现请假或离职的情况,可以找其他的服务员、厨师或采购员代替。
在企业中这种职责分离、业务独立的部门划分方法对于管理企业有很大的好处,同样在程序中也需采用“职责分离、业务独立的”的原则划分模块,更好的实现“高内聚、低耦合”的软件设计思想。
1.2为什么要使用三层架构
那么我们为什么要使用分层开发呢,它有什么独特的优势呢?
.NET开发平台为我们做开发提供了强大的技术支持,使我们的开发变得非常便捷,高效。通过code behind的强大支持,我们可以将页面设计和代码设计有效的分离,代码编写,页面设计同时进行。
的确,仅从功能实现的基础来说我们已经做得很好了,尤其对于一个简单的应用来说,代码量不是很多的情况下,这种一层结构开发完全够用了,没有必要搞得那么复杂。但是对一个复杂的大型系统来说这样的设计的缺陷就很严重了。
在开发过程中我们会不停把代码到处复制,以实现一些相似的功能。同样的代码为什么要写那么多次?不但使程序变得冗长,更不利于维护,一个小小的修改或许会波及很多页面。稍微不留神就会导致异常的产生,使程序不能正常运行。最主要的面向对象的思想没有得到丝毫的体现,打着面向对象的幌子却依然走着面向过程的老路。
意识到这样的问题,我开始将程序中一些公用的处理程序写成公共方法封装在类中,供其它程序调用。象一些功能型的代码集合,数据库操作,如同SqlHelper那样对数据操作进行合理封装,把sql语句,参数列表作为参数,在数据库操作过程中,只要传入相应的参数就可以完成特定的数据操作,这就是我一开始的数据访问层,再不用每次操作数据库时都写那些重复性的数据库操作代码。在新的应用开发中,数据访问层可以直接拿来用。
面向对象的三大特性之一的封装性在这里得到了很好的体现。似乎找到了面向对象的感觉,代码量较以前有了很大的减少,而且修改的时候也比较方便。这下应该可以了吧?
试问一下,如果有一天数据库供应商发生了变化,因为数据量的增加,数据库有access变成了sql server?这下麻烦大了,原来的数据访问层失效了,数据操作对象发生了变化,且页面中涉及数据对象的地方也要进行修改,因为原来可能会使用OleDbDataReader对象将数据传递给显示页面,现在都得换成SqlDataReader对象,sql和access支持的数据类型也不一致,在显示数据时进行的数据转换可能也要进行修改。由sql向access的转换所做的修改会更多。
还有一种情况,因为某种需要,我们要把Web形式的项目改造成windows应用,这时牵涉的修改有多大呢?如果在你的aspx.cs中放了很多处理代码,或者还有一部分代码存在于aspx中呢windows应用中可没有aspx阿,是不是整个系统需要重新来做了?这都是设计不合理惹的祸。
1.3 三层架构的构成
我们通常说的三层架构包含表示层、业务层和数据层三层,对于应用系统来说,表示层和用户交互并显示数据,业务层负责访问数据层并向表示层提交数据,数据层负责数据的存储。下面来详细阐述三层架构的含义及其组成:
n 表示层
它主要是指与用户交互的界面,它接收用户的输入,但并不包括任何实际的业务处理,它只是简单地讲数据转交给业务层,同时负责展现业务层传递过来的数据,当后台业务逻辑更新时,表示层就会显示这些更新。表示层提供应用程序的用户界面(UI),通常包括Windows窗体、Asp.NetWeb窗体。
n 业务层
它代表了应用程序的核心功能,负责处理数据层的数据,实现业务逻辑,用于实现某种规则的业务处理以匹配特定公司的需要。例如,确定某个指定客户是否被批准进行某项借贷活动的业务规则可以封装在小型解决方案的客户业务组件中。对于大型解决方案,所有与借贷有关的业务逻辑可能都封装在单独的一个借贷组件中。
n 数据层
数据访问层:有时候也称为是持久层,其功能主要是负责数据库的访问,可以访问数据库系统、二进制文件、文本文档或是XML文档。简单的说法就是实现对数据表的Select,Insert,Update,Delete的操作。如果要加入ORM的元素,那么就会包括对象和数据表之间的mapping,以及对象实体的持久化。
将三层架构与饭店的各个人员层相比较的图如下:
三层结构的优点
1)从开发角度和应用角度来看,三层架构比双层或单层结构都有更大的优势。三层结构适合群体开发,每人可以有不同的分工,协同工作使效率倍增。开发双层或单层应用时,每个开发人员都应对系统有较深的理解,能力要求很高,开发三层应用时,则可以结合多方面的人才,只需少数人对系统全面了解,从一定程度工降低了开发的难度
2)三层架构可以更好的支持分布式计算环境。逻辑层的应用程序可以有多个机器上运行,充分利用网络的计算功能。分布式计算的潜力巨大,远比升级CPU有效。美国人曾利用分式计算解密,几个月就破解了据称永远都破不了的密码
3)也是三层架构的最大优点是它的安全性。用户端只能通过逻辑层来访问数据层,减少了入口点,把很多危险的系统功能都屏蔽了
三层结构的缺点
“金无足赤,人无完人”,分层式结构也不可避免具有一些缺陷:
1、降低了系统的性能。这是不言而喻的。如果不采用分层式结构,很多业务可以直接造访数据库,以此获取相应的数据,如今却必须通过中间层来完成。
2、有时会导致级联的修改。这种修改尤其体现在自上而下的方向。如果在表示层中需要增加一个功能,为保证其设计符合分层式结构,可能需要在相应的业务逻辑层和数据访问层中都增加相应的代码。
三层架构的搭建
2.2点击新建项—》,选择,应用程序配置文件
2.3打开app.config文件后,写如下代码:
/*在此先弱化了,业务逻辑层*/
第6步:表示层
这样,整个完整、简单的三层框架登录已经基本完成。
请没有完成的同学按照此步骤,务必做完。体验三层框架之间类的调用与关系。
/*针对三层之中的各个“相关责任类”,添加断点,进行测试,看看参数传递效果。*/
下面同学们,连接项目组长的数据库服务器。
打开TCP/IP和其他服务
小结:
n 三层结构与两层结构的区别是什么?
n 为什么要实现分层?各层的作用是什么?
n 三层结构中各层之间相互依赖是如何实现的?
作业:
自己根据以前坐的宾馆管理系统、汽车销售系统等C/S系统,依据三层架构的思想,重新搭建新的框架。
标签:
原文地址:http://blog.csdn.net/zhangchen124/article/details/51533461