二十七(序幕)、【开源】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框架破茧成蝶的更多相关文章
- 华为云BigData Pro解读: 鲲鹏云容器助力大数据破茧成蝶
华为云鲲鹏云容器 见证BigData Pro蝶变之旅大数据之路顺应人类科技的进步而诞生,一直顺风顺水,不到20年时间,已渗透到社会生产和人们生活的方方面面,.然而,伴随着信息量的指数级增长,大数据也开 ...
- 【开源EFW框架】框架中自定义控件GridBoxCard使用实例说明
回<[开源]EFW框架系列文章索引> EFW框架源代码下载V1.3:http://pan.baidu.com/s/1c0dADO0 EFW框架实例源代码下载:http://p ...
- 公司管理系列--Facebook 如何化茧成蝶[转]
拒绝传统,看 Facebook 如何以三大法宝化茧成蝶:人才吸引.工程师文化和项目开发流程 我将结合之前在Facebook的四年工作经验,介绍Facebook创新的管理方法以及整个工程文化形成的方 ...
- 二十九、EFW框架开发的系统支持SaaS模式和实现思路
回<[开源]EFW框架系列文章索引> EFW框架源代码下载V1.3:http://pan.baidu.com/s/1c0dADO0 EFW框架实例源代码下载:http://p ...
- Unity3D学习笔记(二十七):MVC框架下的背包系统(2)
Tools FileTools using System.Collections; using System.Collections.Generic; using UnityEngine; using ...
- 化茧成蝶,开源NetWorkSocket通讯组件
前言 前后历时三年,期间大量参考.Net Framework和Asp.net MVC源代码,写写删删再重构,组件如今更新到V1.5.x了.从原来的丑小鸭,变成今天拥有稳定和强大的tcp协议支持基础层, ...
- 二十七、EFW框架BS系统开发中的MVC模式探讨
回<[开源]EFW框架系列文章索引> EFW框架源代码下载V1.3:http://pan.baidu.com/s/1c0dADO0 EFW框架实例源代码下载:http://p ...
- 【开源】EFW框架系列文章索引
开源轻量级.Net框架EnterpriseFrameWork详解 ——自己动手写框架 ——适合中小企业的开发框架 ——Ajax+JqueryEasyUI+NotNetBar+MVC+WebServic ...
- 二十六、【开源框架】EFW框架Winform前端开发之Grid++Report报表、条形码、Excel导出、图表控件
回<[开源]EFW框架系列文章索引> EFW框架源代码下载V1.2:http://pan.baidu.com/s/1hcnuA EFW框架实例源代码下载:http://pan ...
随机推荐
- inline-block使标签间出现空白
HTML Markup <ul> <li>item1</li> <li>item2</li> <li>item3</li& ...
- js关于事件
摘要:事件在Web前端领域有很重要的地位,很多重要的知识点都与事件有关.本文旨在对常用的事件相关知识做一个汇总和记录. 在前端中,有一个很重要的概念就是事件.我对于事件的理解就是使用者对浏览器进行的一 ...
- 【Android 】Service 全面总结
1.Service的种类 按运行地点分类: 类别 区别 优点 缺点 应用 本地服务(Local) 该服务依附在主进程上, 服务依附在主进程上而不是独立的进程,这样在一定程度上节约了资源,另外L ...
- sql server创建备份计划
对于备份计划,在sql server中微软提供了相应的功能集,通过Maintenance Plans向导可以对数据库进行相关维护工作. 通过下图的向导,可以进行如定期备份和清除工作. 前提是安装介质包 ...
- paip.环境配置整合 ibatis mybatis proxool
paip.环境配置整合 ibatis mybatis proxool 索引: ///////////1.调用 ///////////////2. ibatis 主设置文件 com/mijie/ho ...
- Javascript创建对象的学习和使用
<html> <head> <meta charset="utf-8"> <title>javascript对象的学习</ti ...
- 【锁】Oracle锁系列
[锁]Oracle锁系列 1 BLOG文档结构图 2 前言部分 2.1 导读和注意事项 各位技术爱好者,看完本文后,你可以掌握如下的技能,也可以学到一些其它你所不知道的知识,~O(∩_∩)O~: ...
- PHP中常用的正则表达式由哪些元素构成?
在程序开发中,我们常常要用到正则表达式,对于新手来说,很多时候知道正则表达式是怎么回事,但当真正需要使用的时候,却不知该用什么函数,具体的修饰符也比较混乱.下面小编就为大家整理了一些php正则表达式中 ...
- linux中touch命令参数修改文件的时间戳(转)
linux中touch命令参数不常用,一般在使用make的时候可能会用到,用来修改文件时间戳,或者新建一个不存在的文件,以下是linux中touch命令参数的使用方法: touch [-acm][-r ...
- 关于C# byte[]与struct的转换
转自:http://blog.chinaunix.net/uid-215617-id-2213082.html Some of the C# code I've been writing recent ...