ASP.NET中實現Flash與.NET的緊密整合

來源:互聯網
上載者:User
asp.net

一、 簡介 Macromedia公司的Flash如今被廣泛應用於互連網上以實現增強Web網站的內容描述。Macromedia最近發行的Flash(Flash 6和Flash MX)版本已經明確表示,Macromedia正在十分認真地考慮把Flash作為Web應用程式開發的介面選擇。對於一個介面來說,Flash可能是一偉大的選擇;然而,這個選擇不是用它來替換商業邏輯,查詢管理和安全。對於一個Web開發人員來說,要實現真正強壯的效能和企業級能力,你需要.NET,Flash以及豐富的描述層支援,並聯合微軟的.NET技術。

  Flash包括ActionScript-一種指令碼語言,用來對動畫添加互動性。從Flash 5中開始引入ActionScript指令碼以來,Macromedia不斷地改進它,從一個簡單的指令碼語言到相當牢固但仍存在許多局限性的編程特性。在Flash MX 2004中,Macromedia引入了ActionScript 2.0-它支援新的功能和新的方法來構建代碼。為了更易於理解本文,你應該先閱讀一些有關用ActionScript來構建Flash網站的基本知識。

  Macromedia已經介紹了方法來實現容易地整合外部的資料到Flash應用程式中以允許更複雜和強壯的資料驅動應用程式。Flash和.NET都把它們自己推薦為跨平台的解決方案並且,由此而成為自然的搭擋。仍然,聯結這兩項技術不是簡單的任務。這篇文章將同你一起討論把Flash和.NET應用程式整合到一起的幾種方法。

  二、 整合Flash和ASP.NET

  把Flash動畫嵌入到ASP.NET頁面

  Macromedia Flash動畫通過聯合使用OBJECT和EMBED標籤放置在.aspx頁面中。EMBED標籤最初是Netscape公司為了實現與Netscape 2.0或更進階的版本一起工作而開發的。以後,這個標籤被微軟的Internet Explorer(MSIE)所採用。為了實現瀏覽器安全色性,可以共同使用MSIE特定的OBJECT標籤和EMBED標籤。下面的HTML代碼展示了用OBJECT標籤和EMBED標籤來嵌入一個Flash動畫(*.swf檔案)的情形:

  三、 把Flash串連到外部的資料  有三種方法可以把Flash動畫與外部資料整合到一起:FlashVars,LoadVars以及新的FlashRemoting技術。其中最簡單的一種方法是,通過使用FlashVars來傳遞代碼的HTML部分中的變數,實現把外部資料從一個.aspx頁面傳遞到一個嵌入在Web頁面中的一個Flash動畫。使用FlashVars設定的這些變數值可以在Flash動畫的根層次上進行存取。為能在所有的瀏覽器環境下運行,該FlashVars屬性必須在OBJECT和EMBED標籤中進行賦值。  下面是和一個對象標籤一起的FlashVars:<PARAM Name="FlashVars" Value="init=yes&check=true">   下面是和EMBED標籤一起使用的FlashVars:<EMBED src="http://www.pushad.com/Info/test.swf" FlashVars="init=yes&check=true"></EMBED>   要瞭解更多的有關FlashVars的資訊,請參考來自Macromedia的文章http://www.macromedia.com/cfusion/knowledgebase/index.cfm?id=tn_16417。  四、 為什麼使用FlashVars  不借用FlashVars,也可以把變數放在HTML標籤中-通過一個查詢串形式把它添加到.SWF檔案的URL後面,進而傳遞到一個Flash動畫。這個方法可能存在一個問題-如果這個變數在.SWF檔案載入時就需要的話,因為一個.SWF檔案應該在從伺服器發出請求資料之前就被下載和運行。變數值也可能是通過"Load Variables"方法和JavaScript在Flash中設定的。每一個這些方法都有惰散慢響應的缺點;這就是為什麼開發人員應該使用FlashVars來把資料從ASP.NET傳遞到Flash動畫的原因。下圖顯示出以一個查詢串方式傳遞變數的代碼:  任何使用FlashVars傳遞的變數都能被在Flash動畫的根層次(_level0)上進行存取。為了檢索一個Flash動畫內部的這些值,可以建立一個動態變數。下面ActionScript代碼實現在Flash中為"initvalue"賦值:_level0.initvalue = init;   五、 Flash與資料庫的通訊  一個Flash動畫不能直接存取一個資料庫。然而,Flash能夠經由任何象ASP或ASP.NET等的伺服器端技術與資料庫進行通訊。有完成這項任務的若干方法。在本文中,我們將解釋LoadVariables方法和sendAndLoad方法。  (一) 在動畫片斷中使用loadVariables方法  動畫片斷的loadVariables方法讀來自一外部的檔案或URL的資料並且為該動畫片斷的變數設定值。一旦該動畫片斷被執行個體化,在片斷事件事件處理器中的動畫片斷的裝載行動被初始化。在動畫片斷被初始化時,loadVariables方法可以被調用來載入變數。loadVariables方法是非同步調用並且Flash不會等待該調用的結果。當在一個loadVariables()行為中收到資料時,在片斷事件事件處理器中的動畫片斷的資料行為被初始化。  為了展示這個方法的用法,這個樣本根據從Flash動畫中選擇的ID從一個資料庫檢索使用者的姓名和年齡。在下面的圖中,動畫的loadVariables方法被使用來裝載資料到來自一個.aspx頁面getUserData.aspx的動畫片斷。這裡,ActionScript傳遞使用者的id-他的名字和年齡將以一個到.aspx頁面查詢串的形式顯示於Flash動畫中。

  這個getUserData.aspx頁面從顯示於下面的查詢串中檢索id值:


  現在,ASP.NET能把這個值的id傳遞到.NET商業組件中。這個樣本檢索使用者的姓名和年齡:


  正如在本節中前面所提及的,動畫片斷的onClipEvent事件處理器的資料行為被初始化,當資料被在一個loadVariables()行為中收到時。在Flash動畫中聲明下列動態變數:flashName和flashAge。下列圖顯示出ActionScript代碼-它被用於Flash動畫的onClipEvent處理器中以檢索從.aspx頁面傳回的值。

  注意:它是很重要的-與從.aspx頁面中設定的變數是相同的。在此展示的樣本中,在Flash動畫中所存取的變數為"name"-它從.aspx頁面中設定的變數是相同的(Response.Write("name="&User.name))。


  這些值現在可以被使用於Flash動畫內部。

  (二) 從動畫片斷中使用sendAndLoad方法

  在今天的互連網上,XML作為一種具有甚至能允許不同類型的應用程式之間順利交換資料潛力的通用傳輸格式,以一個文檔系統的形式佔有重要地位。XML為應用程式之間的通訊-甚至在大範圍的不同系統上的應用程式-提供一道網關機制。只要應用程式能夠共用資料(通過HTTP,檔案分享權限設定或另外的機制),並且有一個XML分析器,它們就能共用十分易於處理的結構化資訊。

  Flash MX支援XML資料轉送並且有若干種象ASP和ASP.NET的伺服器技術方法來實現交換XML。Flash MX能夠通過使用XML類-load,send和sendAndLoad或Flash MX的新的XMLConnector來發送和接收XML資料包。其中,最後一個可以被用於通過HTTP發送和接收包並且把它們綁定到Flash層的UI組件上。

  下面我們討論一下FlashXML對象的sendAndLoad方法,這是在實現面向架構的XML資料通訊,異常處理及效能方面比較受歡迎的方法。我們使用這個簡單樣本:從一個Flash用戶端把一使用者的得分的詳細資料插入到資料庫並且回送一條成功或失敗的訊息給該Flash用戶端。  (三) 在Flash中建立一個XML包  一個XML資料包能容易被建立在Flash中,如下所示:var sendXML:XML = new XML("<userid>123456</userid>");   發送一個XML包到一個伺服器端頁面-它使用ASP/ASP.NET並且處理返回XML資料包。  用法如下:xmlObject.sendAndLoad (URL: String, targetXMLObject: XML): Void   這個'xmlObject'是XML對象執行個體-它封裝必須被發送到.aspx頁面的XML;這個'URL'是指定XML對象的目的URL;'targetXMLObject'是該XML對象-它將接收從伺服器端返回的資訊。  sendAndLoad方法把一個XML包發送到一個伺服器端模板並且收到一個XML包作為響應-這不同於XML類的send方法-它僅發送一個XML包而並不期盼任何類型的響應。這其中每個方法以其自身方式發揮作用,但是有一重要的區別:XML類的send方法以一個目標作為參數-它允許你開啟一新的瀏覽器視窗或替換當前瀏覽器視窗中的內容,而sendAndLoad方法以一個XML包作為參數-它不會啟動一個新的瀏覽器視窗。因為send方法開啟一新的瀏覽器視窗,我們可以看到瀏覽器視窗本身的輸出-這可能對調試極為有用。  注意:如果發出sendAndLoad調用的Flash檔案在一個Web瀏覽器中運行,那麼目標URL將與Flash動畫處理同一個域中。如果你還需要與處於不同域中的應用程式進行通訊,那麼可以參考www.macromedia.com站上的"Cross Domain Data Loading"以瞭解更多的資訊。  下列圖形中的代碼顯示出一個XML對象的sendAndLoad方法是怎樣被用於與一個.aspx頁面通訊以及是如何處理從伺服器返回的XML的:
  上面的代碼做下列事情:  ·裝載XML字串到一個XML對象"userscore_xml"。該執行個體擁有XML-它被發送到遠程伺服器端ASP.NET頁面。  ·設定XML對象"ResponseXMLObj_xml"的ignoreWhite屬性。這個XML對象執行個體持有來自伺服器的XML包。  ·調用XML對象的("userscore_xml")sendAndLoad方法以發送XML到伺服器端.aspx頁面,http://localhost/MyTestApp/scoring.aspx並儲存返回的XML包到XML對象執行個體"ResponseXMLObj_xml"中。  ·設定XML對象"ResponseXMLObj_xml"的onLoad方法。Flash收到來自伺服器端.aspx頁面的返回的XML響應-它在XML對象的onLoad方法中被處理。  ·然後,它分析收到的XML包以在Flash用戶端顯示必要的訊息。  (四) 接收從ASPX頁面的Flash中發送的XML包  下列圖形顯示出完成這項任務的代碼:  上面的程式碼完成下列事情:  ·收到從Flash用戶端發送的XML(xmlDoc.Load(Request.InputStream))。  ·分析收到的XML並把它傳遞給商業組件以插入到資料庫中。  ·形成XML訊息被傳送回Flash用戶端。在商業層引發的成功或異常條件被相應地處理並轉換成各種XML訊息-這個訊息被傳送回Flash用戶端。該Flash用戶端收到這些XML訊息並相應地顯示它們。  六、 結論  Flash和.NET技術今天在市場上正逐漸流行開來並將很可能會在不斷增加的應用程式架構中一起成為成功的夥伴。這兩種技術處理一些同樣的問題,但是實質上不同的。Flash MX使得Web網站經曆互動性,而.NET協助建造公司專屬應用程式軟體。正如在這篇文章中所探索的,整合Flash和.NET應用軟體是完全有可能的。每一步都是在做出決定-如何串連這兩部分並在戰略上進行正確的架構策劃。  儘管圍繞FlashRemoting的新一代架構正在此領域不斷擷取動力,然而本文所討論的方法還將在幾年之後才能應用於大型領域。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.