词条统计
浏览次数:6742 次
编辑次数:5次 历史版本
最近更新:2013/6/20
创建者:掷鸡蛋者

本文原是论坛帖子,讨论在此处:http://www.wojilu.com/Forum1/Topic/95 


第一部分:传统的web开发方式

传统的web开发,一般是先设计一个页面(用Dreamweaver或其他工具),然后再页面中嵌入服务器端脚本代码。比如 php/asp/jsp 都是这样。

下图就是这种风格的php代码(来自Joomla):



这种开发方式很容易滋生一种倾向:习惯不好的程序员,会把大量的业务逻辑代码、数据库访问代码夹杂在页面中,导致很难读懂。比如下面的php代码(来自wordpress):


所以就有一些人开发了框架,这些框架会强行规定各种类型的代码的位置。ASP.NET Web Form 也可以算作一种web开发框架。它让业务逻辑代码或数据库访问等等的代码,统一放在了 code behind(后置代码中,总体而言,你当然可以进一步分离) 中,比如如下一段页面以及它的后置代码(来自BlogEngine):


后置代码:


第二部分:mvc的开发方式

mvc的开发方式对如何放置代码,有比较规范的约定。它分成三个部分:

1、页面部分(view,又叫视图模板部分)
2、控制器部分(controller,获取数据并呈现到view中)
3、模型部分(model,领域模型,负责提供数据库或其来源的数据)

各部分的流程大体如下:


① 浏览器向服务器发送请求
② 服务器找到指定的controller;由控制器(controller)查询model,得到数据
③ 控制器(controller) 获取视图(view),并将model数据和view合并起来(途中虚线部分表示合并)
④ mvc 框架将合并的结果返回给客户端

本质上, mvc 是一种划分代码的方式,它不是架构。它让你的代码整洁有序,更有效率。

三、各类mvc框架的实现

mvc的框架有很多,比如微软的 ASP.NET mvc ,我记录(wojilu.com)的 wojilu mvc;java领域有 struts;ruby 领域有 rails 等。

各类框架总体上流程差不多,但在具体的实现细节上、以及提供的工具的丰富程度上大有区别。比如 wojilu mvc 支持 namespace,ASP.NET mvc 仅仅支持 area 等……

习惯了 mvc 的开发方式之后,会觉得其实整个流程一点都不复杂。真正复杂的,还是针对特定功能和业务的实现,调研、整理需求、设计、性能调优等等。

四、wojilu mvc 的特点

1、支持命名空间(让代码文件更加整洁易览;让页面layout和权限控制更加简单易用);
2、默认将静态文件(js/css/图片等)单独存放,可以轻松切换到二级域名(分离应用服务器和静态服务器);
3、视图逻辑和视图模板彻底分离;
4、控制器可轻松依赖注入;控制器本身也可以通过配置自定义;
5、不对 html 封装,可以让前端开发彻底工作在html和css层面,对html拥有完全控制的自由;
6、多国语言支持(i18n),并且简洁易用;
其他 mvc 框架都会带的功能,比如路由、过滤器、RESTfull风格的Url、无页面后缀名、约定优于配置的风格等都是不可缺少的;另外,对页面生命周期中各事件的扩展也提供了完善的支持。

掌握以上各特点,需要看在线教程  http://help.wojilu.com/ 。更多深入解释的文章,请关注“我记录”网站的框架讨论区: http://www.wojilu.com/Forum1/Board/3