flyisland
  • 2005-06-05

    Spring Web Flow

    版权声明:转载时请以超链接形式标明文章原始出处和作者信息及本声明
    http://flyisland.blogbus.com/logs/1243618.html

    在TheServerSide上面看到SpringWebFlow的介绍(有中文版),SpringWebFlow的目标是成为最佳的“web application page flow”解决方案。Web应用一般来说都是有许多页面组成,当我们访问Web应用时,就是在一系列的页面之间跳转。对于应用来说,这种跳转就是代表了具体的业务逻辑。
    以往而言,Web应用开发除了“界面”和“代码”混淆之外,还有一个大问题就是很难从代码中发现业务逻辑(可读性差)。假如一个应用由200个页面组成,你该如何发现其中的业务逻辑呢?目前存在许多Java Web MVC Framework,但是MVC Framework一般只关心“单次点击”。用户点击一次页面,服务器进行处理并返回一个页面,MVC Framework关心的是在这个过程中如何进行有效的MVC的分离;如何封装用户输入,自动导向到相应的处理单元,返回指定的页面。
    在MVC Framework的配置文件中散落着一个个独立的“动作”、“转移”的配置,对于一个复杂的应用,我们很难从配置文件中找出“流程”来。这种情况显然需要改善,MyEclipse就包含了一个Visual Struts Modeler,能够以图像的方式将Struts配置文件中的流程显示出来。
    Visual Struts Modeler
    在对流程的描述方面,Java PageFlow做得更好,JPF是基于Struts并充分发挥其关键功能,同时省略了对配置文件编写管理的繁琐工作。JPF通过JSR 175定义元数据来描述“流程”,而不是想MyEclipse那样对配置文件的直接解释。JPF原本属于BEA WebLogic Workshop的技术,已经和其他几个技术一起被捐献出来成为Apapche Beehive开源项目,同时Eclipse也启动了Pollinate项目,目标是基于Eclipse 3.1/Appache Beehive建立一个类似WebLogic Workshop的IDE。下图是JPF在WebLogic Workshop中的一个界面。
    Java PageFlow Sample
    实际上Struts也有一个Flow子项目,通过服务端JavaScript来描述流程,这些JavaScript是“continuations-capble”的。例如其中forwareAndWait()方法被调用的时候,JavaScript就会中止运行并返回一个HTML给客户端,在客户端提交请求后,JavaScript会在刚才中断的地方继续运行。
    相对于其他技术,我觉得Spring Web Flow的长处在于——集成。Spring Web Flow可以与多种Web Framework集成使用,在正式发布的时候将支持Spring MVC, Struts, Portlet MVC, JSF, Tapestry(不晓得为什么没有WebWork)。另外一些跳转逻辑也编写在配置中,可以让流程更加灵活(或者更难控制?)。目前可以通过Gaijin Studio来进行图形化的Web Flow开发。
    后记:在写这篇文章的时候,我也在考虑“页面流这样的技术对复杂Web应用开发的帮助到底有多大?”,主要是前几天在JavaEye上看到的一些讨论引发了自己的思考,等把思路整理好后再写一篇。

    随机文章:


    收藏到:Del.icio.us




    Tag:技术

    引用

    下面Blog引用了该文:

    评论

  • Red, but totally have no idea.