posts - 176, comments - 240, trackbacks - 0, articles - 7

[导入]既先进又落后的web开发领域

Posted on 2006-02-22 20:39 canonical 阅读(1837) 评论(1)  编辑  收藏 所属分类: 设计理论

    web开发这个领域是很有意思的。首先,web的兴起是在软件业发展到一定阶段才发生的,它必然吸收了软件业最优良的思想,必然有其本质上先进的地方。另 一方面,web的应用毕竟是时日较短的事情,造成很多基础架构方面也是薄弱的,原始的。
    具体来说,前台html的展现模型本身是非常先进的。xhtml+css+js实现了结构(structure), 表现(presentation)和行为(behavior)的分离。xhtml本身是简单的文本文件,通过工具的支持可以做到结构上的"所见即所得" (WYSIWYG)。 在js中操纵html结构具有多种方式:可以通过id直接访问html片断,可以直接操纵dom的层次结构,可以将html作为线性文本处理,可以应用 xml相关的技术对dom结构进行变换,可以动态切换html元素的css风格等。dom结构的访问方式是高度统一的,通过parentNode, childNodes, setAttribute, getAttribute等少数几个 API函数,我们可以通过一种简洁一致的方式操纵所有的节点和相关属性(当然,IE这方面的bug不少)。html相关技术中所显示的结构控制能力远远超 越了传统桌面程序中组件技术所能达到的程度。
    但另一方面,html也是原始的,缺乏现代应用程序所必需的标准控件,典型的如Tree控件和Tab控件等。每个开发商都不得不实现并维护自己的界面库。 通过web界面调用后台业务逻辑的方式更是很粗糙的。基础的servlet只提供了基于IO的有限状态机模型,对于后台功能缺乏有效的组织,而对于前台界 面也缺乏合适的抽象手段,仅仅作为文本输出。MVC框架建筑在servlet模型之上,将后台逻辑功能以一种统一的组织方式向外暴露。而tag技术在前台 界面中的应用,使得我们可以有效的识别并分离出我们所关心的结构。这些技术的发展都是web开发模型逐渐精细化的必然结果。
    为了在服务器端获得足够强的结构控制能力,有些人求助于桌面程序的历史开发经验,希望通过java语言中的结构表达能力来扩展web开发的模型,于是便有 了echo2, tapestry这样的组件化web开发框架。坦率的说,我并不看好这类强类型建模的框架。除了性能上的原因之外,我反对这类框架的一个主要原因是 java语言直接表达的结构一般无法达到用xml文本表达的结构的统一性和灵活性,从而很难应对界面的快速变化。实际上,对web界面进行组件化的分解并 不一定需要一种强类型语言支持的组件模型。通过自定义标签的使用,我们完全可以实现将页面分解为多个子部分的目的,这一点已经由witrix平台中的 tpl模板技术所证实。

    web开发是个既先进又落后的领域。很多人面对这种矛盾的情况,难免思想上会出现混乱。关键是要认清技术的本质而不要被OO是否必需等抽象的讨论所迷惑。

Feedback

# re: [导入]既先进又落后的web开发领域  回复  更多评论   

2006-05-29 15:42 by 老鼠
呵呵,受教:):)

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


网站导航: