本文主题,讲解主要有哪些分层思想。

一、三层结构

作为早期程序开发的经典,这是一个完全由程序员自己控制的分层思想。
在我们自己所有的项目中,几乎是无处不在,无时无刻不在使用。

它的主要思想是分界面层(UI)、业务逻辑层(BLL)、数据访问层(DAL),不管去到哪里,这3个都少不掉的。之后的各种分层,大体都离不开三层结构的影子,或者受一些影响。

界面层(UI):指html界面那些。业务逻辑层(BLL):指您的模型类和数据逻辑操作。数据访问层(DAL):指您对数据库进行操作,一般指CRUD,即增删改查。

它在Visual Studio中的表现类似这样子:

UI层调用逻辑层BLL,再调用数据访问层DAL即可。

二、MVP

这是一个通常使用于android开发的时候的分层。划分为视图层(View)、模型层(Model)、中间层(Presenter)。

视图层(View):也就是界面层,它调用中间层(Presenter)。指手机界面。模型层(Model):更具体的说是模型管理层,它调用中间层(Presenter)。指模型管理。中间层(Presenter):从它的英文Presenter来看,是主持人的意思。也就是它会负责协调视图层和模型层之间的沟通,本层通常持有视图层的对象以及模型层的对象,可以对它们做协调操作。

它的本质是通过回调来完成通讯的。

二、MVC

这是一个较常用的分层思想,它主要用于网站建设。划分为模型(Model)、视图(View)、控制器(Controller)。

视图层(View):是指界面层,也就是html代码那部分。模型层(Model):指对应于界面,给界面使用的Model实体类。控制器(Controller):可以操作模型层的实体,它控制数据流向模型对象,并在数据变化时更新视图。它强制使视图与模型分离开。

在VisualStudio中,就有一个专门的MVC模型模板。下图是VS2019创建一个MVC模型应用程序的截图:

三、WebApi

它实现了前后端分离,是目前前端开发工程师和后端开发工程师共同合作的最好的协同方式,彼此之间尽量减少干扰。

它跟MVC是一样的,只不过视图层(View)放在了前端开发工程师的手上。而MVC的话,视图层还未分离,跟后端代码仍然是结合在一起的。

WebApi是目前主流的前后端程序员工作方式。

四、MVVM

这是作为C#程序员才有的独家秘诀,至少目前是,以后是不是就不知道了。
独家是因为,MVVM目前仅用于WPF和Xamarin开发。这2种都是微软产品,所以才说是C#程序员才有的独家秘诀。

它分为以下几个层:

视图层(View):就是界面层了,类似于html形式的,只不过在这里是用xaml语言来描述的。模型层(Model):这个也很好理解,就是把界面上需要用到的属性参数啊什么的,构建成一个模型类即可,即建立一个Model类。这个Model类专门给这个视图界面使用的。视图模型层(ViewModel):对于没有使用过WPF或者Xamarin的程序员来说,要理解这层可就头大了,因为它很难想明白。它的作用就是将Model类的对象,绑定到视图层View上。简单的说,就是负责绑定数据源,即给界面层的的控件的DataSource赋上值。

五、DDD

目前很火的后端开发模型。中文叫领域驱动设计(domain-driven design,简称DDD)。通常这个模型用于前后端分离的后端项目中。

我自己主要作为后端开发的角色,所以,我最常用的就是这个分层思想了:领域模型。

它主要分为:

界面层(Host或UI):当然就是前端界面啦。一般是分离的,可能有专门的前端进行维护。应用层(Application):跟界面层打交道的服务层(Service),通常是以提供WebApi的方式跟界面层互动。数据共享层(Share):本层一般不是必需的,但建议您拥有。主要是定义服务接口,用于多方使用。同时,本层也可以定义Dto对象,即数据交换类。什么是数据交换类?一般我们不建议数据库实体(Entity)直接显示给前端使用,而是经过转换成一个模型(Model)后,再把这个数据给前端看。比如数据库中的字段有身份证敏感信息,如果你一股脑就把Entity暴露给前端,问题就大了。所以要有一个数据交换,也就是Dto。领域层(Domain):也就是我们三层结构中所说的业务逻辑层。是DDD的业务核心。负责连接应用层(Application)和数据仓储层(Database)。数据访问层(Database):好理解,就是操作数据库了。

关于DDD领域模型,目前最好的例子,是ABP(AspNet Boilerplate )。关于Abp是个什么东西,你可以自行搜索一下。

特别感谢网友“山西大风”的批评指正:

祝您用餐愉快。

mvvm绑定checkbox wpf_C#框架结构分层:三层结构,DDD,MVC,MVVM,MVP相关推荐

  1. 谈 三层结构与MVC模式的区别

    谈 三层结构与MVC模式的区别 在CSDN和园子里有朋友谈到三层与MVC的区别,以前也有人抛出这个问题,本人对来公司面试的朋友也偶乐会提这方面的问题.     那么我也来讲讲我对这两者的理解吧.    ...

  2. mvvm绑定checkbox wpf_LoxodonFramework 数据双向绑定 通过控制数据流向防止更新死循环...

    框架地址​github.com 用这个框架也有一段时间了,刚引入的时候还没感受到MVVM的威力,随着项目的逐渐复杂,才真正感受到 VM和V分离后对于多端项目的巨大优势 目前项目有两套完全不同的界面布局 ...

  3. mvvm绑定checkbox wpf_wpf中使用mvvm,解决checkbox全选问题

    开始原因是由于并不知道使用数据模板,需要加入数据源,要找到数据源的作用域.后面的命令部分代码如下: public ICommand SelectOrUnSelectAll { get { return ...

  4. JEE项目分层结构与MVC

    JEE项目分层结构与MVC 一.JEE项目的安排 二.JEE项目功能 三.JEE项目在编程软件中的呈现 四.JEE项目的分层结构 五.三层结构 1.为什么需要 2.三层结构是什么 3.三层结构的传递与 ...

  5. (转载/侵删)mvc与三层结构终极区别

    结合自己做过的项目做的总结:三层结构和MVC是从功能性,表现方式两个角度来划分的两种方式 三层结构是从程序功能角度来划分,即每层结构应用到的程序,逻辑,功能一般不同.如:在web应用开发中,后台ser ...

  6. iOS进阶之架构设计MVC、MVP、MVVM(12)

    转载自:iOS架构模式MVC.MVP.MVVM(内附demo) 文章对比了MVC.MVP.MVVM,结构清晰,示例简单,容易让人接受.所以转载至此.以供自己赏读. MVC MVC的实现思路是:用户操作 ...

  7. mvc mvvm mvp_mvc vs mvp vs mvvm

    mvc mvvm mvp 思想程序员(Thought Programmer) Nowadays we have many options when it comes to architecture d ...

  8. 浅谈“三层结构”原理与用意(转帖)

    浅谈"三层结构"原理与用意 序 在刚刚步入"多层结构"Web应用程序开发的时候,我阅读过几篇关于"asp.net三层结构开发"的文章.但其多 ...

  9. [转]MVP+WCF+三层结构搭建项目框架

    最近,我一直在重构之前做的一个项目,在这个过程中感慨万千.原先的项目是一个运用了WCF的C/S系统,在客户端运用了MVC模式,但MVC的View.Model耦合以及WCF端分布式欠佳等问题让我有了重构 ...

最新文章

  1. 修改单个viewcontroller的状态栏字体颜色
  2. 安徽省计算机二级大题教程,安徽省计算机二级例题
  3. 从0到1学习Vue.js,包含例子及实战项目(三)
  4. 设置第三方的SMTP服务
  5. java中日期计算时间差,java中依据,两个日期,计算时间差
  6. api商品分享源码_SSM框架高并发和商品秒杀项目高并发秒杀API源码免费分享
  7. flutter 一个用户登录页面
  8. iOS通知的整理笔记
  9. android 使用webview 加载网页
  10. 2020-12-23 PMP 群内练习题 - 光环
  11. 在线UML图设计 用例图 在线制图
  12. 何谓自顶向下,何谓自底向上
  13. php在线安装ipa,网页安装ipa
  14. fpga加载程序慢_FPGA JTAG接口下载速度很慢
  15. 生成带二维码图片并通过微信分享
  16. 5-11 java scaner
  17. For循环语句及使用
  18. javaweb后台区分手机或是电脑登录
  19. C语言期末考试测试题及答案
  20. 747D. Winter Is Coming

热门文章

  1. java正则学习笔记三
  2. windows 下mysql的安装于使用(启动、关闭)
  3. MaxCompute5个窗口函数限制
  4. 不插即用!配备微信网页授权模块的CodeIgniter应用脚手架
  5. Android状态栏颜色修改
  6. 解决dell poweredge 2850 服务器系统内存限制
  7. Sql Server之旅——第十四站 深入的探讨锁机制
  8. Lucene的简单应用
  9. 新僵尸病毒猖獗 Facebook成攻击目标
  10. 一款性能调优利器 — 火焰图