• 二十七(序幕)、【开源】EFW框架破茧成蝶


    回《【开源】EFW框架系列文章索引》       

    EFW框架源代码下载V1.3:http://pan.baidu.com/s/1c0dADO0

    EFW框架实例源代码下载:http://pan.baidu.com/s/1eQCc69G


          自己也经历了一些Web项目,但对MVC的理解还是比较片面的,那就讲解一下我认识MVC的经历,这样没有理论教导,只有一些学习的引导以及感悟吧;在现实项目中可能更注重开发效率与成果,所以对新的技术或理论都是比较保守的,也跟所在的行业是个比较保守的行业有关吧;其实自己对业务架构清晰,代码结构整洁还是比较关心的,所以对一些好的技术理论也是有所关注;


    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框架,总结出优缺点与适合的场景。

  • 相关阅读:
    区块链系统时钟同步(NTP时间同步服务器)
    解读GPS卫星同步时钟(NTP网络时间服务器)技术方案
    qsort的cmp函数理解
    IEEE浮点数标准
    看图认识CSS
    Liunx模拟网络延时
    0-4Python2升级3、CentOS-Vim-Golang环境配置
    怎么用Windws远程桌面(mstsc)远程连接服务端的Ubuntu或者CentOS?|内网穿透|服务器安装CentOS
    [Windows]进程无响应且无法在任务管理器关闭
    [python] 批量更改不同文件夹里同名文件夹名字并移动到一起
  • 原文地址:https://www.cnblogs.com/kakake/p/4002385.html
走看看 - 开发者的网上家园