ASP.NET中多层架构

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

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实例的形式存在。是整个系统基础层次;

图1. 三层架构示意图

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

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

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

三. MVC

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

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

四. 三层结构与MVC的区别

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

图2. MVC 与 三层架构的区别(源自http://blog.csdn.net/beijiguangyong/article/details/7029257)

三层架构是界面层(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。

时间: 2024-12-22 08:44:56

ASP.NET中多层架构的相关文章

asp.net中三层架构与mvc之区别?

对于标题中的问题,如果是没有同时接触三层架构和mvc的初级.net开发人员,想必一定会非常糊涂和混淆.关于此我也百度过N回,看过N多帖子和 回答,但几乎没有人能表述清楚.近期我从典型mvc+entityframework开发模式转型为三层架构的webform模式,才真正了解了二者的概 念. 一言以概之,采用mvc的同时,也可以采用三层架构,这二者没有直接关系. 三层架构中有一层UI层,或叫web层,我们所做的mvc项目都是依托于三层架构中的UI层而言的.mvc的概念主要是相对于webform中视

用ASP.NET MVC5 +SQLSERVER2014搭建多层架构的数据库管理系统

用http://ASP.NET MVC5 +SQLSERVER2014搭建多层架构的数据库管理系统 背景:前段时间,给一家公司做外包(就是图标是朵菊花那家).为了尽快实现交付,网上四处寻找适合中小型企业框架.花了几天无果,只在github上找了个(貌似作者还要收费),把前端半改造,后端彻底改造(最终版本全部没有使用github的代码).现在,把这段时间的成果最初版本贡献出来.若是有类似需求的同学,尽可拿去用,不清楚的可以留言. 本人认为:除非是定制的软件和定价了的软件可以收费外,开源的都应该免费

.NET跨平台之mac 下vs code 多层架构编程

合肥程序员群:49313181.    合肥实名程序员群:128131462 (不愿透露姓名和信息者勿加入,申请备注填写姓名+技术+工作年限) Q  Q:408365330     E-Mail:[email protected] 概述: 为了研究跨平台.NET 开发,我打算利用.NET core 编写一个跨平台的cms,这个CMS我也秉着开源的原则放到github上面,为.NET 开源社区做点小小的贡献吧.如果有兴趣的可以联系我一起为.NET开源和跨平台做点小小的贡献吧.EgojitCMS传送

关于多层架构一些思考

1:关于多层架构(N-Tier) 多层架构是一种被行业证明过的软件架构模型,对开发一些解决可扩展性.安全性.容 错性方面的企业级(客户端/服务端)应用程序支持是相当给力.但在.NET世界里,我们有许多工具和产品,却没有指导手册是关于如何设计和实现一个良好的 多层架构模型,比如一些样例版,Demo等等,我们或许多少有听到.看到一些关于多层架构模型的用途和益处,但更多知道的仅仅是如何使用和实现,没有过多 的思考为何我们要这样设计呢?这样设计符合了哪些设计模式呢?遵循哪些设计原则呢?或者了解一点多层的

再论 ASP.NET 中获取客户端IP地址

说到IP获取无非是我们常见的以下几种方式,但是具体获取的值具体区别在哪?网上不乏相关文章,说的也是很详细,但是真正使用起来,还有很多不太对的地方.IP在不同系统中,应用相当广泛,常见的日志记录.广告分区域投放等. 1: HttpContext.Current.Request.ServerVariables["HTTP_VIA"]; 2: HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"

分享一个大型进销存供应链项目(多层架构、分布式WCF多服务器部署、微软企业库架构)

分享一个大型进销存供应链项目(多层架构.分布式WCF多服务器部署.微软企业库架构) 这是一个比较大型的项目,准备开源了.支持N家门店同时操作.远程WCF+企业库5.0实现. 这块应该算是库存模块中的核心模块了,因为该块的业务逻辑比较多,比较繁琐,大致讲讲业务逻辑吧,大致的逻辑为:出库单/出库单-->填写订单-->出库/入库-->修改库存信息,按照这个顺序来完成入库出库,顺序不能颠倒,同时还要实现订单的删除,修改,在修改库存信息时由于表和表之间有很多的外键关系,所以要同时删除多张表中含有删

ASP.NET的三层架构(DAL,BLL,UI)

BLL 是业务逻辑层 Business Logic Layer DAL 是数据访问层 Data Access Layer ASP.NET的三层架构(DAL,BLL,UI) 图形表示三层结构. 其中web即为USL层 web –> bll –> dal | | | | V | +–> model <-+ 一.三层体系架构 1.表示层(USL):主要表示WEB方式,也可以表示成WINFORM方式.如果逻辑层相当强大和完善,无论表现层如何定义和更改,逻辑层都能完善地提供服务. 2.业务逻

在 ASP.NET 中创建数据访问和业务逻辑层(转)

.NET Framework 4 当在 ASP.NET 中处理数据时,可从使用通用软件模式中受益.其中一种模式是将数据访问代码与控制数据访问或提供其他业务规则的业务逻辑代码分开.在此模式中,这两个层均与表示层分离.表示层由网站用户有权查看或更改数据的页面组成. ASP.NET 可通过多种方式提供数据访问.业务逻辑和表示形式之间的分离.例如,数据源模型(包括 LinqDataSource 和 ObjectDataSource 等服务器控件)可将表示层与数据访问代码和业务逻辑分离. 另一种模式是将数

ASP.NET典型三层架构企业级医药行业ERP系统实战

我这里有一套课程和大家分享,我的qq是2059055336,   课程说明: 国内首部完整讲述ERP系统架构.业务逻辑.开发的项目实战课程.考虑到本系统的庞大及复杂性.本课程原价购买学员每人赠送一个U盾设备,U盾可插在任意电脑上进行学习,使用方便,学习灵活!可永久学习! 项目由来: 此项目是讲师亲自参与构架及参与开发的大型ERP项目,此项目已被太阳石药业,九芝堂药业,拜欧药业等多家大中型企业使用,为其创造巨大经济价值.整个项目由10多个研发人员全程打造,项目总价值接近3000万,给企业创造的价值