|
Extra Web构件开发平台—鱼和熊掌兼得?《程序员》杂志--中国软件创新报道之三 |
在古埃及,作为古代法老智慧和权利的象征,狮身人面像被认为是以狮子的力量配合人的智慧,两者的结合可以带来更为强大的永恒。 然而,完美的事情只存在于神话和人们的想象中。古语云:“鱼和熊掌不可兼得”,IT领域中这样的例子也为数众多。B/S和C/S架构孰优孰劣便常常成为口水大战的起源和争论的焦点。事实上,B/S属于未来发展的趋势,但在很多方面,比如表现层和可操作性上,C/S仍然具有不可替代的优势。因此,很多大厂商在向B/S方向转型时不得不采用与C/S架构共存的模式,甚至造成整个公司业务方向的发展目标不明确。同时,对用户来说,采用B/S还是C/S架构的软件,做出这个选择也煞费脑筋。
有没有可能利用通用的技术标准来集成B/S和C/S的优点,让鱼和熊掌兼得呢? 有,这个看似难以实现的梦想却由上海Bstek公司的Extra产品给出了现阶段相当令人满意的一个答案。
B/S实现C/S的丰富色彩
同很多人一样,从开发进销存这样的应用软件启动了自己的创业之路,也积累了第一笔财富。2000年,随着网络的兴起,他们也决定将自己开发的进销存软件改造成为B/S的架构模式。然而,改造的过程充满了挑战。在B/S架构软件中,由于Web表现形式的限制,很多软件的界面做的十分简单甚至简陋,而原来的进销存软件界面表现十分丰富,要把程序界面以Web形式表现,就有很多技术问题需要解决。 如果C/S架构的软件公司要转型到B/S架构,就需要把Client端很复杂的功能、界面、业务逻辑突然要转到Sever端上。在这个过程中,Client端某些可能很容易实现的简单功能,在Web上实现却会变得很复杂。技术上有太多难关需要跨越。因此很多公司都提出了“B/S不成熟”等类似的观点,BEA的一个技术总监也表示:“目前情况下最好的方式就是B/S和C/S相结合”。 Bstek当然遇到了同样的问题,但执著于技术的他们却对此表示了疑问。能不能在现有技术标准下寻找到一种解决问题的途径呢?作为一个小公司,如果采用的不是标准技术,无论是在市场推广还是在对客户的说服力方面,都会存在很大障碍。 这时,DHTML(动态超文本标记语言)技术进入了他们的眼帘。事实上,自从DHTML出现后,由于其标准的复杂程度和各厂商之间争斗,这项技术一直没有得到很好的推广,有人甚至提出DHTML根本就是一个试图覆盖大量技术的噱头词。 不过他们还是抱着试一试的心情开始了研究。他们首先模仿实现一些传统C/S架构下做开发所常用的可视化组件,比如表格、树、菜单、下拉框等。 实现数据应用控件,也颇费周折。因为在B/S环境下,多行表格的数据输入是非常困难的。除了类似Excel插件的方式实现外,传统方法往往是输入一组数据后,就需要提交页面重新刷新一次,这种方式在输入大量数据时,用户会感觉非常不方便。比如,DHTML的内部对象传递方式以及页面构件处理顺序等,开发出了可直接使用,完全实现C/S数据输入效果的数据表格构件,用户可以完全采用熟悉的C/S使用方式来控制操作。接下来,按照这种思路,陆续开发出了菜单构件、数据导航条构件、数据标签构件、字段标签构件、主从绑定构件等各种数据应用构件。 同时,他们发现,Web的页面刷新是导致用户和系统之间交互效率大大降低的主要因素,这对人们接受B/S架构的软件产生了非常大的障碍。针对这种局面,他们采用了特殊的方法,通过Client端逻辑进行控制,在很大程度上减少页面的刷新次数,在输入数据时,可以只实现局部的刷新,减少Client与Server的频繁通信,使得其显示效果重现了C/S的优势。 仅有这样的一些控件还不够,还需要有一个对象来对这些控件进行综合管理,Bstek提出了记录集(Dataset)的概念。由于Dataset和数据控件之间建立了一种关联机制,在这种管理建立后,Dataset便可以自动的管理各种关联对象的状态的行为。例如:Dataset可以在必要时自动的通知数据控件刷新数据,通知从记录集下载及更新数据,自动接收数据控件对Dataset进行的数据更新等操作和控制。通过记录集的强大功能,所有的控件在其下进行统一的管理。 他们做这些工作,开始的时候仅仅是为了给自己的产品向B/S架构转移提供便利,但随着研究的深入,发现其他厂商也存在这样的需求,这个市场更大,于是Bstek便停止了对原来进销存软件的销售,转而集中精力对C/S转向B/S的技术进行更为全面的研究。 由于缺乏文档和标准化的中文资料,而且国外一些简单的介绍和案例要满足开发商用化软件产品的需求还显得远远不够,因此更多的时候,只能钻研和尝试。同时,这套系统要求Client端做很多script脚本的编程工作,而script不是面向对象的语言,语法也不严谨,调试起来相当困难,整个开发过程相当艰苦。
从组件到构件平台
开发初期,Bstek只是把关注的焦点放在了表现层的控件上。随着开发的深入,他们发现必须要通过一种方式把这些组件合理的组织起来,在系统方面搭建完善的架构,否则在使用中会出现很多问题。
在吸取了这些经典产品的思想后,他们把以前的工作全部推翻,重新按照新的架构进行了设计。2001的9月份Bstek开发出了Extra 1.0的版本,放到网站上,网友下载后,反响相当强烈。赞誉和鼓励之声,来自网友大量热情洋溢的来信,坚信了他们继续“革命”的信念。直到现在,虽然1.0版本早已不再提供下载,但是他们仍然不断收到网友的来信和来电,询问Extra的近况。
到大海捕鲸, 还是到小溪钓鱼
然而,被网友认可和在市场上取得成功还相距甚远。在2.0推向市场后,他们却发现遇到了很多问题。 首先,1.0和2.0版本都是基于微软服务器平台术的,而这个层面使用微软Server端的客户业务规模都很小,而且Client端微软也做了很多工作。因此整个2.0版所面对的市场更小。同时,这两个版本更多的是关注表现层的内容,但从用户的反馈看,除了表现层,客户也关注中间层业务逻辑的表示部分。
Bstek将工作的方向放到了向Java平台转移,实现跨平台的开发上。 2.0到3.0并不是简单的平台转移,结构上也需要做很大的调整。当时,.NET已经发布,但Java阵营中还没有一个很好的开发工具提供方便的开发,这给他们留下了深刻的印象,也促使在开发这套系统的时候更多考虑程序员的感受。 首先要考虑的是集成性和伸缩性,这就需要大大加强中间层方面的工作。要让用户在所制定的系统框架中去定义自己的业务逻辑,同时还要能够和客户原来的业务对象整合起来,这需要提供很多接口。
 Extra 3.0的Java版本推出后,市场空间一下就摆在了面前。使用Java开发系统的都是大公司,而且对这方面的需求十分迫切。
现在, Bstek公司对未来充满了信心,每个客户在看到演示的效果时,都兴趣盎然。 对于未来版本的规划,我们比较关注国外的一些应用框架技术,包括MVC、Persistence Layer、O/R Mapping等技术,我们希望能够把那些产品的优点整合到我们产品中,比如把extra的开发框架和MVC的框架很严谨的结合起来,同时也要做出更多性能的改进。 不过,微软、SUN和IBM也在做很多工作,某些工作可能会对Bstek带来一定的挑战。Extra也已经做了三年,尤其是在如何使用户更方便构建系统方面,积累了很多经验。同时我们一直在关注技术的发展趋势,不断调整方向.无论是应用开发商还是各种开发工具提供商,他们和我们都存在强势互补,而没有竞争关系。同时,这个市场足够大,我们也希望更多的公司来参与竞争。”
综 述
在中国,基于B/S的技术大多停留在网页开发的层面。受技术的限制,目前很少公司能做出大型Web应用。即便是对于提供基于B/S的大型应用的国内软件公司,与国外相比,技术还不是很成熟。整个开发过程慢,虽然它们在一定程度基于组件化,但是这种组件化是基于业务模块的,对于整个软件开发过程,编码阶段并没有节省多少,整个软件加工过程还是很原始。这些公司的技术还是停留在应用软件开发商的层面。 现在很多做ERP的公司也在发展自己的framework或者业务平台。他们首先是做应用,1995年之后,由于竞争加剧,他们都在做业务构件平台。只要投入一些资金,此类平台就可以做出来,当这些公司都有了自己的业务之后,他们还需要寻求突破,要向树干方面发展。就像一棵大树,狂风暴雨来了的时候,树叶被吹落,树枝被折断,而树干依然坚挺。应用软件开发商要有大的突破,必须朝着树干、树根的方向努力。中国也把构件作为振兴软件产业的重要环节。最终它们会向通用构件平台方向发展。 而做Bstek这样的产品更需要积累,如果他们对技术的积累厚度达不到,对产品的市场把握不好,就不可能形成这个产品。 做技术,还要放长眼光,要有吃苦的精神,一个产品做了三年是很不容易的。一个产品如果能够坚持三年,取得一定的成功才算是必然的结果。
附录:
框架(framework):未来应用发展方向应该是在一个可重用的环境下(框架)进行搭积木(构件),而提供的搭建方法(设计思想)将决定所搭建的产品质量和生产周期以及产品的竞争力。 一个优秀的应用产品必定是有框架、构件组成并充分体现优秀的设计思想。这就是目前业界流行的应用平台化的理念。虽然目前的平台化多以业务平台化为主,但是同样也说明了这样的一种发展趋势。 构件(Component):构件技术是软件产业化革命的必然发展趋势。20世纪,工业化的软件复用已经从通用类库进化到了面向领域的应用框架,因此Gartner Group指出:“到2003年至少70%的新应用将主要建立在如软件构件和应用框架这类‘构造块’之上;应用开发的未来就在于提供一个开放的体系结构,以方便构件的选择、组装和集成。” 21世纪,在强调重用是软件构件发展最主要的特色的同时,随着技术的发展,现在不光构件可以重用,框架也可以重用。 “没有构件化开发平台产品,我们想追赶国际水平无疑是用‘手工作坊’追赶流水线。”
|
|