`
hereson
  • 浏览: 1430379 次
  • 性别: Icon_minigender_1
  • 来自: 苏州
社区版块
存档分类
最新评论

基于Ciarngorm微结构开发Flex RIAs

阅读更多
第六章:快速有效地使用Cairngorm和Flex开发
在这个系列最后的文章上, 让我们花费一点时间站在Cairngorm最高点上往下看,看看我们到底爬了多高了。

在学习了上面各章后, 你现在已经具备了开发RIA(rich Internet application)相应的知识、工具, 和专门技术, 运用你所学的课程就能安全严密地应付任一个应用开发项目, 不管问题一开始有多么地复杂。

应用这些课程学到的知识, 你能一致地, 有效地, 迅速地完成RIA的设计、开发, 充满信心地提交RIA,因为你所使用的方法都是在各种各样复杂的挑战中被证明是有效的。

让我们快速回顾一下Cairngorm的不同模块及它们是如何协作工作的,来巩固知识。回忆一下你为了达到传递feature到应用程序的目标所必须设置的基础结构吧。

最后,让我们置身于CairngormStore的开发中,不断练习来确定你现在已经可以直接应用Cairngorm开发你自己的应用程序,很多Flex开发人员就是这样成功的。

让我们直入主题,来复习一下Cairngorm的结构。这样来比喻这种结构:Cairngorm能很轻松地在人跟机器之间建立一种和谐,听取用户的需求,确定用户获得他们所需的,然后将结果反馈给用户。

前台控制器监听用户动作

用户处于这次会话的主导地位。你的RIA等待来自用户的一些提示。这些提示包括:点击按钮,拖放图标,双击行或是发送表单,这些都叫做“用户动作”

Cairngorm 将这些用户动作翻译成Cairngorm事件。无论是点击,按下,拖曳,放下,提交的事件都代表用户的需求,你使用事件广播器广播事件。事件广播器是Cairngorm会话的开始。

前台控制器模块是Cairngorm事件的唯一监听者。聚集不同事件句柄,前台控制器确保满足用户的需求。

无论如何,前台控制器不做具体的工作。它只是一个管理者,不是一个工人。前台控制器负责管理着一份名单“谁做什么?”,一份命令名单,命令对应着相应的事件。

命令做全部的工作

一旦前台控制器发现一个事件对应的命令,它将告诉命令去执行。前台控制器告诉任一或每个命令去做什么以一种一致的方式:前台控制器调用命令中的execute()方法,但命令会做它自己特殊的事。

将服务器端的业务逻辑委派给业务代理

很多情况下,命令需要服务器支持。在RIA中,许多业务逻辑执行在客户端。但是或多或少,你需要将不些业务逻辑移到服务器端执行。

命 令不关心一些事是如何完成的。它们只关心它完成了。命令更喜欢将服务器端的业务逻辑委派给其它类。这是好事,毕竟,一些命令要实现远程任务,它们都会需要 相同的服务。另外,对全部命令来说,事务逻辑还没有写在服务器端。可能命令只是简单调用虚构的业务代理类,服务器端结构中并不存在这样的类,但是业务代理 提供了一种接口,以备未来使用。

所以不论何时你有业务逻辑,将它放在业务代理类中,这样你的命令可以调用其中的方法。

业务代理在服务定位器中寻找服务

业务代理为命令和在服务器端的服务间提供了一种完美的接口。这些服务可能是Java服务,ColdFusion组件,Web Services,或是简单的HTTP服务。业务代理对待这些服务都一样,当命令提出时调用它们,当服务是可用时立即返回结果给命令。

无论如何,这些服务的具体实现(Java类名或是CFCs,无论它们有名称或是没名称的服务,WSDL文件,或是HTTP服务的URLs)都装入一个服务库里,叫做服务定位器。

服务定位器是你的RIA需要的全部服务的目录。因为只有业务代理有权调用服务,只有业务代理使用服务定位器在调用这些服务前按名称定位服务(不关心服务的实现),返回结果给命令类。

记住,任何一个命令类(负责响应服务调用,从业务代理中返回数据)都必须实现响应接口。这样,业务代理知道命令有一个onResult()方法来获取全部结果,一个onFault()方法来截获错误。

以Value Objects来传输数据

数据在客户端和服务器端传输时会发生什么,在客户端又如何?Cairngorm强调你可以处理数据可以稍微自由些,将它装入Value Objects,Value Objects强调了数据在业务形式上是什么(它是规则),而不是技术形式上是什么(包含字符和数字对象的数组)。

模型定位器中的存储状态和模型关联视图

最后,你的应用程序必须与用户交流。在Cairngorm中,模型定位器保存着全部应用程序状态。虽然我们不关心用户的体验是如何用MXML和ActionScript实现的,但是我们强调在任何地方视图总是动态的,视图使用数据绑定将数据绑定到模型定位器。

模型定位器只包含Value Objects.当你的命令类使用业务代理去调用服务器端的业务逻辑时,它实现了响应接口,在onResult()方法实现接收Value Objects或是Value Objects集合。

Cairngorm应用程序会话的最后部分引起的结果是命令更新了模型定位器中的用Value Objects表示的新状态。模型定位器使用数据绑定来通知视图,用户接口更新来显示新的数据,完成用户会话。

以上我冗长的描述是关于通过Cairngorm架构不同设计模块的控制流。任一或是每个在应用程序中的feature都按照相同的执行过程,用户动作生成事件,事件调用服务,数据传回模型。

向Cairngorm应用程序添加新的Feature

当你向Cairngorm应用程序加入一个新的feature时,它的过程很简单:

1.注册一个事件和命令,用前台控制器使用addCommand()方法

2.实现一个新的命令如下:

a.实现execute()方法

b.实现onResult()方法从服务器中获取结果

i.用于更新模型定位器的任何结果

ii.模型定位器自动更新视图。

3.加入任何新的服务调用,在命令需要业务代理时。

4.如果这些服务调用需要新的服务时,把它们加入到服务定位器中。

另外,你需要创建Value Objects用于在命令与业务代理间,业务代理与服务器间传输,或者存储到模型定位器中。更特别的,你的ValueObjects可以在你开发应用程序前就存在,你可以不断重用它们,当你向应用程序加入新的feature时。

相似的,当你的应用程序不断扩大时,服务器端服务很快就禁闭了,应用程序开发速度更快,如下:

1.注册一个事件和命令,用前台控制器使用addCommand()方法。

2.实现一个新的命令。

这真的就是全部的。

调试一个Cairngorm应用程序

此外,调试一个Cairngorm应用程序按照相同的可见步骤。如果一个需求模块不能响应用户的动作,调试过程总是这样:

1.检查事件是否在前台控制器中注册过。

2.检查命令中的execute()方法是否被控制器调用。

3.检查相应的代理方法是否被调用。

4.检查命令中的onResult()方法是否被调用。

5.检查模型定位器中的模型是否更新。

用这五步骤,你可以很轻松地分离问题,并修复它。

一个feature经常出现在电子商务应用程序中,它叫做“需求列表”,一种产品的临时列表用于暂时存放用户以后可能要买的产品但还未加入到购物车中。

在一个灵活的团队中,需求列表的需求或是说“story”,在CairngormStore中可以这样理解:
分享到:
评论

相关推荐

    Flex_4.0_RIA开发详解

    Flex提供了一种现代的、基于标准的语言来支持公共模板设计、客户端运行环境、编程模型、开发模型和高级数据服务。富互联网应用程序(RIAs)是指像使用Web一样的简单方式来部署富客户端程序。这种程序具有比HTML更加...

    Flex 4.0 RIA开发详解.rar

    Flex提供了一种现代的、基于标准的语言来支持公共模板设计、客户端运行环境、编程模型、开发模型和高级数据服务。富互联网应用程序(RIAs)是指像使用Web一样的简单方式来部署富客户端程序。这种程序具有比HTML更加...

    flex_4 开发详解

    Flex是Adobe公司推出的一系列工具和技术,使开发人员可以开发和部署可升级的富互联网应用程序(RIAs)

    flex4之语法入门

    Flex提供了一种现代的、基于标准的语言来支持公共模板设计、客户端运行环境、编程模型、开发模型和高级数据服务。富互联网应用程序(RIAs)是指像使用Web一样的简单方式来部署富客户端程序。这种程序具有比HTML更加...

    Flex_4.0_RIA开发详解讲义

    Flex提供了一种现代的、基于标准的语言来支持公共模板设计、客户端运行环境、编程模型、开发模型和高级数据服务。富互联网应用程序(RIAs)是指像使用Web一样的简单方式来部署富客户端程序。这种程序具有比HTML更加...

    论文研究-一种基于RIAS公平的带宽分配方案.pdf

    主要提出了一种基于RPR 环网中的带宽公平分配方案。该方案以RIAS 公平为原则,首先为环网中的每个数据流确定一条瓶颈链路,然后根据瓶颈链路的约束条件得出各数据流速率的取值范围,并最终为环网上所有的数据流确定...

    RIAs with Java, Spring, Hibernate, BlazeDS, and Flex

    RIAs with Java, Spring, Hibernate, BlazeDS, and Flex

    RIA框架Cairngorm

    Cairngorm是Abode推出的Flex RIAs框架,其实是MVC的发扬光大,它由七大部分组成。 Model(数据模型M):使用singleton(单例)模式共享变量; VO( Value Object):储存特定值对象变量。 VIew(视图V):将Model的数据...

    flex开发文档devappsflash

    AIR™ is a cross-operating system runtime that allows you to leverage your existing web development skills (Flash, Flex, HTML, JavaScript, Ajax) to build and deploy Rich Internet Applications (RIAs) ...

    Enterprise Development with Flex

    This groundbreaking book shows Flex developers exactly what's required to build production-quality Rich Internet Applications (RIAs) for the enterprise. Part of the popular "Adobe Developer Library" ...

    RIAS START 医学图像处理软件

    转换图片格式,拆分序列等

    arcgis api for flex

    ArcGIS API for Flex 是一个强大的框架,利用它可以基于ArcGIS Server建立漂亮的富互联网应用程序 rich internet applications (RIAs) ,优点是运行速度快,用户体验效果会比目前的WEBGIS好。 ESRI的 Flex 资源中心...

    Flex3 in Action

    With Flex 3, Web developers at any skill level can create high-quality, effective, and interactive Rich Internet Applications (RIAs) quickly and easily. Flex removes the complexity barrier from RIA ...

    arcgis_api_for_flex_1_1

    ArcGIS API for Flex 是一个强大的框架,利用它可以基于ArcGIS Server建立漂亮的富互联网应用程序 rich internet applications (RIAs) ,优点是运行速度快,用户体验效果会比目前的WEBGIS好。 ESRI的 Flex 资源中心...

    flex基础的ppt

    Flex是Adobe公司推出的一个安装在客户端的表现层的服务器,使开发人员可以开发和部署可升级的富互联网应用程序(RIAs),它是一个基于XML标记语言、富用户界面组件库。

    getting started with Flex 3

    After finishing this guide, you'll be able to build Flash applications ranging from widgets to full-featured RIAs using the Flex SDK and Flex Builder 3.0. With Getting Started with Flex 3, you will: ...

    Pro Flex on Spring Mar 2009

    Pro Flex on Spring is about building rich Internet applications (RIAs) that combine the interactive user experiences of Adobe Flex with the delivery of back-end services through the Spring Framework. ...

    Flex4inAction

    Flex is an event-driven, object-oriented application framework and programming language that lets you build compelling and fluid Rich Internet Applications (RIAs) that run in the Adobe Flash ...

Global site tag (gtag.js) - Google Analytics