浅谈ASP.NET中多层架构

   2015-06-23 0
核心提示: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实例的形式存在。是整个系统基础层次;

浅谈ASP.NET中多层架构

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

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

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

三. MVC

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

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

四. 三层结构与MVC的区别

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

浅谈ASP.NET中多层架构

图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。

以上所述就是本文的全部内容了,希望大家能够喜欢。

 
标签: ASP.NET 多层架构
反对 0举报 0 评论 0
 

免责声明:本文仅代表作者个人观点,与乐学笔记(本网)无关。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
    本网站有部分内容均转载自其它媒体,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责,若因作品内容、知识产权、版权和其他问题,请及时提供相关证明等材料并与我们留言联系,本网站将在规定时间内给予删除等相关处理.

  • [VB][ASP.NET]FileUpload控件「批次上传 / 多档
    FileUpload控件「批次上传 / 多档案同时上传」的范例 (VB语法) http://www.dotblogs.com.tw/mis2000lab/archive/2008/05/14/3986.aspx    FileUpload控件真的简单好用,不使用它来作批次上传,却要改用别的方法,实在不聪明。要用就一次用到底,公开File
    02-10
  • 使用WebClient自动填写并提交ASP.NET页面表单的源代码
    使用WebClient自动填写并提交ASP.NET页面表单的
    转自:http://www.cnblogs.com/anjou/archive/2007/03/07/667253.html 在.NET中通过程序填写和提交表单还是比较简单。比如,要提交一个如下图所示的登录表单:           填写和提交以上表单的代码如下:       // 要提交表单的URI字符串
    02-09
  • asp.net mvc多条件+分页查询解决方案
    


            
asp.net mvc多条件+分页查询解决方案
    asp.net mvc多条件+分页查询解决方案
    http://www.cnblogs.com/nickppa/p/3232535.html开发环境vs2010css:bootstrapjs:jquery    bootstrap paginator原先只是想做个mvc的分页,但是一般的数据展现都需要检索条件,而且是多个条件,所以就变成了MVC多条件+分页查询因为美工不是很好,所以用的是
    02-09
  • ASP.NET操作Cookies的问题(Bug or Not)
    以下存和取都是在不同的页面中,如果是在同一个页面也没必要用cookies了。 Test1: 给Cookies赋值: const string AAA="aaa"; Response.Cookies[AAA].Value = "111;222;333"; 取值: string value = Request.Cookies[AAA].Value; // value为111 Test2: 给Cooki
    02-09
  • Asp.Net Core 自定义验证属性
      很多时候,在模型上的验证需要自己定义一些特定于我们需求的验证属性。所以这一篇我们就来介绍一下怎么自定义验证属性。  我们来实现一个验证邮箱域名的自定义验证属性,当然,最重要的是需要定义一个继承自ValidationAttribute的类,然后在实现其IsVal
    02-09
  • Asp.Net 之 枚举类型的下拉列表绑定
    有这样一个学科枚举类型:/// 学科 /// /summary public enum Subject {None = 0,[Description("语文")]Chinese = 1,[Description("数学")]Mathematics = 2,[Description("英语")]English = 3,[Description("政治")]Politics = 4,[Description("物理&qu
    02-09
  • [ASP.NET笔记] 1.Web基础知识
         1:http协议:     2:web服务器:     3:静态网页的概念     4:动态网页的概念       http协议:http(hypertext transfer protocol) 即超文本传输协议,这个协议是在internet上进行信息传送的协议任何网页之间要相互沟通,必须要尊循
    02-09
  • ASP.NET邮件发送 .net 发送邮件
      今天做了个ASP.NET做发送邮件功能,发现QQ邮箱好奇怪,当你用QQ邮箱做服务器的时候什么邮件都发送不出去(QQ邮箱除外)。而且爆出这样的错误:"邮箱不可用。 服务器响应为: Error: content rejected.http://mail.qq.com/zh_CN/help/content/rejectedmail.ht
    02-09
  • 由ASP.NET Core根据路径下载文件异常引发的探究
    前言    最近在开发新的项目,使用的是ASP.NET Core6.0版本的框架。由于项目中存在文件下载功能,没有使用类似MinIO或OSS之类的分布式文件系统,而是下载本地文件,也就是根据本地文件路径进行下载。这其中遇到了一个问题,是关于如何提供文件路径的,通
    02-09
  • ASP.NET的运行原理与运行机制 ASP.NET的开发模式包括
    ASP.NET的运行原理与运行机制 ASP.NET的开发模
    在Asp.net4和4.5中,新增了WebPages Framework,编写页面代码使用了新的Razor语法,代码更加的简洁和符合Web标准,编写方式更接近于PHP和以前的Asp,和使用WebForms这种模仿Windows Form编程方式有了很大不同,不再有大量控件和控件生成的大量不够灵活的代码
    02-09
点击排行