和Google互补的搜索引擎Wolfram|Alpha
Wolfram|Alpha与Google究竟是什么关系,Wolfram|Alpha自己是如何定位的?Wolfram|Alaph在多大程度上是语义网搜索呢?InfoQ中文站就等等这些问题采访了Wolfram研究公司中国区商务经理王翔。
作者 Slobojan, Donald and Grelle 译者 宋玮 发布于 2008年4月23日 上午12时7分
InfoQ与Spring Web团队的Keith Donald和Jeremy Grelle就Web Flow 2.0.0.RC1的发布进行了交流,这是Web Flow下一个主要版本的第一个产品发布候选。Web Flow是对Spring MVC的一个扩展,用来在Web应用程序中实现流程。
Web Flow 2中有很多重要的新特性,例如:
首先,Web Flow 2引入了Ajax事件处理能力。你只需像处理任何其它Web Flow事件一样来处理Ajax事件就可以了,在处理事件之后,你的流程可以请求刷新UI的特定片断或部分。你可以在我们的Spring Travel例子中看到对这种局部刷新的支持(当页面返回到查询结果表时,或者在UI上显示验证错误信息时都可以看到这种局部刷新)。
我们在对Ajax的支持上比较有意思的一点是,当客户端Javascript不可用时,我们进行了适当的处理。试着访问一下Spring Travel应用,并将Javascript关掉。这个应用程序依然能够工作。
因此我们的Ajax支持实际上包含了两个部分:Web Flow结合服务器端来检测可以使用Ajax的客户端并根据请求进行局部展现;客户端,用于提交Ajax请求并将响应片断与页面联系起来。我们所提供的客户端叫做“Spring Javascript”,这是Web Flow分发包中的新模块,建立在Dojo 1.1之上,对Ajax及改进增强等等提供了一个干净、一致的API。
Spring MVC和Web Flow是互补的:Spring MVC是Web应用开发的基础平台,而Web Flow是一个Controller扩展,用来实现流程(也就是会话——conversations),它是跨多个请求的有状态的用户交互。
因此Web Flow 2加深了与流行的Spring MVC平台的集成。现在,在无状态Spring MVC @Controllers中调用Flows更加容易了,而且对于Flow的产出,现在也可以更方便地映射到Controller上。在充满“mvc”风味的Spring Travel参考应用中可以看到这一点,其中混合使用了@Controller和flow。在参考应用中,网站的“shop”或搜索部分使用的是无状态的@Controllers来实现的,提供了完整的可书签化(bookmarkability)能力,订房功能使用的是有状态的Web Flow,为每个窗口隔离了订房应用交易。配合得非常好。
在Web Flow还是版本1的时候,你可能已经在“传统”JSF应用里使用了Web Flow,其中JSF的FacesServlet处于控制地位,Web Flow试图通过使用PhaseListener和NavigationHandler来找到自己合适的位置。这对我们来说是一项艰巨的集成任务,而且曝露了不少难以解决的微妙问题,比如异常处理、并发性、安全性、以及持久性上下文管理。
在Web Flow 2中,JSF和Spring Web之间的关系颠倒过来了。实际上,用控制反转来理解这一变化是最好的方式。现在,不是Spring去适应JSF了,而是JSF来适应Spring,在我们熟悉的Spring MVC DispatcherServlet内使用Spring MVC和Web Flow扩展点来实现这一点。基本上,我们吸收了JSF的长处,即它的UI组件模型,并把它作为一种表现层技术带入到Spring MVC和Web Flow Controller模型中。这一集成方法立竿见影的好处是你可以重用所有现存Spring MVC基础架构,包括:你的URL mappings、异常处理策略、Spring安全性策略,而且你可以结合JSF组件快速构建UI。这种方式可你让有机会使用所有当今可找到的JSF组件库,其使用方式对于有Web MVC概念背景的开发者来说非常自然。
人们可能会认为如果使用这么独特的集成方法,肯定会有些限制。但是到目前为止我们还没有发现。我们已经成功证明你可以在Spring Web环境下运行所有主流JSF组件库。另外,我们也建立了自己的称为“Spring Faces”的小组件库,其使用Spring Javascript提供了一套用于声明客户端校验和Ajax Facelet的标签。Spring Travel参考应用的faces flavor展示了这一组件库的实际使用。
Web Flow 2 引入了对flow的安全性支持。只需简单地注解一个flow、state或transition为“安全的”,SecurityFlowExecutionListener就会确保当前用户具备启动flow、进入step或发起event的权限。
在Web Flow 2中你还将发现,用于定义flow的核心语言更加简单了。例如,对我们的Spring Travel参考应用来说,基于Web Flow 1的版本由大约200行流程相关的应用程序代码组成,这些代码分别位于6个不同的部件中。在最新的2.0.0 RC1版本中,其集成了更多功能,流程相关代码只有93行,分布在2个部件中,代码量减少了约50%,需维护的文件数减少了4个。你可以自己去比较一下版本1的中flow和版本2中的等同配置。
我们也已将流程的概念扩展为一个“可重用、自包含的应用程序控制器模块”。现在,在默认情况下,一个流程和所有其所依赖的资源(如views、messages和helpers)被打包在一起。按领域职责组织代码是最佳实践,在Web Flow 2中我们正尽力简化其使用。你可以从这个例子中看到这一点:在booking目录里,流程用于支持国际化的views和message bundles被打包在一起。
我要说这一版本的主要原则就是易用。Web Flow 1 是一个拥有许多特性的成熟框架,但是 Web Flow 2 走得更远,它使用全面简化的流程定义语言使一些常见任务更加容易实现。集成是主旋律,我们提供了与JSF、Spring Security、Unified EL、Spring Javascript、以及Rich Faces最好的集成。正如前面所提及的,我们与Spring MVC的集成也已经做了改进,我认为,Web Flow 2 重申了Spring MVC作为Spring web应用基础平台的重要地位,在其基础上可以插入其它扩展功能。
对流程定义语言的简化是人们可以期待的。为了帮助用户从1.0升级到2.0,我们在发行版中包含了一个WebFlowUpgrader工具,它可以自动把版本1的流程转换为新的版本2的语法。
至于完整的变化列表,我推荐所有1.0用户去查阅新的reference guide以及2.0的参考应用,参考应用展示了最佳实践。我们将保证我们的社区能尽可能愉快地升级到2.0。
Web Flow定义工具是基于XML的,因此,你所需的首要工具是一个好的、schema感知的XML编辑器。Web Flow一般将应用程序行为委派给了Java领域模型和服务层,因此你需要一个好的Java IDE。在此基础上,Spring IDE项目提供了一个极好的Eclipse插件,允许你可视化配置Spring Web应用,而且还包含一个图形化的Web Flow编辑器。Spring IDE团队现在正在专注于Web Flow 2配套软件的工作。Christian Dupuis,Spring IDE和最近宣布的SpringSource Tools Suite的领导人,已经计划在五月份推出一个新的Web Flow 2配套软件。
SpringSource Tool Suite为开发Spring Web应用提供了一个完整的集成开发环境,包括对flow的支持。我们的团队已经编撰了几个面向任务的教程和运行时错误分析,并作为该套件beta版的一部分一起发布,将来我们还要提供更多内容。还有,最近宣布的SpringSource Application Management Suite将在其即将发布的1.0.0.RC2中为Web Flow执行引擎提供运行时可视化能力。
对于2.1我已经有许多计划。声明模型校验是一个时髦的话题,我们将在2.1版中包含它。2.0里,我们已经对回传(postback)提供了自动检测和调用模型校验器的支持,因此基础已经是现成的了。下一步是让校验约束能够针对模型进行声明,并且这些约束在客户端和服务器端都被强制要求。
我想你还能在2.1版本中看到我们使用脚本语言来定义控制流程的探索。构建在Web Flow 2引擎之上的Grails,已经展示了基于Groovy的流程定义语言是可行的,我们正在与Graeme一起合作,将其GroovyFlowBuilder合并回Web Flow。另外,我认为我们有机会将流程定义语言拓展到我所称的“站点定义语言”,这样你可以以声明的方式定义整个网站宏观结构,网站中的一些元素是流程。这一想法的灵感来自Jesse James Garrett的Visual Vocabulary,我认为在这一领域有很多有趣的工作可以去做。
我们也在努力确保现在发生在Web Flow 2中的革新内容能够在有意义的前提下回归到Spring框架本身。比如,我们正在谋求把所有Web Flow和Spring Faces的Ajax特性带给那些使用JSP和Tiles的已有Spring MVC应用程序开发者。
查看英文原文:Spring Web Flow 2.0.0.RC1 Released; Adds Ajax, JSF, and Security Integration
Wolfram|Alpha与Google究竟是什么关系,Wolfram|Alpha自己是如何定位的?Wolfram|Alaph在多大程度上是语义网搜索呢?InfoQ中文站就等等这些问题采访了Wolfram研究公司中国区商务经理王翔。
Vijay Narayanan在这篇文章中对数据服务的几个方面进行了介绍,它们都是SOA实践者和数据架构师感兴趣的内容。本文对数据服务的几个方面进行了介绍,包括需求定义,基本原理和好处、范围、开发以及消费模式。
罗马不是一天建成的,豆瓣的技术架构也是随着用户规模的增长一直在持续变化中。在本次演讲中,豆瓣的首席架构师洪强宁将与大家一起分享从上线时的单台服务器架构开始一直到现在的豆瓣架构变迁历程。
Billy McCafferty展示了S#arp架构,它在ASP.NET MVC框架的基础上,荟萃了当今的最佳实践,应用在ASP.NET Web应用程序的架构设计中。
中国作为新兴市场中的新兴市场,是Sun在美国之外实施SSE(SUN Startup Essentials)项目重点关注的地区。在QCon Beijing 2009期间,InfoQ中文站有幸对此项目的负责人王雷先生进行了采访,探讨了关于开源、新兴市场、SSE等话题。
HTML5 是由 WHATWG发起的,最开始的名称叫做Web Application 1.0,而后这个标准吸纳了Web Forms 2.0的标准,并一同被W3C组织所采用,合并成为下一代的HTML5标准。
没有回复
关注此讨论 回复