竹十一
在匆忙与奔走中堕落
炒冷饭:关于选择框架(或称通用成熟技术)

(加Java少许)


一直以来都习惯性的使用成熟的框架来进行开发工作,却没注意过为什么要这么干,仿佛只是“从恶如崩”。最近在维护一个遗留系统时,完全是jsp+servlet来做的。思考使人进步,小弟不才,在郁闷之余就是抓着头发胡思乱想。结果就是,俺对成熟框架技术的倾向性更加明显了。


为什么要用框架来工作

单单用最简单的技术不好吗?比如jsp,或者进一步再加一点servlet。偶认为,做个测试,验证个事情,这些简单的东东,用的技术越简单越好,简单上手快,从头到尾2分钟就验证完了;要是用框架,恐怕先把架子搭起来就10分钟过了。
简单的验证可以天马行空随心所欲,但是做应用做产品就不一样了。对于一个企业级的应用系统来说,可维护性、可测试性和团队开发的便利性等等等等是更重要的。显然对于这些特性,公开的框架技术比私有开发的技术有更多的优势,(或许)更重要的是现在流行的这些框架技术同时还提供了很多企业级特性,比如日志、事务,这些特性经过了很多人的验证,基本来说肯定比自己简单实现的要更可靠。
开源框架技术相对私有简单技术来说,有一个突出的优势,使用人群。使用人群大明显的意味着两点好处:一、更多的问题别人都遇到过,可能都有办法解决了已经;二、更多的文档,哪怕很少的人把他们的经验写下来,因为人群基数大,文档总数也会是惊人的。
不光是开源的框架,很多大企业也有自己内部的应用框架,江湖传闻东软就有:),这种公司内部的基础架构也是很有优势的,是公司持续的投资,技术的积淀。当然积淀下来要变成粪堆您别找俺,俺离那好远好远:)。俺亲历过Jade,IBM的一个类似Struts但历史应该更悠久的MVC框架,做的很不错,活的很好,IBM很多应用都是这个东西在下面顶着。


如何选择一个合适的框架

在偶看来,如何选择 一个合适的框架,要从几个方面综合考虑。
首先,目标框架是不是被大众广泛接受的,拿大家见的最多的MVC框架来说,SpringMVC、Struts、webwork2、Struts2、Tapstry、JSF都符合这一条件,他们都各有广大的使用群。
其次,开发人员是不是对目标框架比较了解,移植到新技术框架上开发的成本有多大,不能为了尝试新的框架技术而拿新项目来做试验,除非客户的银子和周期可以任意挥霍,或者能完全引导客户。
然后还有就是要考虑到项目的可维护性,不能一个项目采用一个框架,后期维护起来还要额外的熟悉技术的成本。当然单纯从开发人员的角度来说,这样或许也不错,可以熟悉各种技术,做万金油比较容易。对于一个大项目分几个组来分别共同完成时,很容易在这点上出问题。林子大了什么鸟都有,用的技术太多了,换个坑萝卜栽不下去,工期耽误肯定难免了。(最近俺是深受其害呀:()
还有一种情况,其实没的选择,比如你进入一个公司,他们恰好有自己的一套东东,这时候就只好用了。非要另起炉灶,估计你就得被扫地出门了。不过这种情况一般都会有人培训下:),不会上来就让你胡来的。


加强选定的框架

依托一个框架工作久了,自然而然的就会遇到一些情况。比如,需要一个新的功能,而选择的框架本身没有提供;已有的功能用起来总是觉得别扭,和自己的思路不太对应等等。举个比较遥远的例子来说,2003/2004的那个年末年初struts大概在0.9版,那个时候是没有DispatchAction可用的,于是乎江湖中出现了若干实现这一功能的方式。(大体都是走反射的路子,直到1.1版本出现,具体"历史-版本"可能对应不够准确,但这个事件确实经历了:))。
但对公司内部应用框架来说可能比较麻烦了,不一定有源码可改啊(更甚者,改了被人骂啊)。只能一边反映问题、一边找弯路了。或许还要偷偷祈求写基础框架的人不是那么的SiBan,能很快出活。


选用框架可能面临的风险

对于一个稳定的团队,贸然选用不熟悉的技术肯定是存在风险的。其实这种情况在软件开发来说很常见,毕竟新技术层出不穷,这时候除了公司给予必要培训(很少有公司培训你)以外,就只能靠“积极加自我修养”了。
开源技术有个特点--版本更新快,尤其在刚推出的时候。这时就有个问题了,APIs的稳定性,不同版本之间的兼容性。举例来说,Hibernate大家都用过,2和3之间别的不说,包名都变了。另外开源框架的技术支持也是个问题,毕竟没有商业支持嘛,出了问题更多的只能靠埋头钻研、前辈提携和江湖救急了。
对于有内部基础框架的公司来说,其实这个不是问题,唯一的问题就是,这个基础框架够不够结实,可千万别豆腐渣了,让干活的兄弟们受罪啊。


使用框架技术是一种流行,但是不应该像流行感冒一样,莫明其妙就让它流行,否则这么多的框架技术就会弄你个百毒俱侵,必须加以甄别,。希望本文能够对迷茫的人有所帮助,至少这碗冷饭能让您打个牙祭。


btw:冷饭吃坏肚子原则上偶不承担任何法律责任,但愿意提供无偿红十字援助。

--- 很久之前的一篇文章了,忘了什么原因没贴出来。今晚整理垃圾箱的时候翻出来的。

posted on 2007-12-13 23:49 竹十一 阅读(1494) 评论(2)  编辑  收藏 所属分类: Circle
Comments
  • # re: 炒冷饭:关于选择框架
    Rosen
    Posted @ 2007-12-13 23:58
    现在我们不用任何框架,最多struts一下。呵呵
    一一,有空常来!  回复  更多评论   
  • # re: 炒冷饭:关于选择框架
    隔叶黄莺
    Posted @ 2007-12-14 11:12
    是的,我们有一个项目就是开发人员大显身手,留给维护人员就会叫苦连连。  回复  更多评论   

只有注册用户登录后才能发表评论。


网站导航: