[转载]Spb内部资料:为什么选择mvc? – SPB代言人 – Spacebuilder.
前言
本资料是2008年7月份左右我们筹划开发Spacebuilder V2.0之前进行的调研,详细的分析了Spacebuilder的问题,以及分析了为什么选择mvc,在后续的文章中我们会继续放出内部在使用mvc开发 SPB 2.0中遇到和解决的问题,以及mvc为Spacebuilder所带来的改变。
一、SPB表现层当前存在的问题
1.表现层整体运行效率低
由于全部采用的自定义控件,是靠在运行时动态加载skin文件实现换肤的,导致以下性能问题:
*动态加载skin导致全部采用FindControl方式导致浪费很多服务器资源;
*在加载skin文件时首先都要检查文件是否存在,也浪费了服务器资源;
*不利于前端优化,当前不好控制css、JavaScript的链接位置及JavaScript的执行位置;
*即便很多功能不依靠ViewState但是为了减小页面大小还需要对ViewState进行处理;
2.ajax效率低
当前spb的ajax主要使用的是ASP.NET ajax的UpdatePanel,使用UpdatePanel并不是真正的ajax解决办法,其实只是一个防止页面刷新的障眼法而已,页面的传输流量没 有减少而且会经历完整的页面生命周期。
3.url rewrite不够灵活
*当前实现二级域名形式(http://mazq.spacebuilder.cn)url rewrite,要借助外部工具;
*无法重写实现类似目录的url重写,例如:http://spacebuilder.cn/mazq/blog/2008/8/10/19
4.SEO困难
*css、js文件的链接及加载位置难以控制,页面内容不利于SEO;
*当前url rewrite规则不利于SEO;
二、WebForm与MVC比较
1.WebForm与MVC表现层模式比较
View不能重用
P与V关系密切
View可以完全交给界面设计人员
View可以重用
C与V关系不紧密
View完全交给界面设计人员有一定难度
2.WebForm优缺点分析
优点:快速上手、快速开发、强大的扩展机制
缺点:复杂的引擎、对于开发高性能的站点反而降低开发效率(解决ViewState、控件ID、换肤功能、SEO)
3.ASP.NET mvc优缺点分析
优点:
原生态url routing,便于url rewrite
Control与View完全分离,利于换肤且没有性能损失
便于对输出的html做完全的控制,利于精简代码及SEO
表现层的性能可以优化到极致
应用asp.net的master及去除控件的运行时特性,使用vs开发时将可以使用设计视图
缺点:
开发人员需要花时间熟悉这个新技术
现有代码移植到mvc需要一定时间
开发人员需要熟悉html以及css、JavaScript
开发人员需要摆脱在WebForm开发时对服务器控件种种依赖
三、ASP.NET MVC介绍
1.mvc运行图
2.mvc详细请求流程
(1)用户发起一个url请求
(2)ASP.NET MVC framework通过url roueing rules找到一个处理该请求的Controller及Action
(3)Controller调用Model加载View需要的数据
(4)Model从数据库获取数据
(5)Controller把从Model取出的数据传输到View,然后由View负责对外呈现
四.使用mvc注意事项
1.aspx、ascx、master依然可用,但是不再有postback模型,亦不会有页面生命周期及ViewState;
2.ASP.NET MVC框架将完全支持象forms/windows身份认证,URL授权,成员/角色,输出和数据缓存,session/profile状态管理,健康检 测,配置系统,以及provider架构等现有的ASP.NET特性;
3.SBContext将不复存在;
4.XxxUrls Url集中管理类将不复存在;
5.所有依赖ViewState的控件将重新考虑设计或直接去除;
6.ResourceManager及相关控件需要调整