MVC和三层架构

更新日期: 2019-08-25阅读量: 1267标签: 架构

三层架构

三层架构指的是: 视图层(View),服务层(Service)和持久层(DAO). 他们分别负责不同的功能.。单纯就是指后台的设计架构,这种架构模式是从微软来的, 微软提倡这种架构模式并且在 零几年的时候给了一个宠物商店的Demo 用于示范(有一点记不清了.).

  1. View层: 用于接收用户提交请求的代码.
  2. Service层: 系统的业务逻辑层主要在这里完成.
  3. DAO层: 直接操作数据库的代码.

为了更好的降低各层次之间的耦合度, 在三层架构程序设计中, 采用面向抽象编程(接口编程). 即上层对下层的调用是通过接口实现的. 而下层对上层的真正服务提供者, 是下层接口的实现类. 服务标准(接口)是相同的, 服务提供者(实现类)可以替换, 这就实现了层间解耦合.


MVC模式

MVC指的是: Model(模型), View(视图)和Controller(控制器).  包括前台和后台, 这里省略了Service层. 其实自己写的话一般情况下经常把Service层省略掉, 设计好Controller和Model(控制器和数据库),然后开始设计前端交互.

  1. View:视图 最顶层, 为用户提供使用界面, 和用户直接进行交互, 是程序的外壳.
  2. Model:数据层 最底层, 是核心的数据层, 程序需要操作的数据或信息.
  3. Controller: 控制层 负责根据用户从View层输入的指令, 选取"数据层"中的数据, 然后对其进行相应的操作, 产生最终的结果.

MVC是一种软件设计典范, 用于中业务逻辑, 数据,页面实现分离的方法组织代码, 将业务逻辑整合到一个部件里面, 在改进和个性化定制界面以及用户交互的同时不需要重写编写业务逻辑, 实现业务逻辑和前端界面的分离. MVC被独特的发展起来用于映射传统的输入,处理和输出功能在一个逻辑的图形化用户界面的结构.

MVC最开始是用于桌面程序当中, M指的是业务模型, V指的是用户界面, C指的是控制器. 使用MVC设计模式的目的是 在桌面应用程序软件将MV分离, 之前的设计模式都是, 将数据从数据库中取出之后直接开始渲染界面, 如果中间加上Controller层, 我们可以让Model只负责和数据库进行交互操作, Controller负责处理数据 这样可以实现较多的代码复用, 减少代码冗余和降低耦合性.

提高开发速度, 采用并发开发的模式, 在不依赖业务逻辑的情况下专注于视图设计. 反之亦然.


框架和设计模式的区别

框架和设计模式混淆, 认为MVC是一种设计模式. 实际上框架和设计模式是完全不同的概念.

框架: Spring(MVC),Django(MTV).
设计模式: 工厂模式,适配器模式,策略模式.

框架注重的是代码重用, 而设计模式注重的是设计重用, 架构介于两者之间,部分代码重用,部分设计重用,有时分析也可以重用. 在软件生产中有三种级别的重用: 内部重用,即在同一应用中能为公共使用的抽象块; 代码重用: 即将通用模块组合成库或者工具集, 以便在多个领域和应用都能使用;应用框架的重用,即为专业领域提供通用的或者现成的基础结构, 以获得最高级别的重用性.

框架和设计模式虽然相似, 但是却有最根本的区别. 设计模式是在某种特定的环境中反复出现的问题以及解决该问题的方案的描述, 它比框架更加的抽象; 框架可以用代码表示, 也能直接执行或者复用, 而对设计模式而言只有实例才能用代码表示, 设计模式是比框架更小的元素, 一个框架中含有一个或者多个设计模式, 框架总是针对某一个特定领域,但设计模式却可以针对各种应用领域.可以说框架是软件,设计模式是软件的知识.

框架是大智慧, 用来对软件设计进行分工. 设计模式是小技巧, 对具体的问题提出具体的解决方案, 提高代码的复用率降低耦合度.  


所有的设计模式和架构, 基本上都是为了高内聚低耦合,提高开发速度之用.


站长推荐

1.云服务推荐: 国内主流云服务商/虚拟空间,各类云产品的最新活动,优惠券领取。领取地址:阿里云腾讯云硅云

链接: https://www.fly63.com/article/detial/5529

微内核架构在大型前端系统中的应用

架构和框架是独立的,本文仅仅是提出一种架构思路,而且这个架构也在百度的某款用户量很大的复杂前端产品中得以应用。基于这一套弹性架构并结合Vue/React的现代化开发理念,可以很好的完成高复杂度的前端系统。

怎么判定web前端架构师的能力高低?

软件架构(software architecture)是一系列相关的抽象模式,用于指导大型软件系统各个方面的设计。传统软件架构描述的对象是直接构成系统的抽象组件,侧重于系统的抽象、拆分、组织方式等

成为一个顶尖架构师

架构师的一个重要职责是,确保团队有共同的技术愿景,以帮助我们向客户交付他们想要的系统。在某些场景下,架构师只需要和一个团队一起工作,这时他们等同于技术引领者。在其他情况下,他们要对整个项目的技术愿景负责,通常需要协调多个团队之间,甚至是整个组织内的工作。

C/S和B/S两种架构区别与优缺点分析

C/S 架构是一种典型的两层架构,其全程是Client/Server,即客户端服务器端架构,其客户端包含一个或多个在用户的电脑上运行的程序,而服务器端有两种,一种是数据库服务器端,客户端通过数据库连接访问服务器端的数据

架构/构建高可用的网站

目的为保证服务器硬件故障时依然可用,数据依然保持并能够访问,手段:数据和服务的冗余备份以及失效转移机制,有状态 :在服务端保留之前的请求信息,用以处理当前请求(例如:session)无状态 :没有特殊状态的服务

大型web系统架构详解

动态应用,是相对于网站静态内容而言,是指以c/c++、php、Java、perl、.net等服务器端语言开发的网络应用软件,比如论坛、网络相册、交友、BLOG等常见应用。动态应用系统通常与数据库系统、缓存系统、分布式存储系统等密不可分。

Netflix:我们为什么要将GraphQL引入前端架构?

在这篇文章中,我们将分享 Netflix 在这些应用程序的前端架构中引入 GraphQL 所积累的经验。在内部,我们把用于管理广告创建和组装的主要应用程序叫作 Monet。它用于增强广告的创建以及自动管理外部广告平台上的营销广告活动。

讲讲亿级PV的负载均衡架构

本来没想写这个题材的,为了某某童鞋能够更好的茁壮成长,临时写一篇负载均衡的。负载均衡,大家可能听过什么3层负载均衡、4层负载均衡、7层负载均衡什么的?那这是怎么分的呢,ok,是根据osi七层网络模型来分的,例如nginx是工作在应用层

朱晔的互联网架构实践心得:品味Kubernetes的设计理念

Kubernetes(k8s)是一款开源的优秀的容器编排调度系统,其本身也是一款分布式应用程序。虽然本系列文章讨论的是互联网架构,但是k8s的一些设计理念非常值得深思和借鉴,本人并非运维专家,本文尝试从自己看到的一些k8s的架构理念结合自己的理解来分析 k8s在稳定性

大型网站核心架构要素

一般来说,除了当前的系统功能需求外,软件架构还需要关注性能、可用性、伸缩性、扩展性和安全性这5个架构要素。性能是网站的一个重要指标,任何软件架构设计档案都必须考虑可能会带来的性能问题。

点击更多...

内容以共享、参考、研究为目的,不存在任何商业目的。其版权属原作者所有,如有侵权或违规,请与小编联系!情况属实本人将予以删除!