软件架构--MVC介绍(垂直应用架构)
软件架构--MVC介绍(垂直应用架构)
- 1 介绍
- 2 示例
- 3 优势
- 4 缺点
- 参考
1 介绍
MVC(视图/模型结构)把数据和视图组件分离,这使得我们可以在几个不同的试图组件中显示相同的数据,并且实现新类型的视图,并且不改变底层的数据结构。也可以根据控制响应的不同命令,在同一个组件区创建不同的视图样式,来加载不同的输入数据。为了更灵活的对用户输入进行处理,引入了delegate这个概念。它的好处是,数据项的渲染与编程可以进行定制。
- Model:model管理数据,负责数据的请求和更新
- View:向用户展示数据
- Controller:处理Model和View之间的交互。负责为View提供正确的数据,为Model提供来自View的操作请求。
该模式降低耦合,多个View可以显示同一数据,View层不用担心数据层Model发生变化。
2 示例
3 优势
- 技术单一、学习成本低
- 开发上手快
- 测试、部署和运维简单
4 缺点
- 复杂应用的开发维护成本高,部署效率低,如全量编译和部署时长。
- 团队效率差,部分公共功能重复开发,代码重复率居高不下。
- 系统可靠性变差。随着业务的发展,访问量逐渐攀升,网络流量、负载均衡、数据库连接面临巨大压力。
- 某节点故障,其他节点流量陡增,引起“雪崩效应”。
维护和定制困难。物业代码膨胀,功能复杂,垂直架构模式下无法对复杂业务进行拆分,维护和定制都很困难。 - 新功能上线周期变长。(1)公共API变更导致测试工作量激增。公共API变动,调用者都需要测试,引入大量回归测试工作量;(2)新特性无法独立部署和交付。新功能与老功能一起编译、大包和测试,这种强耦合导致交付效率下降。
参考
1、百科–MVC框架
2、Qt 5.12–Model/View模型/视图(MVC)模式
3、《分布式服务框架原理与实践》 作者 李林峰
4、波澜壮阔的MVC发展史
软件架构--MVC介绍(垂直应用架构)相关推荐
- 读书笔记 之《软件架构设计: 大型网站技术架构与业务架构融合之道》
大家好呀,我是小菜~ 帅哥美女,知道你们时间宝贵,那么就由小菜为你读好一本书,读一本好书,取其精华,与你共享~! 本文主要分享 <软件架构设计:大型网站技术架构与业务架构融合之道> 如有需 ...
- asp.net core系列 40 Web 应用MVC 介绍与详细示例
一. MVC介绍 MVC架构模式有助于实现关注点分离.视图和控制器均依赖于模型. 但是,模型既不依赖于视图,也不依赖于控制器. 这是分离的一个关键优势. 这种分离允许模型独立于可视化展示进行构建和测试 ...
- 软件架构万字漫谈:业务架构、应用架构与云基础架构
软件架构万字漫谈:业务架构.应用架构与云基础架构 本部分节选自<软件架构设计> 软件开发就是把一个复杂的问题分解为一系列简单的问题,再把一系列简单的解决方案组合成一个复杂的解决方案.而软件 ...
- MVC设计模式、单体架构、前后端分离、微服务
萌新程序员在学习web开发时一定对单体架构.前后端分离架构.MVC.微服务这几个名词不陌生,想要搞清它们之间的关系,但互联网的信息分散杂乱,有些文章之间甚至还互相冲突. 我也迷迷糊糊,但本着刨根问底的 ...
- 2021年大数据Hadoop(二十五):YARN通俗介绍和基本架构
全网最详细的Hadoop文章系列,强烈建议收藏加关注! 后面更新文章都会列出历史文章目录,帮助大家回顾知识重点. 目录 本系列历史文章 前言 YARN通俗介绍和基本架构 Yarn通俗介绍 Yarn基本 ...
- MVC模式与三层架构的区别
MVC模式与三层架构的区别 原文地址:http://www.cnblogs.com/yourshj/p/5197310.html 之前总是混淆MVC表现模式和三层架构模式,为此记录下. 三层架构和MV ...
- MySQL第6天:MySQL的架构介绍之逻辑架构
MySQL的架构介绍之逻辑架构 #编写时间:2017.3.7 #编写地点:广州 MySQL的优势主要体现在存储引擎的架构上,它是插件式的存储引擎架构,将查询处理和其它的系统任务以及数据的存储提取分离, ...
- 单一应用架构 垂直应用架构_如何说应用架构的语言
单一应用架构 垂直应用架构 How do you begin to engineer the world's best software application? As you live in an ...
- OpenMV(一)--基础介绍与硬件架构
基础介绍与硬件架构 1. OpenMV介绍 1.1 什么是OpenMV 1.2 OpenMV与OpenCV 2. 硬件架构 2.1 OpenMV-H7 2.2 STM32H743 2.3 原理图 1. ...
最新文章
- ATS日志格式中的Squid-和Netscape-格式的缓存结果码
- 红旗Linux认证简介
- centos远程开机的操作
- 给未来元素添加事件 jquery 1.10.2 版本
- 用python实现矩阵乘法
- 网络编程应用:基于TCP协议【实现对象传输】--练习
- 解读容器 2019:把“以应用为中心”进行到底
- SpringBoot高级-检索-Elasticsearch简介安装
- python的应用论文_python 论文
- 程序员才能看懂,看到第18张终于忍不住笑喷了。
- KMP实现圆周率PI中找字串
- python.exe无法找到入口
- 【有料c++题目周刊 | 第一期】希腊诸神
- 《近代名老中医经验集》出版
- close函数 qt_QT5笔记:关闭应用程序和窗口的函数
- 通过经纬度计算两点间的直线距离
- UMA Frame Buffer Size 核显显存与CSGO帧率
- 关于浏览器账密自动填充
- 【超详细】如何从数据库取出数据,动态填充html
- Java Microbenchmark Harness (JMH)