使用 Parsley 框架构建 Flex 应用程序

在最近研究了“Swiz”和“Spring ActionScript”(1、2、3)之后,我决定在新的 Parsley 框架版本中试验一下,构建 inSync(简单的 Contact Management 应用程序,我经常用于试验和演示 Flex 和 Adobe AIR 中的不同特性和技术)的 Parsley 版本。

Parsley 最初是一个依赖注入(Dependency Injection)框架。它还提供了一个非常有趣的消息传递基础结构。我不打算在此详细介绍依赖性注入:以前的 Swiz 和 Spring ActionScript 文章提供了一些背景信息,还详细列出了许多资源。
如果您只想运行应用程序并深入研究代码,可以访问以下链接:
单击此处运行应用程序。
单击此处查看源代码。
对象配置
Parsley 支持使用 MXML(比如 Swiz)、XML(比如 Spring ActionScript)、ActionScript 或者任意组合这些方法来配置应用程序的核心对象。可以扩展该框架并创建自己的配置机制。
对于 inSync 应用程序,我使用了一个简单的 MXML 配置(Config.mxml),其定义如下:

 

注意:在实际的应用程序中,您可能不希望在源代码中硬编码服务的端点。可以使用 XML 配置选项以更加“具体化”的形式配置端点。单击此处了解关于此主题的更多信息。
框架初始化
使用对应于所选配置方法的 ContextBuilder 类来初始化 Parsley 框架。下面是 inSync 应用程序的主应用程序文件。Parsley 在应用程序的 preinitialize 事件中初始化。 

依赖注入
 Parsley 支持构造函数注入、方法注入和属性注入(根据类型或 id 进行注入)。
在下面的例子(ContactForm.mxml)中,框架将注入 IContactService 接口的一个特定实现。在本例中,将注入在 Config.mxml 中创建的 ContactService 实例。这是一个按类型注入的示例。对接口进行编码可以将视图从特定的 IContactService 实现中解耦出来。
注意:Parsley 不会强迫您使用任何特定的设计模式。为了简单起见,在本示例应用程序中,我将一个服务直接注入到视图中。使用接口可以提供一定的解耦级别,但是您也可以使用其他模式(比如 Presentation Model)来获得更高的抽象级别。Parsley  的依赖注入(Dependency Injection)和消息传递(Messaging)基础结构使这些模式的实现更加简单。

注意,为了在将视图添加到舞台上时注入其依赖性,视图必须分派“configureIOC”事件。
消息传递
Parsley 提供了一种通用消息传递基础结构,支持以一种解耦的、灵活且易用的方式在对象之间交换消息:
事件分派程序和时间处理程序彼此互不了解。
事件分派程序和事件处理程序已从框架中解耦出来:可以以 Flex 的方式分派事件。
作为一个示例,我们看一下 inSync 中的搜索特性:
Toolbar 类包含一个简单的 TextInput,支持用户指定一个搜索条件。
ContactList 类在一个 DataGrid 中显示搜索结果。
Toolbar 类定义如下(为了保持条理清晰,已删除不重要的代码):

注意,它在搜索输入字段的内容发生变化时分派一个 SearchEvent 事件。
该事件被定义为一个托管事件(使用 ManagedEvents 注释),表示框架将确保关注该事件的所有实体都会收到该事件。
如何注册托管事件的监听器呢?只需使用 [MessageHandler] 注释一个函数,无论显示对象层次结构如何,或者无论事件是否浮升(bubble),该函数都会自动成为该事件的事件处理程序。
下面展示了如何在 ContactList 中注册监听器(为了保持条理清晰,已删除不重要的代码):

 

借助简单的 [MessageHandler] 注释,每次在应用程序中分派函数参数的数据类型时都将调用该处理程序。如果您需要更严格的控制,可以使用选择器符号来指定事件类型。例如,在 MainView.mxml 中,我们将 contactDeleted 函数注册为 ContactEvent.DELETED 事件的一个处理程序,如下所示。

 

Parsley 框架还有更多消息传递功能。例如,可以使用 [MessageBinding] 将一个对象的属性绑定到一个事件的对应属性。

 

安装说明
1 从此处下载项目
2 将其导入 Flex Builder
3 运行应用程序。应用程序默认配置为使用 MockService (ContactServiceMock),所以它运行时不需要任何后端。
 如果希望使用 Remoting service 代替 MockService:
4 将 Config.mxml 中的 <services:ContactServiceMock/> 替换为 <services:ContactServiceRemote/>
5 安装功能全面的 BlazeDS 服务器。
6 下载 insync-parsley-java.zip 并将其解压到本地文件系统中。
7将 classes/insync 复制到 blazeds/tomcat/webapps/samples/WEB-INF/classes/insync 文件夹中。
8 将以下目标添加到 blazeds/tomcat/webapps/samples/WEB-INF/flex/remoting-config.xml 文件中:

 

9 将 insync/sampledb/insync 复制到 blazeds/sampledb/insync 文件夹中
10 编辑 blazeds/sampledb 文件夹中的 server.properties,修改文件(如下所示),将 insync 数据库添加到启动步骤中。

11 启动数据库(startdb.bat 或 startdb.sh)
12 启动 BlazeDS
13 运行应用程序

本文来自:

http://coenraets.org/blog/2009/07/building-a-flex-application-with-the-parsley-framework/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值