diff --git "a/12\351\276\232\344\270\234\350\276\211/01MVC\346\246\202\350\277\260.md" "b/12\351\276\232\344\270\234\350\276\211/01MVC\346\246\202\350\277\260.md" deleted file mode 100644 index b984ff99f19233ebcee82b74649abec8a37faf30..0000000000000000000000000000000000000000 --- "a/12\351\276\232\344\270\234\350\276\211/01MVC\346\246\202\350\277\260.md" +++ /dev/null @@ -1,82 +0,0 @@ -## 如何在 vscore创建一个mvc应用 - - -**查看.net SDK版本** -```sh ->dotnet --version ->6.0.1 # 我们需要6.0的版本如果没下载则需要下载 .net SDK -``` -**什么是SDK?** -``` -.NET SDK 是一组库和工具,开发人员可用其创建 .NET 应用程序和库。 -``` -**安装.net SDK** - -[dotnetSDK下载](https://dotnet.microsoft.com/en-us/download/dotnet/thank-you/sdk-6.0.403-windows-x64-installer) - - -**创建mvc项目** -```sh -# 在文件夹打开命令行输入命令生成mvc项目 -dotnet new mvc -n [项目名] --no-https # --no-https 禁用https -``` - -## MVC概述 - -为什么要使用MVC? -``` -传统软件开发过于复杂(过于耦合),使用mvc的目的是为了解耦,现代软件开发的基本原则是:高内聚,低耦合 -``` - -mvc -- M(model)模型 -- V(view)视图 -- C(controller)控制器 -### 模型(M) -```sh -model承载数据,对用户提交的请求进行处理(处理业务逻辑) -# 一般是获得controller接受到的请求,跟数据库数据进行处理 -``` - -### 视图(V) -``` -视图,为用户提供使用界面(前端),与用户直接进行交互 -``` - -### 控制器(C) -``` -controller处理浏览器请求(接收浏览器发送的请求) -``` - -### MVC的工作流程 - -![](https://pic1.zhimg.com/80/v2-de48f3ca908ba0cea63ad171be30c3e0_720w.webp) - - -``` -1. 用户通过 view 向服务端发送请求(表单、AJAX....) - -2. 服务端controller接受请求交给model处理 - -3. model处理完后再将结果返回给controller - -4. controller收到结果再返回给View -``` - -### 三层架构 - -![](https://pic3.zhimg.com/80/v2-0c83168c2cdc260d36af7a1f2db26462_720w.webp) - -- 表示层 -- 业务逻辑层 -- 数据访问层 - -`就是将MVC的model分为业务层和持久层,业务层负责业务逻辑,持久层负责对数据库进行交互,将controller和view合并为表示层负责数据展示` - - -mvc和三层架构是从不同角度去设计的 ,但其目的都是为了解耦,分层,代码复用等等 - - - - - diff --git a/20221213_MVC.md b/20221213_MVC.md new file mode 100644 index 0000000000000000000000000000000000000000..7b5086933e787c01c76fe3f38c0fc322c31d93f5 --- /dev/null +++ b/20221213_MVC.md @@ -0,0 +1,21 @@ +# MVC +MVC即Model、View、Controller即模型、视图、控制器。我在和同行讨论技术,阅读别人的代码时发现,很多程序员倾向于将软件的业务逻辑放在Controller里,将数据库访问操作的代码放在Model里。 + + +MVC要实现的目标是将软件用户界面和业务逻辑分离以使代码可扩展性、可复用性、可维护性、灵活性加强。 + + + +View层是界面,Model层是业务逻辑,Controller层用来调度View层和Model层,将用户界面和业务逻辑合理的组织在一起,起粘合剂的效果。所以Controller中的内容能少则少,这样才能提供最大的灵活性。 + + + +比方说,有一个View会提交数据给Model进行处理以实现具体的行为,View通常不会直接提交数据给Model,它会先把数据提交给Controller,然后Controller再将数据转发给Model。假如此时程序业务逻辑的处理方式有变化,那么只需要在Controller中将原来的Model换成新实现的Model就可以了,控制器的作用就是这么简单, 用来将不同的View和不同的Model组织在一起,顺便替双方传递消息,仅此而已。 + + +这个过程描述为:控制层接收到所有程序的请求时,将数据进行过滤等处理后,再传送到模型层进行相对应的业务逻辑处理,然后模型层将处理后的数据传送到控制层(控制层是模型层与视图层的纽带),视图层再将最终结果展示出来。这里图中视图层与模型层之间的两个箭头表示:虽然视图层对数据不做处理,而是将数据直接传给控制层,但它必须保持着与模型层的数据类型的一致性,即当模型层的数据发生改变时,视图层必须随之变化。 + +归纳: +1、MVC是一种用于Web应用程序开发的设计模式,如Struts2就是基于MVC模式的。而SpringMVC 已经成为目前最主流的MVC框架之一,并且随着Spring3.0 的发布,全面超越 Struts2,成为最优秀的 MVC 框架。 +2、MVC分为三层:模型层、视图层、控制层,模型层用于后台数据保存和处理,视图层用于展示处理结果,控制层则是模型层和视图层两者之间的纽带。 +3、虽然视图层对数据不做处理,而是将数据直接传给控制层,但它必须保持着与模型层的数据类型的一致性,即当模型层的数据发生改变时,视图层必须随之变化。 \ No newline at end of file diff --git "a/20221214_MVC\345\237\272\346\234\254\346\223\215\344\275\234.md" "b/20221214_MVC\345\237\272\346\234\254\346\223\215\344\275\234.md" new file mode 100644 index 0000000000000000000000000000000000000000..37667c78f04759fe6168f2570ed939e014c0dccb --- /dev/null +++ "b/20221214_MVC\345\237\272\346\234\254\346\223\215\344\275\234.md" @@ -0,0 +1,53 @@ +## 查看.net sdk版本 +``` +dotnet --version + +.NET SDK 是一组库和工具,开发人员可用其创建 .NET 应用程序和库。 +``` + + + +## 创建mvc项目 +``` +在文件夹打开命令行输入命令生成mvc项目 +dotnet new mvc -n [项目名] --no-https # --no-https 禁用https +``` + +## 三层架构 + +三层架构(3-tier architecture) 通常意义上的三层架构就是将整个业务应用划分为:界面层[表示层](User Interface layer)、业务逻辑层(Business Logic Layer)、数据访问层(Data access layer)。 +区分层次的目的即为了“高内聚低耦合” 的思想。在软件体系架构设计中,分层式结构是最常见,也是最重要的一种结构。 + + +## 为什么使用三层 +使用三层架构的目的:解耦!!! + +同样拿上面饭店的例子来讲: + +服务员(UI层)请假——另找服务员; + +主厨(BLL层)辞职——招聘另一个主厨; + +小厨(DAL)辞职——招聘另一个小厨; + + +## 三层优缺点 +【优点】 + +开发人员可以只关注整个结构中的其中某一层; + +可维护性高,可扩展性高 + +可以降低层与层之间的依赖; + +有利于标准化; + +利于各层逻辑的复用 + +【缺点】 + +降低了系统的性能。如果不采用分层式结构,很多业务可以直接造访数据库,以此获取相应的数据,如今却必须通过中间层来完成 + +有时会导致级联的修改,这种修改尤其体现在自上而下的方向。如果在表示层中需要增加一个功能,为保证其设计符合分层式结构,可能需要在相应的业务逻辑层和数据访问层中都增加相应的代码 + +增加了开发成本 \ No newline at end of file