Flex与JSON及XML的互操作
平台需要互操作性。在这篇文章中,作者仔细研究了Flex和JSON及XML的互操作性。文章也包含了使用E4X库来将XML映射到图表和表格组件的内容,还演示了如何使用as3core库来解码JSON消息。
作者 Srini Penchikala译者 张龙 发布于 2008年10月7日 上午9时34分
无论在构建过程中,还是在创建单个组件(如领域类、控制器)时,典型的Grails应用都会在应用生命周期的关键点抛出事件。我们可以将这些应用事件作为扩展点来创建监听器对其进行拦截,并使用定制行为对其作出响应。除了HTTP请求和响应这种传统的Web应用生命周期以外,Grails还提供了大量定制的接触点,开发者可以利用它们处理事件模型、给出定制的应用行为。这些接触点包括:
针对Gant脚本的事件处理器首次出现在0.5版中,并在Grails目标和插件脚本的执行过程中被触发。它们在Events.groovy脚本中以闭包的集合形式实现(就像Grails中的其它东西一样),其名称都以“event”开头。当Gant脚本中发生“事件”时,Grails就会调用相应的事件闭包。Grails在如下位置搜寻这些脚本:
我们可以在宏观以及微观层次处理Grails的事件。宏观层次就是构建和应用范围,而微观层次处于领域层,领域类在与数据库发生交互时发布事件。最近Scott Davis撰写了一篇文章,谈到了Grails的事件模型以及贯穿于Grails应用生命周期的事件如何能帮助开发者更好地定制应用的行为。开发者可以通过创建一个Events.groovy文件、并在其中编写定制代码来扩展构建过程,而无需修改标准的Grails脚本。
构建事件:
“grails create-app”和“grails run-app”(或者是“grails war”)之间所有的构建过程步骤都会在关键点抛出事件。你可以通过创建监听器来监听项目中的这些构建事件。 这些事件还可用于安装后配置和应用升级。当你想定制GRAILS_HOME/scripts中的脚本时(以抛出定制事件),Scott建议将这些文件拷贝到项目中的scripts目录中,以便这些客户化脚本也与其他文件一样被加到源码控制系统中。
应用事件:
除了构建事件,Grails开发者还可以捕获应用事件以定制应用的逻辑。在Grails每次启动和停止时,位于grails-app/conf目录中的引导文件都会运行。该文件中的init块会在应用启动时被调用,destroy块会在应用停止时被调用。如果想在init和destroy事件触发时查看调试信息,请键入以下命令以交互模式启动Grails:
grails interactive"
扩展应用事件的一个例子就是在启动时向数据库增加新的记录。Scott提到了在BootStrap.groovy中利用Failsafe数据库进行插入和删除以避免数据库中的重复记录。他还解释了Bootstrap脚本中特定于环境(开发、测试或者产品)的行为。这要使用GrailsUtil类,请在脚本开头导入grails.util.GrailsUtil,并调用静态方法GrailsUtil.getEnvironment()来确定你正处在哪种模式下(由于Groovy简化的getter语法,该方法调用可以简写为GrailsUtil.environment)。
领域类事件:
这包括针对CRUD操作的四个事件回调:onLoad、beforeInsert、befortUpdate及beforeDelete,当执行数据库操作时就会触发它们。
Grails支持GORM事件及Hibernate插件,以对上述事件进行补充。GORM事件的定制包括事件的注册,在删除、插入及更新发生时会触发这些事件。Hibernate的事件插件为领域模型提供了支持,可以使用以下这些方法来对Hibernate的事件系统进行回调:afterInsert、afterUpdate、afterDelete、 beforeLoad、afterLoad、beforeSave及afterSave。其它的领域层事件就是领域类的时间戳了。如果你提供了一对特别命名的字段(lastUpdated与dateCreated),GORM就会自动为类增加时间戳。
在Web应用的其它层上,Grails提供了Web流执行事件以管理Web流的执行(从一种状态转化为另一种状态)和Ajax事件(如果Web应用中发生了某个事件就会去调用一个特定的JavaScript函数)。
Grails还支持对自动重新加载事件的拦截,这可用来监控资源的改变,当发生变化时会重新加载资源。这就是Grails在运行时能重新加载应用的原因。
查看英文原文:Customize Grails Application Behavior Using the Event Model
平台需要互操作性。在这篇文章中,作者仔细研究了Flex和JSON及XML的互操作性。文章也包含了使用E4X库来将XML映射到图表和表格组件的内容,还演示了如何使用as3core库来解码JSON消息。
本文将简要介绍面向组合编程(COP,Composite Oriented Programming)的概念,展示它如何规避OOP存在的一些问题,并重新点燃使用可重用部件组装领域模型(Domain Model)的希望。
Mike Snell和Lars Powers用他们最近由Sams出版的新书《Visual Studio 2008揭秘》,试图帮助大家提高开发人员的生产力。本文包括一个下载样章——第10章调试。
Pierre Vigneras在本文中讨论了作为标准之一的BPEL所存在的问题。Pierre先给我们大致介绍了一个简单的并行流程,接着讨论了从业者在试图以一个结构化模型为基础表达非结构化流程时遇到的一系列问题。
Jeff Dwyer就关于他的新书(《Pro Web 2.0 Application Development with GWT》)、GWT1.5以及创建可搜索的Ajax应用谈了一些他的见解。
我们需要设身处地地为客户及客户的业务本身着想,与客户同舟共济。更多创新的思路、产品和模式也同样将为IT业带来新的出路。IT业并不需要坐以待毙,在春天到来之后,市场将会更加繁荣!
没有回复
回复