第 1 件事:為何要讓 Flash 與資料庫做溝通?
Flash 提供了網頁高度的互動與精緻美麗的畫面效果, 但以往大家卻一直以為 Flash 的網頁無法與伺服器端溝通, 因此無法處理真正由伺服器端技術與資料庫提供的動態資料。
事實上, 利用 ActionScript 和其他輔助的技術, 我們就可以讓 Flash 和伺服器、資料庫做進一步溝通, 讓 Flash 網頁更具實用性, 而不再只是空有美麗表皮的動畫效果!
第 2 件事:怎樣能讓 Flash 與資料庫溝通?
Flash 其實不能直接存取伺服器端的資料庫, 而是利用 Flash 中的 ActionScript 程式與伺服器端的程式溝通, 再由這些伺服器端的程式負責連結資料庫並存取資料。而由於這些伺服器端的程式, 是處在資料庫和 Flash 之間, 所以我們也稱之為「中介程式 (Middleware)」。目前常見的中介程式, 包括了 ASP、ASP.NET、PHP、JSP…等等, 其實也就是一般所謂的動態網頁所使用的伺服器端技術。把以上的文字做成圖來說明的話,就更容易理解了:
Flash 與資料庫溝通的方式
在上圖中的 HTTP 請求和 HTTP 回應, 指的就是一般傳遞網頁時的協定, 也就是說, Flash
是用一般網頁傳遞資料的方式, 和中介程式 (ASP、PHP...) 溝通的。
Flash 利用一般網頁傳遞資料時的 GET 或 POST 方式 (屬於 HTTP 協定的一部分) 與中介程式溝通,
這和 HTML 網頁用表單來傳遞資料的方式是一模一樣的。
第 3 件事:只要用 Flash + 中介程式, 就可以輕鬆製作資料庫應用程式嗎?
基本上沒錯!只要用 Flash + 中介程式就可以與資料庫溝通, 可惜這樣並不輕鬆呢!因為採用這種做法時, 只能傳遞單一字串變數, 所以碰到資料較多或種類較複雜時, 就變得很麻煩。
而為了因應 Flash 在資料交換上的這種困境, 便發展出了「Flash Remoting」這種技術。Flash Remoting 的最主要功能, 就是讓 Flash 可以直接和伺服器端直接交換不同資料型態的資料 (例如布林、陣列、字串…), 讓資料的傳遞更方便迅速。
第 4 件事:Flash Remoting 是怎麼運作的?
Flash Remoting 特別的地方在於它採用 Adobe 公司的 AMF (Action Message Format) 協議
, 而 AMF 是二進制的資料型態 (binary format)。也就是說, Flash Remoting 能把 Flash ActionScript
傳給伺服器的資料轉成 AMF 的二進制的資料型態, 再交給伺服器端的中介程式。
若把 Flash ActionScript 比喻成中文, 那麼 AMF 就像是英文, 所謂的國際共通語言, 而
PHP、ASP 等中介程式就像是阿拉伯語。由於要把中文翻譯成阿拉伯語實在太難, 所以需要先把中文翻成英文, 變成國際通用的語言後, 再翻成阿拉伯語。對比回 Flash 與資料庫溝通
的情況, 就是得由 Flash Remoting 將 ActionScript 翻成 AMF 資料格式, 再進一步轉換成 PHP、
ASP 等中介程式的格式。
AMF 隨著 ActionScript 3.0 的問世, 已從 AMF0 演化到 AMF3 版本。有興趣的讀者可參閱「AMF3 Specification」(http://osflash.org/documentation/amf3)。
因此, 採用 Flash Remoting 技術 (AMF 協議) 來讓 Flash 與資料庫溝通的過程, 就像是下圖
這樣:
第 5 件事:具體來說,製作 Flash 與資料庫的應用程式時,需要接觸哪些技術呢?
依據前述的說明, 製作 Flash 與資料庫的應用程式時必須接觸的技術包括了 Flash、
ActionScript、Flash Remoting、中介程式 (PHP 或 ASP...等)、資料庫管理系統、資料庫查詢語法。
以本書來說, 中介程式採用了 PHP, 而資料庫部分則採用 MySQL。這些都屬於較簡單易學, 且免費的程式語言和系統, 只要隨著本書範例來學習、套用, 即使你沒接觸過 PHP 與資料庫, 也都能做出有趣的 Flash 資料庫應用程式。
至於 Flash Remoting, 我們必須依據所採用的中介程式, 在伺服器上安裝 Flash Remoting,
才能採用 Flash Remoting 技術來讓 Flash 與資料庫溝通。PHP 用的 Flash Remoting 就稱為AMFPHP, 是目前最受歡迎, 被大家公認為最好用的 Flash Remoting 技術。而其他中介程式也有對應的 Flash Remoting 可用 (如下表):
中文程式 |
對應的Flash Remoting |
PHP |
AMFPHP |
Java |
OPENAMF |
ASP.NET |
FLUORINE |
Perl與Python |
FLAP |
Ruby |
WebORB for Ruby on Rals |
這些說明現在看起來還有點兒抽象,不過別擔心,從下一章起我們實際開始安裝開發環境,並逐一體驗各章範例後,您就能更踏實地掌握 Flash 資料庫應用的根本觀念囉!
......本文節錄自《Flash 資料庫應用即戰力》