MVC3+EF4.1 构建高性能可伸缩的应用系统之二(进一步优化程序框架)

首页 | 新闻 | 交流 | 问吧 | 文档 | 手册 | 下载 | 博客

MVC3+EF4.1 构建高性能可伸缩的应用系统之二(进一步优化程序框架)

作者:  时间: 2011-06-05

MVC3+EF4.1 Web 应用程序已经是单页面框架结构,性能已经很优秀,我们的目的是打造优秀中的精品软件,所以,性能优化还是需要的。

我们从以下几个方面考虑构建系统:

二、进一步优化程序框架

01)CSS Spirits 合并小图标为一张大图,背景+定位+限制大小,显示小图标。

        很多人合并小图的第一个目的就是:工具栏图标至少十几个,合并后使用一张大图,效率会提高一些。但是,尝试了很多次,基本上都是兴冲冲而去,垂头丧气放弃。为什么呢?原因就是怎么也用不上CSS Spirits,背景图不会用。

        我有一篇文章就是讲怎么用 CSS Spirits 技术应用与工具栏的,请见CSDN技术专栏:MVC3 基本业务开发框架 0.6.20110530版本 更新日志(添加日期时间选择+带条件查询翻页+下拉工具栏)

        原理就是:<a><span><img/>按钮文本</span>< /a>,图像和文本构成按钮整体,图片首先加载一张透明前景图,用合并大图作为图像的背景图(带图案),穿透了透明的前景图,显示给用户看起来就是一张小图。

        CSS Spirits 技术还可以用于许多地方:编辑窗口的按钮图标,主界面的图片背景等。

02)压缩 CSS 和 JS 脚本

        如果你用过在线压缩 CSS 和 JS 脚本的工具,也就不难理解和找到许多这样的资源,充分利用吧,节省你的带宽。

        这里,提供一个建议: 使用记事本,把 jquery.min.js 和 jquery-ui.min.js 内容先后复制进去,手动删除换行,压缩为一行,这个合并后的文件命名:jquery-1.6.1-ui-1.9m5.min.js,用合适的工具压缩后命名:jquery-1.6.1-ui-1.9m5-min.js,应用到你的发布版本的程序中,两次请求=〉一次请求,是不是很好呢?如果你用的 jquery-ui-custom 自定义版本,字节数就更少了。

        如果压缩JS文件,发现不能正常运行了,那么,可以很明确的告诉你:这个JS文件编写不规范,最大可能是行尾缺少“;”造成的! 不相信,你可以试试!百试百灵。我曾经在一个5-6千行的代码里面找到了几个“省略”的分号,添加上,再压缩,一次成功。

        closure_packer_yui_compiler 压缩 JS 文件很准确,建议使用用来压缩JS。

        有些CSS的压缩之后会破坏语法结构,造成不正常显示,必须小心!

03)优先使用分部视图+AJAX显示内容

        如果一个网格包含工具栏,需要一些CSS+JS文件引用,那么建议:包含文件用分部视图,写入layout布局的header;工具栏提取为分部视图,便于将来调整;分页提取为分部视图,翻页时更新数据。

        建议使用弹出页面编辑模式,用$.ajax请求控制器,用jQuery UI Dialog显示AJAX内容,数据量很小,显示速度极快。我做了三种框架:EXTJS、jQuery EasyUI、MVC3,MVC3的单页面模式执行速度 >= jQuery EasyUI,占用内存最小,而且兼容IE 9,性能非常优秀。强烈建议程序员从 WebForm 网站程序 转到 MVC3 应用程序 中来,这是发展的趋势。

04)优先使用 linq+ORM

        数据驱动的程序,都是把数据库作为主要的业务来处理的。模型驱动的程序,是用面向对象的角度思考解决问题。

        ORM的实现方法和工具有很多,博客园有段时间都在口水战:NHibernate 和 EntityFramework 孰优孰劣?我们不管孰优孰劣,谁的性能最高,只要是适合够用的就是好。建议采用 EF4.1 Code First,其实就是代码优先的模型驱动。简单易用,非常适合MVC3 应用程序,都是微软一家子的东西,文档、实例一个都不少。

        恐怕就需要我们一些同学转变思维方式:数据驱动=〉模型驱动=〉领域驱动。

        linq 访问 DbContext,代码非常简洁,用过的人才知道。

        要想讲清楚 怎么用好 linq+ORM,又是一个很庞杂的问题,展开来不是一篇或者几篇文字描述清楚的,这里干脆不讲了。

(未完待续)