这是来自Adobe开发者中心的一篇文章,原文地址是:
http://www.adobe.com/devnet/flex/articles/tourdeflex_dashboard_samples.html
注意:这篇文章第一次发表是在作者的博客上,时间是2009年6月24日。
在过去的几个周里,我们在Tour de Flex的Flex Data Access类别中增加了一些新的示例。这些示例都是由Christophe
Coenraets 或Holly Schinsky创建的。以下是这些示例的概述:
下面的很多示例都使用了BlazeDS或LiveCycle DS。如果你对这些产品还不熟悉,我推荐你看看Holly写的快速入门。
基础信息
HTTPService – 基础示例
显而易见,它演示了如何使用HTTPService来解析XML和其它的响应(通过HTTP或HTTPS)。这是Flex中最基础的数据通信类型。
HTTPService – HTTPService 事件
这个示例是根据上一个示例创建的,它演示了如何捕获来自于HTTPService的返回结果事件和失败事件。注意HTTPService的调用是异步的,所以了解这些事件是很关键的。
HTTPService – E4X
这个示例同样使用了HTTPService但是详细阐述了E4X这种返回格式。
HTTPService –
使用代理服务(BlazeDS和LCDS)
之前的所有的示例中都是使用了封装好的HTTPService组件来直接连接数据源。有时候采取直接连接数据源的方式不是很实际,因为它可能来自于不同的域(并且缺乏一个crossdomain.xml入口),所以需要一个代理的服务。BlazeDS和LCDS可以提供这个代理服务,就像Tour
de Flex中的示例所述的一样做一下简单的配置就可以。
WebService – 基础示例
使用WebService标签,你可以向基于SOAP的WEB服务发起请求。一个WEB服务返回的对象会自动的转换为ActionScript可用的对象。在另一方面,ActionScript的对象也会作为传递的参数传送到WEB服务的方法,顺序则依照WSDL中的定义。
WebService –
使用代理服务(BlazeDS或LCDS)
同我们上述的HTTPService代理相似,有时候出于跨域的原因,不能直接访问WebService。同样的,BlazeDS/LCDS
代理提供了一个简单的解决方式。
快速的远程连接
RemoteObject –
基础的Java远程连接(BlazeDS或LCDS)
如果你在连接一个Java的后端,它可能通过使用RemoteObject直接调用Java对象的方法。除了能直接调用Java方法这个显而易见的好处,另一个更大的好处是你可以使用AMF来传递数据。AMF是压缩的,二进制的格式,所以传输速度要大大快于XML和其它文本格式。Lee
Brimelow 写了一篇非常好的关于AMF的日志在这里。这个Tour de
Flex示例简单的调用了Flex.samples.product.ProductService,这是一个简单的Java类,用于在DataGrid中显示数据。
James Ward创建了一个非常好的应用,这个应用是基于AMF的,并结合了其它的一些数据载入技术。
RemoteObject –
基础的Java远程连接2(BlazeDS或LCDS)
这个示例跟上述的示例非常类似,但是它同样详细演示了如何捕获来自于远程呼叫的返回结果和失败事件(远程对象的调用也是异步的)。
RemoteObject – 远程对象事件 (BlazeDS 或 LCDS)
另一个非常好的关于远程对象事件的示例。
RemoteObject – 强类型的对象 (BlazeDS 或 LCDS)
这个远程对象的示例演示了如何把一个ActionScript的对象映射到一个远程的Java
对象。在示例的自述文件中包含了后端的Java源代码,所以你可以看见哪些数据是被映射的。
奇妙的数据管理
基础的数据管理(LCDS)
LiveCycle Data Service ES Data Management
Service提供了一个有效的办法来在多个视图和多个客户端之间同步数据。通过使用LCDS,你不需要跟踪对数据的更改,也不需要请求远程服务来通知后端来自客户端数据的更改(创建,更新,删除)。为了演示这个特性,这个示例建议你在两个不同的浏览器中打开链接测试(这两个浏览器甚至可以在不同的计算机上)。
每一个浏览器都会显示一个DataGrid来显示若干行的数据。当你在一个浏览器中更新了数据,你会看到这个更改会应用到其它的浏览器上,保持视图的同步。这个典型的代表性的功能需要很复杂的代码来实现,但是就如你在Tour
de Flex的示例中看到的,它是很容易通过LiveCycle Data Service来实现的。
冲突管理 (LCDS)
这个示例同上面的示例类似,也同样需要你打开两个浏览器窗口,并且两边的数据视图是同步的,但是这个示例添加了一些代码来控制来自两个用户冲突的情况。在浏览器一或浏览器二中尝试改变数据,当你在其中一个浏览器中保存数据的时候,那么另一个浏览器就会提示你发生了冲突。这是关于LCDS保存数据的另一个示例。
数据分页(LCDS)
这个示例演示了对一个大数据集的自动分页过程。与其一次性载入全部数据,不如保持载入最新更改的数据。数据分页能加速应用的响应时间最大限度减轻客户端内存的消耗。这个示例显示了一个简单的DataGrid来每次载入100行数据。当你滚动数据的时候,你会看到一个短暂的延时然后会显示下一个100行的数据。它是另一个让开发者避免写大量复杂代码的LCDS的示例。
后端持久性选项(LCDS)
在数据管理类别的最后一个部分是一个子类,演示了3个不同的方式来通过数据管理特性管理数据的持久性。其中一个示例使用了SQL,一个使用了Hibernate,最后一个则演示了如何创建一个足够复杂的自定义的装配器。
实时的发布/订阅信息
聊天(BlazeDS或LCDS)
这个示例演示了如何创建一个简单的聊天室客户端,并使用BlazeDS或LCDS提供的发布/订阅消息的机制。
协作(BlazeDS或LCDS)
这个示例使用发布/订阅消息的方式创建了一个简单的协作应用。这个示例提示你要在两个或更多的浏览器中打开这个链接。当你点击了按钮来切换从公司一到公司二的图形,其它的客户端都可以看到同样的内容。
实时控制台(BlazeDS或LCDS)
这个示例展示了如何通过Tour de Flex 服务发布一个实时的数据源。这个数据是真实的并且由Tour de
Flex服务提供。DataGrid中显示的每一行对应一个Tour de Flex中正在被查看的示例。更多的关于这个控制台的信息点击这里查看。
更多的示例即将被添加到Flex数据通信类别并演示如何让Flex应用连接到ColdFusion,.Net,PHP和其它的后端代码。保持关注!
更新:.NET和PHP示例已经由MidnightCoders添加了。