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

二十七(序幕)、【开源】EFW框架破茧成蝶的更多相关文章

  1. 华为云BigData Pro解读: 鲲鹏云容器助力大数据破茧成蝶

    华为云鲲鹏云容器 见证BigData Pro蝶变之旅大数据之路顺应人类科技的进步而诞生,一直顺风顺水,不到20年时间,已渗透到社会生产和人们生活的方方面面,.然而,伴随着信息量的指数级增长,大数据也开 ...

  2. 【开源EFW框架】框架中自定义控件GridBoxCard使用实例说明

    回<[开源]EFW框架系列文章索引>        EFW框架源代码下载V1.3:http://pan.baidu.com/s/1c0dADO0 EFW框架实例源代码下载:http://p ...

  3. 公司管理系列--Facebook 如何化茧成蝶[转]

    拒绝传统,看 Facebook 如何以三大法宝化茧成蝶:人才吸引.工程师文化和项目开发流程   我将结合之前在Facebook的四年工作经验,介绍Facebook创新的管理方法以及整个工程文化形成的方 ...

  4. 二十九、EFW框架开发的系统支持SaaS模式和实现思路

    回<[开源]EFW框架系列文章索引>        EFW框架源代码下载V1.3:http://pan.baidu.com/s/1c0dADO0 EFW框架实例源代码下载:http://p ...

  5. Unity3D学习笔记(二十七):MVC框架下的背包系统(2)

    Tools FileTools using System.Collections; using System.Collections.Generic; using UnityEngine; using ...

  6. 化茧成蝶,开源NetWorkSocket通讯组件

    前言 前后历时三年,期间大量参考.Net Framework和Asp.net MVC源代码,写写删删再重构,组件如今更新到V1.5.x了.从原来的丑小鸭,变成今天拥有稳定和强大的tcp协议支持基础层, ...

  7. 二十七、EFW框架BS系统开发中的MVC模式探讨

    回<[开源]EFW框架系列文章索引>        EFW框架源代码下载V1.3:http://pan.baidu.com/s/1c0dADO0 EFW框架实例源代码下载:http://p ...

  8. 【开源】EFW框架系列文章索引

    开源轻量级.Net框架EnterpriseFrameWork详解 ——自己动手写框架 ——适合中小企业的开发框架 ——Ajax+JqueryEasyUI+NotNetBar+MVC+WebServic ...

  9. 二十六、【开源框架】EFW框架Winform前端开发之Grid++Report报表、条形码、Excel导出、图表控件

    回<[开源]EFW框架系列文章索引>        EFW框架源代码下载V1.2:http://pan.baidu.com/s/1hcnuA EFW框架实例源代码下载:http://pan ...

随机推荐

  1. httpwebrequest 请求压缩,接受压缩的字符流请求

    请看图,客户端和服务端都使用gzip压缩. 客户端参数以json字符串形式gzip压缩,以二进制流发送到服务端:服务端接收到请求,解压缩gzip后,进行业务逻辑处理:处理完后在将返回值以json形式, ...

  2. Atitit.人力资源管理原理与概论

    Atitit.人力资源管理原理与概论 1. 人力资源管理 第一章 人力资源管理概述 第二章 人力资源理论基础与发展演变 第三章 人力资源规划 第四章工作分析与工作设计 第五章 员工招聘与录用 第六章 ...

  3. paip. java的 函数式编程 大法

    paip. java的 函数式编程 大法 Java 语言中常被忽视的一个方面是它被归类为一种命令式(imperative)编程语言.命令式编程虽然由于与 Java 语言的关联而相当普及,但是并不是惟一 ...

  4. paip.环境配置整合 ibatis mybatis proxool

    paip.环境配置整合 ibatis mybatis proxool  索引: ///////////1.调用 ///////////////2. ibatis 主设置文件  com/mijie/ho ...

  5. paip.执行shell cmd 命令uapi java php python总结

    paip.执行shell cmd 命令uapi java php python总结 作者Attilax  艾龙,  EMAIL:1466519819@qq.com 来源:attilax的专栏 地址:h ...

  6. webview长按事件js监听

    做app开发时,用到了webview,需要监听webview的长按事件,使用原生的js处理监听如下: ; //定时器 //开始按 function gtouchstart() { timeOutEve ...

  7. Visitor模式,Decorator模式,Extension Object模式

    Modem结构 Visitor模式 对于被访问(Modem)层次结构中的每一个派生类,访问者(Visitor)层次中都有一个对应的方法. 从派生类到方法的90度旋转. 新增类似的Windows配置函数 ...

  8. CSS3参考手册

    很好用的CSS3 API http://www.css88.com/book/css/

  9. QQ邮箱的安全问题

    下午同事群里有人提醒,小心欺诈邮件.邮件内容为你的帐户在XX存在异地登录,已经进入了[保护模式],如需解除请点击[解除保护模式] 除了链接之外,其它跟官方的是一模一样,包括标题. 那个链接的地址是:h ...

  10. linux环境内存分配原理 mallocinfo

    Linux的虚拟内存管理有几个关键概念: Linux 虚拟地址空间如何分布?malloc和free是如何分配和释放内存?如何查看堆内内存的碎片情况?既然堆内内存brk和sbrk不能直接释放,为什么不全 ...