0

0

理解ASP.NET中多层架构

巴扎黑

巴扎黑

发布时间:2017-08-03 13:13:37

|

3012人浏览过

|

来源于php中文网

原创

asp.net的多层架构主要是为了解决数据层,逻辑层,表示层等之间的关系。我的做法是这样的:首先建立一个datacore的基类。基类里面封装了一些低层的数据库的基本操作,比如说数据库联接,调用存储过程等等。

很多人对开发多层应用程序感到一定的困难。来看一个例子:对于一个只有一两个人的小公司,一个人可能同时担当老板、出纳、会计、市场、销售、开发等多项工作。而对于一个大公司,就会进行比较严密的分工,每个人只完成一部分工作,需要彼此配合才能保证正常运转。以前的开发程序就类似于一个小公司,从用户界面到数据库访问等所有功能都在一个页面内完成,这样的缺点有:

    1. 开发起来比较困难,很难实现多人协作开发

    2. 一旦数据库或规则有变,就可能要重新修改整个页面,加大维护成本

    3. 因为所有功能都混合在一起,程序重用性差。如果开发一个新项目,几乎要重写代码

        为了解决这个问题,人们就提出了“多层应用程序”概念,其本质类似于一个职权明确的大公司,对页面进行分工,将数据访问、业务规则等功能都放在专门的文件中。比较流行的有二层架构、三层架构和MVC。

一. 二层架构

         二层架构,就是将程序分为用户界面层和数据访问层。其本质是将访问数据库的代码放入数据访问层中,而用户界面层通过数据访问层对数据库进行操作。 相互作用关系如下:(""表示双向箭头)

用户界面 数据访问 数据库

二. 三层架构

        三层架构,即将二层架构中的业务逻辑从数据访问层中分离出来,成为一个单独的业务逻辑层。将程序分为三层后,数据访问层就只管对数据库进行操作,而业务逻辑层负负责对数据进行各种处理。
从顶层上主要包含了4个部件:DAL(数据处理层)、BLL(业务逻辑层)、UI(用户接口层)、Model(实体模型)。其中前三者就是人们常说的三层结构。
    1)数据访问层(database access layer,DAL):有时候也称为是持久层,其功能主要是负责数据库的访问。简单的说法就是实现对数据表的Select,Insert,Update, Delete的操作。如果要加入ORM的元素,那么就会包括对象和数据表之间的mapping,以及对象实体的持久化;
    2)业务逻辑层(business logic layer, BLL):是整个系统的核心,它与这个系统的业务(领域)有关;
    3)表示层(user interface layer, UIA):是系统的UI部分,负责使用者与整个系统的交互。在这一层中,理想的状态是不应包括系统的业务逻辑。表示层中的逻辑代码,仅与界面元素有关;
   4)实体模型层(Model):包含了所有的数据信息,这些数据信息以各种Entity实例的形式存在。是整个系统基础层次;

        完善的三层结构应该是:修改表示层而不用修改逻辑层,修改逻辑层二不用修改数据访问层。达到一定程度上的解耦。

        三层架构主要是使项目结构更清楚,分工更明确,有利于后期的维护和升级。它解决了整个应用程序中各个业务操作过程中不同阶段的代码封装的问题,使程序员更加专注的处理某阶段的业务逻辑。然而未必会提升性能,因为当子程序模块未执行结束时,主程序模块只能处于等待状态。这说明将应用程序划分层次,会带来其执行速度上的一些损失。但从团队开发效率角度上来讲却可以感受到大不相同的效果。

        需要注意的是,虽然三层架构有很多的好处,但如果你的程序很简单,或者将来肯定不会重用,或不一定要采用两层架构,也许采用两层或普通的程序开发速度会更快。要根据实际情况具体处理。

乐彼多用户商城系统LBMall(.net)
乐彼多用户商城系统LBMall(.net)

乐彼多用户商城系统,采用ASP.NET分层技术和AJAX技术,运营于高速稳定的微软.NET+MSSQL 2005平台;完全具备搭建超大型网络购物多用户网上商城的整体技术框架和应用层次LBMall 秉承乐彼软件优秀品质,后台人性化设计,管理窗口识别客户端分辨率自动调整,独立配置的菜单操作锁,使管理操作简单便捷。待办事项1、新订单、支付、付款、短信提醒2、每5分钟自动读取3、新事项声音提醒 店铺管理1

下载

三. MVC

        M 即Model(模型层),主要负责出来业务逻辑以及数据库的交互;
        V 即View(视图层),主要用于显示数据和提交数据;
        C 即Controller(控制器),主要是用作捕获请求并控制请求转发;

        MVC是在应用程序(BS结构)的视图层划分出来的不同功能的几个模块,主要是为了解决应用程序用户界面的样式替换问题,把展示数据的 HTML 页面尽可能的和业务代码分离。

四. 三层结构与MVC的区别

区别的话,看图就能明白:

图2. MVC 与 三层架构的区别

         三层架构是界面层(UI)业务逻辑层(BLL)和数据访问层(DAL)构成的,而MVC是模型层(M)界面层(View)和控制层(Controller)构成的,而且他们之间也不对应。
        如果硬要给他们对应的话,那么三层架构中的UI对应MVC中的view都是用于显示以及获取界面的数据;三层架构中的BLL层和DAL层对应MVC中的Model层都是用于处理上层传递来的数据以及从数据库获取的数据的;MVC中的Controller最多算是三层架构中的UI的一部分。

五. 三层架构引用关系

Model层:不引用任何项目;
DAL层:引用Model,通过读取web.config里的程序集,加载类的实例,返回给BLL使用;
BLL层:引用Model,DAL;
UI层:引用Model, BLL;

       方法是在资源管理器中右击项目文件,添加引用。在弹出的对话框中选中项目标签,选择适当的类库后点击确定。然后再在项目文件中添加using “引用类的命名空间”。

        项目已经添加了引用,但仍然找不到指定类库文件,可检查:
            1. 引用的项目中是否有语法错误,是否在头文件中添加using “命名空间”;
            2. 添加的类库时,是否该类库为public。

相关专题

更多
c++ 根号
c++ 根号

本专题整合了c++根号相关教程,阅读专题下面的文章了解更多详细内容。

42

2026.01.23

c++空格相关教程合集
c++空格相关教程合集

本专题整合了c++空格相关教程,阅读专题下面的文章了解更多详细内容。

46

2026.01.23

yy漫画官方登录入口地址合集
yy漫画官方登录入口地址合集

本专题整合了yy漫画入口相关合集,阅读专题下面的文章了解更多详细内容。

202

2026.01.23

漫蛙最新入口地址汇总2026
漫蛙最新入口地址汇总2026

本专题整合了漫蛙最新入口地址大全,阅读专题下面的文章了解更多详细内容。

341

2026.01.23

C++ 高级模板编程与元编程
C++ 高级模板编程与元编程

本专题深入讲解 C++ 中的高级模板编程与元编程技术,涵盖模板特化、SFINAE、模板递归、类型萃取、编译时常量与计算、C++17 的折叠表达式与变长模板参数等。通过多个实际示例,帮助开发者掌握 如何利用 C++ 模板机制编写高效、可扩展的通用代码,并提升代码的灵活性与性能。

16

2026.01.23

php远程文件教程合集
php远程文件教程合集

本专题整合了php远程文件相关教程,阅读专题下面的文章了解更多详细内容。

100

2026.01.22

PHP后端开发相关内容汇总
PHP后端开发相关内容汇总

本专题整合了PHP后端开发相关内容,阅读专题下面的文章了解更多详细内容。

73

2026.01.22

php会话教程合集
php会话教程合集

本专题整合了php会话教程相关合集,阅读专题下面的文章了解更多详细内容。

75

2026.01.22

宝塔PHP8.4相关教程汇总
宝塔PHP8.4相关教程汇总

本专题整合了宝塔PHP8.4相关教程,阅读专题下面的文章了解更多详细内容。

67

2026.01.22

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
ASP.NET参考手册
ASP.NET参考手册

共0课时 | 0人学习

传播智客ASP.NET中级系列视频教程
传播智客ASP.NET中级系列视频教程

共33课时 | 6.4万人学习

传播智客ASP.NET高级系列视频教程
传播智客ASP.NET高级系列视频教程

共34课时 | 6.2万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号