ASP.NET MVC模式 温习(二) 问题的诞生

  初始MVC的问都想问:啥子事MVC哦?其实一般的人都能回答:MVC就是“模型”、“视图”、“控制器”。如果能再加上一张图(如下),那就堪称完美了。

  当初我会下意识的点点头,其实心里啥子都不知道,只知道三个字母分别对应了三种意思。现在想想,觉得当初还是蛮可爱的。从上图,我们至少可以看出两点:

  第一、MVC模式由模型、视图和控制器三个组件组成。

  第二、这三个组件之间存在通信行为。(如果是高手可能还可以看出上图的通信方式,但是我看见了还是以脑袋的浆糊,不知所以。)

  通过解释和图片,看出了两点,或许皮毛都没沾上。但是,细想之下,一定能提出很多疑问:

  第一、MVC模式有Model、View和Controller三组件组成,那么着三个组件到底是如何组织、数据结构如何呢?

  第二、Model、View、Controller三者之间能够进行通信,那么他们通信的方式和手段是什么呢?

  第三、Model、View、Controller三者之间能够进行通信,通信必然存在信息载体(比如A想告诉B一件事情,可以通过电子邮件、电话等信息载体一样。Web开发中比较常见的如HTTP包。),那么他们通信的载体是什么呢?

  第四、Model、View、Controller三者之间能够进行通信,如何保证通信的安全呢?(比如客户端进行一次用户数据提交,Http包作为信息载体,包含了客户端想要告诉服务器的关键信息,如果被黑客盗取,他们就会干一些对我们网站很不利的事情。)

  第五、MVC口口声声说是要解耦表现和业务逻辑。如何解耦呢?提到这里,不得不想起依赖倒置原则(具体依赖抽象,抽象不依赖于具体实现),依赖注入(依赖倒置的实现,我比较常用构造注入和setter注入)和IOC容器(牛人开发的依赖注入中间件)等。ASP.NET MVC能不能对依赖注入和IOC容器进行很好的支持呢?

  第六、在前面一篇文章说道“ASP.NET MVC更容易进行单元测试,有利于“测试驱动开发”(OOT)”,那么它是如何实现的呢?能为我们带来什么好处呢?

  第七、在Web开发的过程中,经常用到Javascript、Json、Jquery等脚本,ASP.NET MVC又是否对其有很好的支持呢?

  第八、ASP.NETMVC如何发布和部署呢?(比如对IIS的支持、配置等等。声明:这方面我不是很了解)

  ....

  不想不知道,一想吓一跳。突然觉得面前摆着一座大山,云里雾里,不知所踪。一下就有了想退缩的想法。不过还是想网上找一篇ASP.NET MVC的教程(Hello World)进行下门练习吧。( 推荐:http://www.asp.net/mvc/tutorials/getting-started-with-aspnet-mvc3/cs/intro-to-aspnet-mvc-3

  入门之后,可以让我们稍稍体会几点:

  第一,程序确实又三组件组成,并且Controller中包含很多Action,View包含很多Html Helper方法和Html标签,Model中包含主要的业务逻辑类和接口。

  

  第二、三组之间的通信由路由系统转发。

  或许任何做ASP.NET的人看到这个都会觉得很兴奋。这是View和Controller之间通信的结果。当View向Controller请求内容的时候,数据回由路由系统转发给相应的Controller,Controller中的Action负责接收和处理。这应该就是通信方式了(假设)。路由转发代码如下:

  第三,Controller和View是以名称匹配的形式来进行映射的(第一次看到这个,还是觉得有点悬,不过这样确实省略了大量的XML配置)。且每次View向Controller发送数据时,都是通过定位Html.XXX来定位的并且有时候还会跟上一个参数对象,Controller都向View放回一个ActionResult。这应该就是信息载体了(假设)。

  

  

  入门练习完成,相当于找到学习的突破口。接下来,在慢慢的分析和学习,解决心中的各种疑问。

原文地址:https://www.cnblogs.com/tangmingjun/p/2496461.html