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