前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >基于.Net 三层详解

基于.Net 三层详解

作者头像
李郑
发布2019-12-04 21:16:24
8090
发布2019-12-04 21:16:24
举报
文章被收录于专栏:漫漫全栈路漫漫全栈路

三层的了解一直都有,最近在项目结构上遇到了一些问题,遂将三层/多层的结构详解做一下整理和分析。

架构/模式/框架

首先说下什么是三层架构,在解释三层架构之前,应该先分清楚架构模式框架的区别。

其他的开发平台不清楚,在.NET 平台,很多人把 MVC 和 三层混为一谈,MVC 和 ASP.NET MVC也混作一团。这就是对这几个概念混淆不清,下面逐一说说。

架构

说到架构这个词,我们首先想到的是架构师,这个作为底层码农心心念念想要达到的职位,那么什么是架构呢?架构一般是正对整个系统的,而并非针对某个单独的问题。

软件架构(software architecture)是一系列相关的抽象模式,用于指导大型软件系统各个方面的设计。 软件架构是一个系统的草图

正是因为架构的这些特性,因此架构是没有语言和平台限制的,通用的,普适的设计规划。

模式

软件开发中遇到某些特定的问题,而由此总结出来的固有的普适的经验,解决方法,就是模式。例如我们常说的 GOF 23 种设计模式 ,MVC 模式, MVP模式等等。

GOF 23

诸如常见的工厂模式,单例模式,原型模式,适配器模式等等……

计划整理一遍23种模式的原型代码,暂时可以参考 TerryLee -.NET设计模式系列文章

MVC/MVP

MVC/MVP 则极为常见,也就是我们常说的,模型,视图,控制器。

而 MVP与MVC有着一个重大的区别:在MVP中View并不直接使用Model,它们之间的通信是通过Presenter (MVC中的Controller)来进行的,所有的交互都发生在Presenter内部,而在MVC中View会直接从Model中读取数据而不是通过 Controller。

框架

那么什么是框架呢?框架是架构设计,模式的具体体现。

比如:

  • ASP.NET MVC 就是一个基于MVC 设计模式的WEB 服务开发框架。
  • VUE 是一个基于 MVVM设计模式的渐进式前端开发框架。

这就是框架的定义。

三层(多层)架构

三层架构,实际上是多层架构的一种,我们通常将其约定为三层,即 :

  • UI Layer 界面层
  • Business Logical Layer 业务逻辑层
  • Data Access Layer 数据访问层

当然,通常情况下,使用对象关系映射 ORM ,也会添加一个 Entity 实体层或 Model 模型层。

那么如此分层的意义是什么呢?

功能明细化,每一层负责各自职责,这样在出现问题时,可以轻松排查出问题出现在哪一层,从而快速做出响应。同时,一定程度的降低了代码的耦合度,从而提升复用率,某种层度上来说,可以提升开发效率。另一方面,也利于团队开发,划分功能模块,各自按规范开发,完成单元测试。

三层间的交互

三层之间各自关联,又相互独立。

UI 层只和 BLL 业务逻辑层 交互,由UI 层获取用户输入和请求,经由BLL 处理, BLL 处理后调用 DAL 与数据库交互,DAL 只和 BLL 与数据库交互,并将处理的结果按需返还给 BLL ,BLL 将内容处理后经 UI 层展示给用户,即完成三层交互。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018-06-04,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 架构/模式/框架
    • 架构
      • 模式
        • GOF 23
        • MVC/MVP
      • 框架
      • 三层(多层)架构
        • 三层间的交互
        相关产品与服务
        数据库
        云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档