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

[导入]tag技术

Posted on 2005-12-02 22:59 canonical 阅读(833) 评论(2)  编辑  收藏 所属分类: 软件开发

    tag在国内java社区并不算流行,这在很大程度上是因为jsp tag的设计失误造成的。但在整个开发业界内,tag已经成为一种广泛应用的技术。微软的dotNet服务器端极端依赖tag技术,而在浏览器端IE的 behaviour, htc也独立的发展起来。Longhorn的XAML, Firefox的XUL无一例外的依赖于可自定义的tag。java社区的JSF, SiteMesh, Tiles 等等,不可尽数。有些人在前台通过给html原有元素增加自定义属性,然后通过javascript去解释的做法,也是一种element enhance概念的变种。至于FreeMarker这种模板语言,明明类似于tag技术,偏偏不采用xml语法,简直是自找麻烦。
    这里最关键的地方就是自定义tag可以实现抽象层次的提升,是一种类似于函数封装的机制,从而实现概念的分离和明确化。基于tag可以实现页面元素的组件 化,加上xml语法的可理解性,表达能力以及无与伦比的集成能力,使得tag技术可以超越VB等组件开发环境(想想集成别人的组件代码难还是集成别人的 xml描述文件难)。自定义tag提供的抽象能力不仅仅是面向对象的,而且是类似AOP的,这些都极大的辅助了我们的思考和设计。

    cocoon使用管道技术也构造了某种tag机制,但是它的效率很成问题。从数学上说多个处理函数 g, h, k可以通过函数组合(composition)构成新的函数f

    f(data) = g * h * k(data) 

这是所谓函数式语言强大能力的源泉。cocoon处理的时候从k(data)开始,处理完毕之后调用h, 即函数是从右向左结合的。如果我们保证处理函数满足左结合律,则g*h*k就可以预编译为f, 从而解决性能问题,这正是witrix平台中tpl技术所采用的方案。

Feedback

# re: [导入]tag技术  回复  更多评论   

2005-12-03 18:40 by calvin
能不能展开论述jsp tag失败在哪里呢

# re: [导入]tag技术  回复  更多评论   

2005-12-03 22:12 by canonical
jsp tag最核心的设计问题在于它所假设的模型是动态io处理,而缺乏对于xml结构的充分利用。对于具体的表现, 我已经在一篇blog中作了评述。
http://canonical.blogdriver.com/canonical/572201.html

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


网站导航: