首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网络技术 > 网络基础 >

【转】Cairngorm+BlazeDS调整Flex+Java的Demo(实例)

2012-11-23 
【转】Cairngorm+BlazeDS整合Flex+Java的Demo(实例)转至:http://blog.dreamhui.net/archives/64?今天学习Cai

【转】Cairngorm+BlazeDS整合Flex+Java的Demo(实例)

转至:http://blog.dreamhui.net/archives/64

?

今天学习Cairngorm,找了份教程,写了个Demo,以记录并分享学习过程。

Cairngorm的各个部分:

    ModelLocator:在一个地方存储程序中所有的值对象(ValueObjects,数据)并共享变量。它与HTTP Session对象相类似,不过它存储在Flex客户端,而不是存储在一个中间层程序服务器的服务器端。View(视图):一个或多个Flex组件(Button,panel,combo Box,Tile等等)绑定到一起形成的一个特定的个体,使用ModelLocator中的数据并且针对用户的交互动作(如点击,鼠标滑过,拖拽等)产生自定义的CairngormEvents。FrontController(前端控制器):接受CairngormEvents并且将它们映射到CairngormCommands。Command(命令):处理业务逻辑,调用CairngormDelegates或其他的Commands,以及更新ModelLocator中存储的值对象和变量。Delegate(委托):由一个Command创建,它将远程过程实例化并且将结果返回给Command。Service(服务):定义链接到远程数据库的远程过程调用(HTTP,Web Services等)。

Cairngorm的工作流程大体是这样:

客户端界面由View组成的。View使用Flex的binding(绑定)来显示ModelLocator中包含的数据。View根据诸如鼠标点击,按钮按下以及拖拽之类的用户动作产生Event。这些Event被FrontController“广播”并“监听”,FrontController会将Event映射到Command。Command包括业务逻辑,创建所需的Delegate,处理Delegate的响应,以及更新存储在ModelLocator中的数据。由于View是绑定到ModelLocator中的数据上的,所以当ModelLocator中的数据改变的时候View也会自动更新。Delegate调用Service并且将结果提交给Command,这一步是可选的,但是推荐这么做。Service调用远程数据然后将结果提交给Delegate。

Delegate的最简单的形式就是一个中间人的角色。如果一个Command需要调用webservice来获得一些数据,它将创建一个Delegate来完成这个调用。一个Command创建一个Delegate,Delegate调用一个指定的dataService,Service返回结果给Delegate,Delegate返回结果给Command。

Delegate并不是100%必需的,但是当涉及测试&程序环境的时候它们很有帮助。相对于在Command代码中使用查找替换改变所有的引用来测试,将一个Delegate重映射到一个测试Service更为简单。

下面说我的Demo:完成用户登录在后台进行验证合法性,并反馈给前台。

工具及环境介绍:详见我的上篇文章,BlazeDS实现Flex和Java通信的Demo

版本说明:

Flex:Flex 4;

ActionScript:ActionScript 3;

Java JDK:jdk1.6.0_20

Cairngorm,我用的是版本2.2,好像Cairngorm 3已经发布了,但是官网没提供下载。下载cairngorm2_2_1-bin.zip,我们要用的已经打包好的资源文件Cairngorm.swc,将其拷贝到Flex工程的libs目录下面即可。

    后台Java服务端项目CairngormDemo工程组成:

    【转】Cairngorm+BlazeDS调整Flex+Java的Demo(实例)

    相应代码:
    UserVO.java

    按照 ValueObjects模型(UserVO.as)——>模型定位(UserModelLocator.as)——>视图(loginView.mxml及主应用视图CairngormDemo.mxml)——>事件(LoginEvent.as)——>前端控制器(LoginController.as)——>Command(LoginCommand.as)——>委派代理(LoginDelegate.as)——>服务定位(LoginServiceLocator.mxml)依次的相应代码如下(因为文件中注释较多,不多写注解):
    UserVO.as

    --><!--<model:UserModelLocator id="uLocator" />--></fx:Declarations>?<!--~~~~~~~~~~~~~~~~~~~~~~UI Components~~~~~~~~~~~~~~~~~~~~~~--><view:loginView id="lgView" top="10" horizontalCenter="0" width="30%" height="30%" fontSize="20"/></s:Application>

    LoginEvent.as

    12345678910111213141516
    <?xml version="1.0" encoding="utf-8"?><cairngorm:ServiceLocatorxmlns:fx="http://ns.adobe.com/mxml/2009" xmlns:s="library://ns.adobe.com/flex/spark" xmlns:mx="library://ns.adobe.com/flex/mx"xmlns:cairngorm="http://www.adobe.com/2006/cairngorm">?<!--~~~~~~~~~~~~~~~~~~~~~~D 

热点排行