关于 AJAX,我们将来有必要进行深入而广泛的讨论。
通过我们这里一年多来对于 XMLHTTP、JavaScirpt、RIA 等技术和架构的讨论,其实我们最终也可以得到完全相同的结论的。AJAX 的可行性是不容置疑的,已经被我们这里一些勇于实践的开发人员的经验(我的经验,还有很多使用 JS+XMLHTTP+XSLT 的人的经验,给自己的脸上贴点金,呵呵),以及最近的 Google Map 等伟大的应用(体验一下 Google Map 的速度,你就知道我为什么说伟大了)所证实,还证实了基于 Web 标准进行创新是一条光明的大路。我的同事 ly 在三年前就采用了这种开发模式,并且把它的好处介绍给我,我后来又在这里一再宣传使用 JS+XMLHTTP 做开发的好处。因此我对于现在出现的 AJAX 一点也不感到奇怪,只是对于这种开发模式到现在才开始流行感觉有些遗憾。以前国内大部分的开发者只知道一味地迷信 J2EE,迷信 .Net,把自己限制在犬儒式的对大厂的盲从上,而不愿意自己去创新。现在出现的 AJAX 对于国内的开发者是一个启示,也是一个教训。共产主义是等不来的,无论是 M$、IBM 还是 Sun 都不会把共产主义的幸福生活拱手相送。并不是技术本身不行(例如在一些人看来似乎已经完全过时了的技术 HTML/CSS/JavaScript),其实还是人不行,再好的技术给你也做不出好东西来。
相对来说我更加看好这方面,而不是私有的解决方案如 XAML 或者 Flash 。这些技术的组合现在既然已经有了一个新的名字 AJAX,以后我们就把这些技术叫做 AJAX 好了。我的预测是 AJAX 会成为所有 RIA 解决方案中强有力的一个竞争者。
我在这里的理解是你所说的横向分层是业务逻辑(business,通常包含了 model 和 service)、展示部分分别交给不同的人完成,而纵向分层是一个人包干,是不是这个意思?
从我的开发体会来看,横向分层能够把开发人员擅长的一面发挥出来,比如 a 能力强,业务理解力透,那么 a 来负责业务部分;b 工作时间不长,而且对页面技术比较熟悉,就来负责展示部分。横向分层的分工有个特点就是专一性,所以优点在于可以使做的人专注,效率高,缺点就是容易疲沓,比如一个人不停的做页面部分,简单而繁复,做的时间长了难免有想法,尤其国内程序员心志都比较高,比如一个技术团队没有新的技术吸引他了,工资拿的又不是很满意,长期做这种简单重复的工作会使他觉得没有前途,要么能够换一下岗,要么就是选择跳槽。横向分层模式在外包公司,或者大型项目中经常被采用。横向分层由于需要将层与层之间进行整合,因此需要付出沟通和集成成本,引入测试是减少这种成本的最佳办法,而且是必须的,否则容易出质量问题。纵向分层按业务功能模块分配,将一个功能模块(包含业务和展示部分)交给一个人来完成,这种分配本身对负责的人要求比较高,有一定挑战性,需要理解业务,编写后台代码,负责前台展现,负责前后台的联合调试。由于所有工作由一个人完成,因此纵向分层不像横向那样是开放的,也就是说,你手头的工作与别人相关,同时要接受他人的约束,纵向分层的完成质量更多依赖于个人的能力和责任心,那么单元测试就完全是个人责任心的体现了。其实在我看来,单元测试跟开发方式的选择没有多大制约关系,也就是说无论采用哪种方式,理论上都是需要做单元测试,至于实际中能不能做,要不要做,还是跟具体的项目开发需求、以及开发人员来定。
所提到的测试后行这种情况,是一个开发习惯问题,毕竟测试驱动这种思想并不是人人都会去接受,但话说回来,有(寥)胜于无,尽管这种做法其实并不省时省力,而且其实还使单元测试的目的大打折扣。校验测试也属于单元测试范畴,放在集成测试中不合适,加大了集成测试任务,不利于做到重点突出,毕竟集成测试重点在于部分之间的接口。另外说纵向分层似乎表达不是很恰当,不过目前我也找不到合适的词,所以先为使用。