回《【开源】EFW框架系列文章索引》 javascript
EFW框架源代码下载V1.3:http://pan.baidu.com/s/1c0dADO0
html
EFW框架实例源代码下载:http://pan.baidu.com/s/1eQCc69Gjava
本身也经历了一些Web项目,但对MVC的理解仍是比较片面的,那就讲解一下我认识MVC的经历,这样没有理论教导,只有一些学习的引导以及感悟吧;在现实项目中可能更注重开发效率与成果,因此对新的技术或理论都是比较保守的,也跟所在的行业是个比较保守的行业有关吧;其实本身对业务架构清晰,代码结构整洁仍是比较关心的,因此对一些好的技术理论也是有所关注;web
1.asp时代
最先接触Web开发是用Asp作网站开发,就是在html标签中嵌入asp脚本代码,数据库也通常用的Access,固然程序功能也没那么复杂无非就那么几个栏目,首页、公司简介、产品、联系咱们、留言板等;虽然功能简单可是一些代码复用仍是想了一些办法,好比把链接数据库的代码单独一个conn.asp文件,还有用户验证、页眉、页脚等,那时候通常都是用文件引用的方式来复用代码;多年没接触asp,偶然去看了些流行的CMS代码,根本看不懂了,那么多代码文件没有一个是html文件,基本都是动态生成的吧,index.asp打开也是一堆的脚本;能写出这些代码或看懂代码的人怎么也是技术牛人吧,但如我这般的人仍是占大多数吧,怎么也是一个结构简单明了,代码清晰整洁的框架更适合咱们吧。数据库
2.donet桌面程序时代
后来进入行业软件公司用.net作桌面程序,那时候仍是用vs2003开发,系统为两层结构,客户端直连数据库,操做数据库的代码都是直接写在界面代码中的,就这样上千个客户端同时使用也是挺正常的;一些重复的功能通常都是封装成业务控件,使用的时候很方便把控件拖进去就好了,还有一些经常使用的基础数据就封装成公共的类库;设计模式
如今想来这种方法仍是有不少优势的:架构
1.首先就是上手快,一个.Net新手立刻就能修改程序bug,框架
2.查找问题维护也比较方便,由于结构简单根据界面上的操做按钮一步步就能够找到问题代码修正就行,也不会说对其余功能会有影响;学习
同时缺点也是很突出的:网站
1.随着业务功能愈来愈复杂,代码变得愈来愈难控制,程序中有几个复杂的界面,一个文件代码的行数就达到1万以上,后来增长一个新功能变得愈来愈痛苦;
2.程序代码的移植性不好,随着业务的扩展须要开发一些新的模块,而新模块的大部分功能在老模块中都有的,如今要把这些功能代码剥离出来是很痛苦的,千丝万缕,真是斩不断理还乱;
3.三层架构时代
在这些优势与缺点的磨练中,平时也就寻找一些解决办法,得整理出一种结合二者的开发模式;三层架构、MVC、ORM、AOP、面向对象、设计模式等都想利用起来,固然中间的一些技术仍是挺复杂,如MVC、设计模式的理论,NHibernate的配置都是苦学无果,不过最后本身仍是整出个简易的开发框架,固然三层架构和面向对象是少不了的,ORM本身弄了个单表操做,设计模式用了个工厂模式;恰好也有一个不大不小的项目须要从新开发,既然带队就得把新的开发模式给使用起来吧,幸亏团队成员也都是很是支持使用新的,通过几个月的努力奋斗系统终于也给弄出来了,开发过程当中有喜也有忧,喜的是这种新的开发模式用起来仍是比较顺手的,写出来的代码也比之前好看,忧的是你们对面向对象的思想理解不一致或存在误差,致使对象比较多,有些还不三不四;不过想一想不也是有个过程的,不还有重构这一条路吗。后来系统上线时候,后面的人员接收维护也都以为比之前代码好,那是真的开心。
4.ExtJs+AspX
真正发挥这个框架的做用还在后面,有新的客户为了后期维护方便须要系统是B/S架构的,那么须要将现有C/S的程序改为B/S的,通过你们评估仍是可行的,既然系统是用三层架构开发的,逻辑层已经分离了,那么只要把Winform界面替换成Web界面就好了,工做量仍是比较小的;这样又开始了新一轮的征战,界面框架最后定了ExtJs,由于另外一个部门就是用的ExtJs+Java开发的系统,为了减小技术的风险最后就定了ExtJs,最后发现这玩意是一个错误的选择,ExtJs太复杂了像咱们这些新手根本一下掌握不了;最后搭建成B/S的框架是这样的,ExtJs+AspX,ExtJS界面开发,aspx调用后台逻辑层进行数据转换输出;虽然大部分人都是第一次作web系统,但仍是跌跌撞撞的作出来了,后面的维护确实仍是挺头痛,特别是Extjs作的界面那部分,一个js文件也是老长,javascript原本调试起来就不方便,维护就更困难了;后来也看了人家java部门的代码,对比起来,人家的确实仍是清晰好看多了,通过一番分析多是两方面问题:
一是、咱们这边第一次接触JS代码编写因此不免写法不是很规范,对里面的控件封装使用都不熟练。
二是、咱们的界面功能确实比那边的要复杂,由于咱们都是把Winform的界面照搬用Extjs实现的,一些用Winform很容易实现的功能用Web方式就很是麻烦,没有作深层次的分析转换,因此Js代码变得很难维护是再所不免的;
5.JqueryEasyUI+HTTPHandler+Controller
通过了上面的经验教训,既然ExtJS这么难学就找个容易学的,就换成了JqueryEasyUI,Aspx作数据处理太浪费了,想把cs代码移到独立一个类库中去,后来就发现了ashx,再后来使用HTTPHandler把http请求彻底分离,并扩展出了WebController统一进行数据的处理;最后框架就变成了现在这样,JqueryEasyUI+HTTPHandler+Controller。后来用这个框架进行了几个Web系统的开发,效果都不错,特别是学习成本与开发效率都是很突出的;
为了适用各类状况,对框架又作了一些扩展,好比:进行手机网站开发,界面框架换成JqueryMobile,那后台Controller也扩展出支持JqueryMobile的数据处理控制器;后来又加入了更多的界面框架和控制器,ExtJS、QUI、JqueryUI等;
随着框架的愈来愈完善,反过来想这种开发模式仍是比较相似MVC模式的,想着之后给新人讲解开发模式的时候也有个理论依据,因此拿出来探讨一下,对比其余的MVC框架,总结出优缺点与适合的场景。