Web系统的三层架构()
什么是三层架构
所谓的三层开发就是将系统的整个业务应用划分为表示层业务逻辑层数据访问层这样有利于系统的开发维护部署和扩展图所示为三层架构示意图
分层实现了高内聚低耦合采用分而治之的思想把问题划分开来解决易于控制延展易于分配资源
图 三层架构示意图
表示层负责直接跟用户进行交互一般是指系统的界面用于数据录入数据显示等意味着只做与外观显示相关的工作不属于它的工作不用做
业务逻辑层用于做一些有效性验证的工作以更好地保证程序运行的健壮性如完成数据添加修改和查询业务不允许指定的文本框中输入空字符串数据格式是否正确及数据类型验证用户权限的合法性判断等通过以上的诸多判断以决定是否将操作继续向后传递尽量保证程序的正常运行
数据访问层顾名思义就是用于专门跟数据库进行交互执行数据的添加删除修改和显示等需要强调的是所有的数据对象只在这一层被引用如SystemDataSqlClient等除数据层之外的任何地方都不应该出现这样的引用
ASPNET可以使用NET平台快速方便地部署三层架构ASPNET革命性的变化是在网页中也使用基于事件的处理可以指定处理的后台代码文件可以使用C#VBC++和J#作为后台代码的语言NET中可以方便地实现组件的装配后台代码通过命名空间可以方便地使用自己定义的组件表示层放在ASPX页面中数据库操作和逻辑层用组件或封装类来实现这样就很方便地实现了三层架构
为什么使用三层架构
对于一个简单的应用程序来说在代码量不是很多的情况下单层架构或二层架构开发完全够用没有必要将其复杂化如果将一个复杂的大型系统设计为单层架构或二层架构这样的设计则会存在很严重的缺陷下面会具体介绍分层开发其实是为大型系统服务的
在开发过程中出现相似的功能时初级程序人员经常会复制代码那么同样的代码为什么要写那么多次?这样不但使程序变得冗长也不利于维护一个小小的修改或许会涉及很多页面经常会导致异常的产生使程序不能正常运行最主要的是面向对象的思想没有得到丝毫的体现打着面向对象的幌子却依然走着面向过程的道路
针对这样的问题初级程序人员应学会将程序中一些公用的处理程序写成公共方法封装在类中供其他程序调用例如写一个数据操作类对数据操作进行合理封装在数据库操作过程中只要类中的相应方法(数据添加修改查询等)可以完成特定的数据操作这就是数据访问层不用每次操作数据库时都写那些重复性的数据库操作代码在新的应用开发中数据访问层可以直接拿来用面向对象的三大特性之一的封装性在这里得到了很好的体现采用面向对象的方法可使代码量较以前有很大的减少而且修改的时候也比较方便实现了代码的重用性
下面举两个案例解释一下为什么要使用三层架构案例涉及的框架图如图所示
案例一
由于数据量的不断增加数据库由Access变成了SQL Server数据库这样一来原来的数据访问层失效了数据操作对象发生了变化并且页面中涉及数据对象的地方也要进行修改因为原来可能会使用OleDbDataReader对象将数据传递给显示页面现在都得换成SqlDataReader对象SQL Server和Access支持的数据类型也不一致在显示数据时进行的数据转换也要进行修改
案例二
由于特殊情况需要把Web形式的项目改造成Windows应用此时需要做多少修改呢?如果在Aspxcs中占据了大量代码或者还有部分代码存在于ASPX中那么整个系统是否需要重新开发呢?
总之以上情况是设计不合理造成的在上面的案例中是否体会到了没有分层开发模式的缺陷呢?是否曾碰到过这样的情况呢?其实多层开发架构的出现很好地解决了这样的问题通过程序架构进行合理的分层将极大地提高程序的通用性
使用三层架构开发的优点
从开发角度和应用角度来看三层架构比二层架构或单层架构有更大的优势三层架构适合团队开发每个人可以有不同的分工协同工作能使效率倍增开发二层或单层应用时每个开发人员都应对系统有较深的理解对人员能力要求很高而开发三层应用时则可以结合多方面的人才只需少数人对系统有全面的了解即可在一定程度上降低了开发的难度
三层架构可以更好地支持分布式计算环境逻辑层的应用程序可以在多个机器上运行充分利用网络的计算功能分布式计算的潜力巨大远比升级CPU有效美国人曾利用分布式计算进行解密几个月就破解了据称永远都破解不了的密码
三层架构的最大优点是它的安全性用户只能通过逻辑层来访问数据层减少了入口点把很多危险的系统功能都屏蔽了
返回目录ASPNET开发宝典
编辑推荐
ASP NET开发培训视频教程
Microsoft NET框架程序设计视频教程
ASPNET MVC 框架揭秘
Java Web开发详解