走向夕阳的B/S开发模式涅磐猜想

        最近的一二十年中,B/S的开发模式迅速成长并不断吞噬着原有C/S的领地。就在其如日中天的现在,笔者却隐隐感到一些苗头,那就是当下流行B/S结构正走向夕阳,虽然无限美好却也面临着巨大的变革。         CGI、ASP、JSP、PHP、ASP.NET等等这些技术无一例外地将代码逻辑嵌入到了HTML之中,想当初这算是一个不错的构思,但如今这样的编程模式却很大程序上束缚了时下浮躁的开发都们。试想这年月有几个人能把HTML、CSS、JS、后台程序及数据库这些知识通吃,而当代码与页面混杂之后,市面上的各种理念和模式及思想都显得苍白而无力,于是大量的豆腐渣工程被孕育出来。幸运得是硬件的高速进步很大程度上掩盖了项目中的许多丑陋,低效的代码、冗余的数据库、嘈杂的HTML等等问题经常在关键时刻刺激着项目维护人员的神经。如何才能避免这一切就成为B/S发展上必须跨跃得。页面与代码混杂的编程方式就成了一定要切除的毒瘤。         将页面与代码分离之后还是B/S吗?那样的B/S还有什么优势可言?我们还怎么写程序?而这恰恰是误区所在,其实在前沿的领路者们一直在努力做这件事!ASP.NET的第一个版本中就有这苗头,而JAVA的MVC也在做同样的努力,但至少十多年的编程习惯使得大家很难放弃将页面与逻辑彻底分离,何况有时确实很方便。不过微软虽然在.NET平台中提供了无数方便的控件,可惜治标不治本,对于熟悉HTML+CSS+JS的人来说那些控件并不灵活且多此一举。如今的B/S已经不仅仅做几个简单页面,大量复杂的逻辑和眩目的界面需要相互配合,能在两者间游刃有余的程序员越来越难得,我们迟早要突破传统,否则只能是走向消亡。不过技术和理念总是在进步,涅槃后重生的B/S会带来完全不同的气息,让更多平凡的程序员能够发挥更多的作用。         B/S开发的系统不论多么复杂,其实都有相对固定的框架。我们以MIS为例不外乎三大块:持久化数据存取、商务逻辑处理、前端用户界面。基本上绝大多数应用都是以此为基础,也就是传统C/S模式的三层结构。而B/S正是将后两层搞到了一起,虽然带来了不少好处也留下了麻烦而且随着系统复杂度日益突出。先说几个最为典型的困扰:第一,程序员痛恨界面上哪怕一点点的变化,因为这极有可能涉及代码逻辑;第二,自动化测试通常只是个幌子,想要自动检验HTML页面是否正确比做这个页面还要难;第三,多人协作开发不容易,尤其是想分层开发很难,而分层并行开发则近乎理想;第四,系统升级时常常连开发者自己也搞不懂,如果是改别人的系统那经历过的人多半会终生难忘。当然问题不仅这些而且随着开发的系统越来越复杂变得更加严重,那么新一代B/S会有什么新技术来解决这些问题吗?         从笔者对软件技术有限的认识来看,B/S新模式必然要经历一翻波折才能站住脚,就像其刚出来时那样。下面让我们来分析如何将代码从HTML中剥离。第一,Javascript将发挥更大的作用,以至彻底取代后台代码并独立完成前台逻辑。其实Javascript本身非常强大也称得上是非常智慧的语言,但其天性使得多年来都没有出过一款十分优秀的编程工具。不过目前的JS已经拥有足够的能力去自由操控HTML,只是很少人意识到这一点,另外AJAX的流行更推动了这一浪潮,也许不久再也没有人用form来提交数据了。第二,时下的WEB服务软件及程序工具不再关注HTML。JAVA,.NET,PHP,ASP等等语言或平台本身都不具备对页面的掌控能力,都是通过构造HTML+JS来运作,既然如此还不如别管这些闲事来做本职工作。只需要做到这两点,很多问题迎刃而解,同时也会开创一个新的时代。         先来看一下这么做的好处:第一,界面开发被独立出来,这样用户可以真实地看到一个演示系统被快速构建出来,需求分析必然会更加有效。同时这个演示渐渐成为正式系统的界面,工作一点都没有白费。第二,界面会一点点被确定,商务逻辑和数据库建模的程序员可以同时进行自己的工作。在效率和开发周期上得到极大提升,想想不需要考虑页面的逻辑开发是多么让人奢望。第三,我们可以更有效地解决用户需求的变化。从前最麻烦且频繁的单纯界面变化现在可以轻松应付,只需要改界面而已,构造或定制多界面风格也不再是太大的困难。而如果只是商务逻辑的调整就更加好办。每四,自动化测试成为可能。由于商务逻辑的代码与界面无关,所以不难创建自动化单元测试来验证代码。第五,多平台多语言合作变得方便可行,由于界面被独立出来,商务逻辑的代码只处理和传输单纯的数据,多平台和语言与界面的交互畅通无阻。此外,也为时下流行的SOA打下良好的基础。第五,系统升级维护工作被条理化。界面的独立使得系统模块间耦合性大大减少,我们更加容易对症下约来处理相关问题。 最后,能够较好地适应手机无线等网络新平台。最初手机平台使用WAP,后来渐渐也能够支持传统览器,如Iphone就使用Opera来浏览网页。         虽然表面上B/S的变革势在必行且一触即发,但理论和实际还是存在巨大的偏差,仍然存在诸多不确定因素:第一,Javascript虽然趋于成熟且被多数浏览器接受,但依然没有过硬的标准对其有效支撑。由于其自身过份的灵活与单纯导致很难出现好的编辑工具,也不容易让普通大众程序员熟练使用。不过流行的东西并一定都完美,例如SMTP纵然有无数缺憾还是顽强地屹立于EMAIL的世界且丝毫没有退出的迹象。也许JS会走同一条路,不过至少它会是B/S变革不二的冲锋者。第二,虽然新的模式有不少优点,但十多年的编程方式难以扭转,另外需要由于缺乏明确市场价值难以得到开发工具巨头们的支持。如果此新模式流行,同时其他语言和平台相互之间的优势也被弱化,例如微软.NET框架下的很多结构变得没有意义,估计他们不会轻易接受。第三,Flash,serverlight等新兴插件正在侵噬传统浏览器的作用,虽然新模式构想也有利于这类插件,但也许在此基础上不排除迅速产生更新更好的架构。         综上所述,当前的B/S编程模式已经渐渐不适应复杂需要的实现和维护升级,而将界面与逻辑彻底分离是必然走向。或许客户端不一定用JS,或许有更好的机制或平台出现,但变革是不可避免的。笔者虽然欣赏JS的语言特点,但长期不看好。相信将会有一套数据标准出台来规范客户端与服务器的交互,让开发进入另一种境界。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值