1. 程式人生 > >FLEX實現Web實時監控

FLEX實現Web實時監控

這是來自Adobe開發者中心的一篇文章,原文地址是:

注意:這篇文章第一次發表是在作者的部落格上,時間是2009年6月24日。

在過去的幾個周裡,我們在Tour de Flex的Flex Data Access類別中增加了一些新的示例。這些示例都是由Christophe       CoenraetsHolly Schinsky建立的。以下是這些示例的概述:

下面的很多示例都使用了BlazeDS或LiveCycle DS。如果你對這些產品還不熟悉,我推薦你看看Holly寫的快速入門

基礎資訊

HTTPService – 基礎示例

顯而易見,它演示瞭如何使用HTTPService來解析XML和其它的響應(通過HTTP或HTTPS)。這是Flex中最基礎的資料通訊型別。

HTTPService – HTTPService 事件

這個示例是根據上一個示例建立的,它演示瞭如何捕獲來自於HTTPService的返回結果事件和失敗事件。注意HTTPService的呼叫是非同步的,所以瞭解這些事件是很關鍵的。

HTTPService – E4X

這個示例同樣使用了HTTPService但是詳細闡述了E4X這種返回格式。

HTTPService – 使用代理服務(BlazeDSLCDS

之前的所有的示例中都是使用了封裝好的HTTPService元件來直接連線資料來源。有時候採取直接連線資料來源的方式不是很實際,因為它可能來自於不同的域(並且缺乏一個crossdomain.xml入口),所以需要一個代理的服務。BlazeDS和LCDS可以提供這個代理服務,就像Tour de Flex中的示例所述的一樣做一下簡單的配置就可以。

WebService – 基礎示例

使用WebService標籤,你可以向基於SOAP的WEB服務發起請求。一個WEB服務返回的物件會自動的轉換為ActionScript可用的物件。在另一方面,ActionScript的物件也會作為傳遞的引數傳送到WEB服務的方法,順序則依照WSDL中的定義。

WebService – 使用代理服務(BlazeDSLCDS

同我們上述的HTTPService代理相似,有時候出於跨域的原因,不能直接訪問WebService。同樣的,BlazeDS/LCDS 代理提供了一個簡單的解決方式。

快速的遠端連線

RemoteObject – 基礎的Java遠端連線(

BlazeDSLCDS

如果你在連線一個Java的後端,它可能通過使用RemoteObject直接呼叫Java物件的方法。除了能直接呼叫Java方法這個顯而易見的好處,另一個更大的好處是你可以使用AMF來傳遞資料。AMF是壓縮的,二進位制的格式,所以傳輸速度要大大快於XML和其它文字格式。Lee Brimelow 寫了一篇非常好的關於AMF的日誌在這裡。這個Tour de Flex示例簡單的呼叫了Flex.samples.product.ProductService,這是一個簡單的Java類,用於在DataGrid中顯示資料。

James Ward建立了一個非常好的應用,這個應用是基於AMF的,並結合了其它的一些資料載入技術。

RemoteObject – 基礎的Java遠端連線2BlazeDSLCDS

這個示例跟上述的示例非常類似,但是它同樣詳細演示瞭如何捕獲來自於遠端呼叫的返回結果和失敗事件(遠端物件的呼叫也是非同步的)。

http://gregorywilson.smugmug.com/photos/566219731_cbsTb-S.jpg

RemoteObject – 遠端物件事件 (BlazeDS LCDS)

另一個非常好的關於遠端物件事件的示例。

RemoteObject – 強型別的物件 (BlazeDS LCDS)

這個遠端物件的示例演示瞭如何把一個ActionScript的物件對映到一個遠端的Java 物件。在示例的自述檔案中包含了後端的Java原始碼,所以你可以看見哪些資料是被對映的。

奇妙的資料管理

基礎的資料管理(LCDS)

LiveCycle Data Service ES Data Management Service提供了一個有效的辦法來在多個檢視和多個客戶端之間同步資料。通過使用LCDS,你不需要跟蹤對資料的更改,也不需要請求遠端服務來通知後端來自客戶端資料的更改(建立,更新,刪除)。為了演示這個特性,這個示例建議你在兩個不同的瀏覽器中開啟連結測試(這兩個瀏覽器甚至可以在不同的計算機上)。

http://tourdeflex.adobe.com/remotesamples/DataAccess/datamanagement_simple_update/screenshot.jpg

每一個瀏覽器都會顯示一個DataGrid來顯示若干行的資料。當你在一個瀏覽器中更新了資料,你會看到這個更改會應用到其它的瀏覽器上,保持檢視的同步。這個典型的代表性的功能需要很複雜的程式碼來實現,但是就如你在Tour de Flex的示例中看到的,它是很容易通過LiveCycle Data Service來實現的。

衝突管理 (LCDS)

這個示例同上面的示例類似,也同樣需要你開啟兩個瀏覽器視窗,並且兩邊的資料檢視是同步的,但是這個示例添加了一些程式碼來控制來自兩個使用者衝突的情況。在瀏覽器一或瀏覽器二中嘗試改變資料,當你在其中一個瀏覽器中儲存資料的時候,那麼另一個瀏覽器就會提示你發生了衝突。這是關於LCDS儲存資料的另一個示例。

http://tourdeflex.adobe.com/remotesamples/DataAccess/datamanagement_update/screenshot.jpg

資料分頁(LCDS)

這個示例演示了對一個大資料集的自動分頁過程。與其一次性載入全部資料,不如保持載入最新更改的資料。資料分頁能加速應用的響應時間最大限度減輕客戶端記憶體的消耗。這個示例顯示了一個簡單的DataGrid來每次載入100行資料。當你滾動資料的時候,你會看到一個短暫的延時然後會顯示下一個100行的資料。它是另一個讓開發者避免寫大量複雜程式碼的LCDS的示例。

後端永續性選項(LCDS)

在資料管理類別的最後一個部分是一個子類,演示了3個不同的方式來通過資料管理特性管理資料的永續性。其中一個示例使用了SQL,一個使用了Hibernate,最後一個則演示瞭如何建立一個足夠複雜的自定義的裝配器。

實時的釋出/訂閱資訊

聊天(BlazeDSLCDS

這個示例演示瞭如何建立一個簡單的聊天室客戶端,並使用BlazeDS或LCDS提供的釋出/訂閱訊息的機制。

協作(BlazeDSLCDS

這個示例使用釋出/訂閱訊息的方式建立了一個簡單的協作應用。這個示例提示你要在兩個或更多的瀏覽器中開啟這個連結。當你點選了按鈕來切換從公司一到公司二的圖形,其它的客戶端都可以看到同樣的內容。

http://tourdeflex.adobe.com/remotesamples/DataAccess/messaging_collaboration/screenshot.jpg

實時控制檯(BlazeDSLCDS

這個示例展示瞭如何通過Tour de Flex 服務釋出一個實時的資料來源。這個資料是真實的並且由Tour de Flex服務提供。DataGrid中顯示的每一行對應一個Tour de Flex中正在被檢視的示例。更多的關於這個控制檯的資訊點選這裡檢視

http://gregorywilson.smugmug.com/photos/545702434_sSj28-S.gif

更多的示例即將被新增到Flex資料通訊類別並演示如何讓Flex應用連線到ColdFusion,.Net,PHP和其它的後端程式碼。保持關注!

更新:.NETPHP示例已經由MidnightCoders添加了。