ASP.NET/Flash應用程式設計概念

基本觀念

在ASP.NET/Flash 開發應用程式時,必須先確定Flash與ASP.NET彼此之運作方式。Flash於web上運作時,會將complie完成之swf檔案下載至 Client端,由Client端的Flash Player執行該swf應用程式,除非事先於Flash內用ActionScript語法設計與Server端溝通,否則Flash本身是獨立運作於 Client端,此運作方式類似Java Applet模式,Flash應用程式下載完畢之後,執行過程將只對於Client端系統產生負擔,與Server端將會有無通訊狀況的情形。與 Server無通訊狀況下,在ASP.NET環境下使用Flash應用程式時,使用Session方式儲存資訊,可能會造成Session timeout而要求使用者重新登入,因此如果長時間使用Flash來提供使用者介面,如果不需與Server端傳遞訊息下,請定期Touch Server端Reset Session,避免Session timeout的情形發生。

Flash傳遞資料的方式

再使用Flash做為前端UI給Client互動時,必須考慮到需儲存資料回傳至Server端的方式。由於Flash本身是類似離線瀏覽的方式運作且獨立執行於Client端,因此如果有資訊需要存放於Server端時,則必須透過ActionScript將資料傳遞出來。
傳遞資料回Server端的方式可以採用下列方式(當然還有其他的方法,但是我比較喜歡這三種):

  • WebService
  • JavaScript
  • Form POST/GET
其中個人最喜歡使用的方式是透過WebService的方式呼叫ASP.NET後端作處理,因為WebService的運作方式,不需要額外開啟網頁而後端 WebService也可提供給非Flash之其他網頁程式做呼叫,讓WebService成為一個獨立的ServiceProvider,對於日後修改上更為簡單便利。
而JavaScript的方是主要是可以在Client端與網頁本身互動為主,當然也可以延伸做AJAX的網頁與 Flash之間溝通,不過由於Flash本身就已經具備AJAX特性中,不重新載入整份網頁,僅讀取部分資料作畫面上變更之效果。因此 JavaScript之間的溝通反而是便利於取得HTTP參數與Cookie資訊,來讓Flash做相對應的呈現。
FORM POST/GET則是一般網頁程式最常使用的傳遞方式,在Flash的呼叫上必須注意,不要讓POST/GET讓Flash的畫面有reload的動作,否則flash當時填寫的資料將會消失,此方法可以利用一個沒有顯示的frameset或彈出視窗的方式做處理,否則必須確認flash本身允許資料的流失。
#07/19/07

Flash用於ASP.NET

今天如果我們讓Flash幫忙ASP.NET處理前端與使用者之網頁互動時,可以預期的目標是,Flash本身即具備AJAX不需要整個網頁重新整理的方式就將資料回傳給後端,個人喜歡用WebService方式去與Flash溝通。而前端交給Flash做畫面上的設計,可以降低HTML/CSS網頁的比重,而Flash本身於網頁排版是屬於Object元件,於圖層深度(Z-index)具備最高層的特性,造成其他的圖層無法高於Flash,因此如果要在Flash上跳出一些彈跳訊息,除了透過Javascript的Alert與InputBox外,建議還是由Flash內自行設計彈跳訊息就好。而 Flash本身是向量型元件,再放置於網頁上如果異動Width/Height時,會自動作比例上的調整,而不需要針對不同的解析度做設計,系統開發的網頁可以自行透過JavaScript檢測目前解析度與瀏覽器可顯示的範圍,於Flash載入時,給予適當的Width/Height,讓整個畫面與瀏覽器做適當的搭配。

沒有留言:

橫式廣告