MVC的秘密

Posted 码农沉思录

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MVC的秘密相关的知识,希望对你有一定的参考价值。

ASP.NET MVC


MVC到现在为止应该有很多年的历史了,在学校学习asp.netMVC的时候我理解MVC包括三层,视图(View)、控制器(Controller)、数据模型(Model)。

  1. 控制器链接视图层和数据模型层

  2. 数据模型层用来对数据库中进行建模操作以及一些存储过程的存放

  3. 视图负责呈现用户界面,不管它是html还是桌面应用程序上的UI小部件,该视图与模型交互通信,该模型包含视图需要显示的所有数据。视图通常就没有太多的逻辑,当然他也可能只是一个纯的HTML.


SpringMVC


后面了解到了Java以后了解了SpringMVC,与 ASP.NET 不同,Spring MVC 对于 MVC 架构模式的实现就更加复杂了,增加了一个用于分发请求、管理视图的 DispatchServlet,新增这个小工具继承了FrameworkServlet。


  1. 通过 DispatchServlet 将控制器层和视图层完全解耦;

  2. 视图层和模型层之间没有直接关系,只有间接关系,通过控制器对模型进行查询、返回给 DispatchServlet 后再传递至视图层;


Java最开始的MVC结构


Jsp+servlet+javaBean,以控制为核心,jsp只负责显示和收集数据,Servlet,连接视图和模型,

将视图层数据,发送给模型层,javaBean,分为业务类和数据实体,业务类处理业务数据,数据实体,承载数据,5年前基本上大多数的项目都是使用这种mvc的实现模式,不得不说现在很多工程上还是用Servlet因为历史原因,当然还有很多大厂也是用的ASP.netMVC在其上面做二次开发然后形成自己产品的开发框架,当然spring全家桶系列也很多。


我理解纯净版的MVC设计

一共包含三个部分,模型,视图、控制器

模型对象

模型对象封装了特定于应用程序的数据,并定义了处理和处理该数据的逻辑和计算。例如,模型对象可能代表游戏中的角色或地址簿中的联系人。一个模型对象可以与其他模型对象具有一对多关系,因此有时应用程序的模型层实际上是一个或多个对象图。在将数据加载到应用程序后,属于应用程序持久状态的大部分数据(无论该持久状态存储在文件还是数据库中)都应驻留在模型对象中。因为模型对象代表与特定问题领域相关的知识和专长,所以它们可以在相似的问题领域中重用。
通信:用户操作通过控制器对象进行通信视图层中创建或修改数据,并导致创建或更新模型对象。当模型对象发生更改时(例如,通过网络连接接收到新数据),它将通知控制器对象,该控制器对象将更新相应的视图对象。

查看物件

视图对象是用户可以看到的应用程序中的对象。视图对象知道如何绘制自身,并且可以响应用户的操作。视图对象的主要目的是显示来自应用程序模型对象的数据并启用该数据的编辑。尽管如此,视图对象通常在MVC应用程序中与模型对象分离。
因为您通常会重用和重新配置它们,所以视图对象可在应用程序之间提供一致性。
通信:视图对象通过应用程序的控制器对象了解模型数据的变化,并通过控制器对象将用户启动的更改(例如,在文本字段中输入的文本)通过控制器对象传递给应用程序的模型对象。

控制器对象

控制器对象充当一个或多个应用程序的视图对象与其一个或多个模型对象之间的中介。因此,控制器对象是一个通道,视图对象通过该通道了解模型对象的变化,反之亦然。控制器对象还可以为应用程序执行设置和协调任务,并管理其他对象的生命周期。
通信:控制器对象解释在视图对象中进行的用户操作,并将新的或更改的数据传递到模型层。当模型对象更改时,控制器对象会将新的模型数据传达给视图对象,以便它们可以显示它。


结尾

其实感觉微软的asp.net MVC结构是最容易让人理解的,而且操作也很简单只需要在VS中创建一个MVC的项目就可以快速体验到,而且结构很清晰,如果大家想了解思想的话可以尝试入手下asp.net MVC。


历史文章


今天没图喜欢的点个再看呦

以上是关于MVC的秘密的主要内容,如果未能解决你的问题,请参考以下文章

安全多方计算之六:秘密共享

安全多方计算之六:秘密共享

如何通过yaml将秘密文件设置为kubernetes秘密?

关于手机QQ-好友的秘密 发送秘密者的位置信息获取

地形 |秘密经理 |重复使用现有的秘密而不删除

terraform 从 gcp 秘密创建 k8s 秘密