ASP.NET MVC的原理,其实就是使用HttpModule和HttpHandler将用户的请求拦截,按照设定的路由规则解释到相应的控制器和Action,加以执行。Module是一个比较宏观一点的概念,像Session、Cache都由相应的Module负责;而Handler就是负责处理具体请求的。先有Module,再有Handler。它们的关系,有点像进程和线程。

MVC是一种思想。ASP.NET MVC只不过是实现了这种思想的一种开发框架。利用Web Form项目,其实也可以实现MVC。以前搞WEB FORM,我就试过MVP模式。

MVC的思想要点的在于将UI和业务逻辑、数据分离。好处一是逻辑清晰,二是有利于逻辑重用和测试。因为UI很难自动化测试,但逻辑却可以。所以说,ASP.NET MVC有利于进行单元测试。并且UI与逻辑、数据分离以后,也容易重用。比如说,在ASP.NET MVC中,不同的action可以指向同一个view。

经典的MVC中,Model是个巨无霸,包含业务逻辑和数据。controller只是一个中间人,在View和Model之间传递点什么,打打酱油。有时候,Model和View甚至直接联系,绕开了controller。

而在ASP.NET MVC中,虽然有一个Model,但此Model并非彼巨无霸Model。ASP.NET MVC中的Model,是一个跟视图有关的Model,也就是传说中的那个VM,ViewModel,它只是经典巨无霸Model的一部分。ViewModel,顾名思义,主要用于View。经典巨无霸Model,被拆分成了数据(ViewModel、领域对象、数据库实体类 )+ 业务逻辑(BLL ,各种Service)。因此,Model只不过是一群概念的集合,并不是一个实实在在的对象。

值得一提的是,ViewModel、领域对象、数据库实体类很有可能是同一个对象。比如说,我们在View里直接操作的VM,其实常常就是将数据持久层的实体类直接拿过来用的。即便如此,但在软件设计阶段,还是要将它们的概念区分开。

最新文章

  1. 第十六篇:SWindow的布局属性pos2type及offset
  2. js/jquery 回调函数的定义方法
  3. 缓存篇(Cache)~第二回 使用static静态成员实现服务器端缓存(导航面包屑)~续
  4. VirtualBox中安装CentOS-6.6虚拟机
  5. 在自定义的UINavigationController中设置背景图片
  6. 06---Net基础加强
  7. zoj 1199 几何公式推导
  8. 如何重装air
  9. Mysql 中 like 查询存在反斜杠的解决办法
  10. 网站访问架构cdn与负载均衡
  11. jsp页面使用javascript添加页面元素示例代码
  12. 300元差价选谁好 魅蓝note对比魅蓝手机
  13. IIC 概述之24c系列存储器内存分析
  14. 解决Mac OS Adobe Flash Builder 4.7 java heap space 问题【转】
  15. redhat 时区修改
  16. android视频播放器系列(一)——系统播放器
  17. UOJ #269. 【清华集训2016】如何优雅地求和
  18. Pycharm 自定义文件模板
  19. 可参数化的带优先级的数据选择器的FPGA实现方式探讨
  20. python paramiko ssh登录交换机执行命令

热门文章

  1. 开源Asp.Net MVC网上商城BrnShop
  2. SpringMVC数据绑定
  3. c#中运行时编译时 多态
  4. keepalive学习
  5. .NET里的行为驱动开发
  6. Arduino VS. Raspberry Pi VS. Beaglebone Black
  7. mac在线恢复教程
  8. 实现Launcher编辑模式(1) 壁纸更换
  9. MongoDB学习(翻译7)
  10. 设置启动MyEclipse8.5的时候选择工作区间