本篇教程適合: 一切有毅力做持續(xù)性學習的朋友
本篇教程不適合: 懶鬼
序言
ColdFusionMX能干什么?
- 幫你運行你的ColdFusion格式文件。包括后綴名為.cfm和.cfc等等類型程序文件(當然,你用.cfm的文件包含全是靜態(tài)HTML代碼在ColdFusion上運行也沒人說你)。
- 內(nèi)置的FlashRemoting能夠高效安全快速的向Flash為界面的應(yīng)用傳遞大量的數(shù)據(jù)(眾所周知,通過get和post傳遞數(shù)據(jù)總是那么不叫人放心),通過CFMX內(nèi)置的Remoting,不僅僅能傳數(shù)據(jù),還能依照開發(fā)者的邏輯去處理數(shù)據(jù)。
- ColdFusionMX能夠讓你成立自己的公司,做自己的業(yè)務(wù)應(yīng)用,開發(fā)自己的產(chǎn)品,體驗自己的成功(此乃后話)。
ColdFusionMX不能干什么?
- 幫你找女朋友,或者更多的女朋友。如果你的目的是這個,請去學習使用QQ或MSN。
- 幫你做飯或者叫你起床。
- 還有更多不能幫你做,尤其是不能幫你寫程序。如果想寫程序,請使用自己的頭腦和雙手。
上面我們講到的ColdFusion就是我們所說的“冰”。接下來,我們要介紹“火”。它就是Macromedia剛剛推出的FlashMX全功能數(shù)據(jù)操作組件“FireFly”。
FireFly是什么?
全名為“Data Connection Kit”,以組件的形式存在于FlashMX中,用于FlashMX開發(fā)出能夠和后臺數(shù)據(jù)庫及多種數(shù)據(jù)格式文件進行數(shù)據(jù)協(xié)同操作的工具。真正意義上講,應(yīng)該是“Data Connection Kit”(以下簡稱為DCK)這款工具包含“FireFly”這個Flash的數(shù)據(jù)組件。由于DCK中還帶有一款開發(fā)者版本的Flash Remoting,所以DCK包含F(xiàn)ireFly。但是我們在擁有了專業(yè)或者企業(yè)版本的ColdFusionMX的時候,就不在需要開發(fā)者版本的FlashRemoting。全功能的FlashRemoting已經(jīng)內(nèi)置在CFMX之中。我們所要的就是DCK中的FireFly組件。所以,在本篇教程中,F(xiàn)ireFly就代表DCK,DCK指的就是FireFly。
FireFly英文文檔說了一大堆介紹性廢話,真正的FireFly的定義實際上就是一句,那就是(大家快拿好小板凳,小鉛筆,小本本仔細聽):
FireFly組件是讓FlashMX同VB,VC,DELPHI和JAVA一樣,擁有操作后臺數(shù)據(jù)庫和數(shù)據(jù)文件的API接口。
FireFly能干什么?
- 讓FlashMX開發(fā)的Flash程序訪問數(shù)據(jù)庫或者數(shù)據(jù)文件(如XML)。
- 讓FlashMX開發(fā)的Flash程序操作數(shù)據(jù)庫或者數(shù)據(jù)文件(如XML)。
- 合起來操作第一點和第二點(^_^,塔積木的開發(fā)程序模式總是那么強大而有效)。
- FireFly能夠同.net.java.cfmx相結(jié)合。所有的邏輯不是都寫在Flash里(好安全。。拖馞lashcom一樣,還有很多邏輯是在main.asc中,flash中的邏輯程序是和后臺相互呼應(yīng)的。
*請注意“訪問”和“操作”的區(qū)別,前者可以理解為Select的Query,后者則是insert和update等等。
FireFly不能干什么?
- 它自己一個人什么也干不了。就像生小孩,一個男人或者一個女人總是不能成氣候。Firefly是非常的,完全的,迫切的需要后臺數(shù)據(jù)庫或者數(shù)據(jù)格式文件和他協(xié)同工作。
- 它不能直接喂飽你的肚子。
- 同樣,它也不能幫你找女朋友。
FireFly是怎樣工作的?
這一段我偷個懶,F(xiàn)ireFly自帶的幫助對于它工作原理的描述實在是細致。它的幫助位置在C:\Program Files\Macromedia\Flash MX\Help\Firefly\FireflyHelp\FireflyHelp.htm,里面How does Firefly work就有這個部分的內(nèi)容。
這個教程有必要稍微解釋一下下面這張圖:
- FireFly Data Engine是一個層,不是2個層。Connector/Resolver/DataSet共同構(gòu)成這個中間層。
- 這個中間層的含義是一個容器,一個容納數(shù)據(jù)集合的容器,這個容器中的數(shù)據(jù)供Flash player調(diào)用和操作。
- 這個層的數(shù)據(jù)處理能力和VB,VC中的數(shù)據(jù)控件實際上完成同樣的功能。
在基本的都介紹過了以后,進入本篇教程的正題。
環(huán)境的配置
安裝好FireFly和ColdFusionMX。Firefly的安裝就是“雙擊Setup文件”,然后跟著提示往下裝,直到“Finish”。如果這個還搞不定,還是不要看這篇教程了。ColdFusionMX的安裝也是易如反掌,推薦你選擇使用端口8500的Standalone模式(本篇教程也采用Standalone模式)。這種模式對于開發(fā)應(yīng)用而言,安裝就是一步到底。
軟件都安裝完畢后,接下來就是設(shè)定自己的運行環(huán)境,請跟著以下步驟做:
- 在C:\CFusionMX\wwwroot\路徑下創(chuàng)建一個文件夾,名稱叫做“Firecold”。如下圖所示:
- 在C:\Program Files\Macromedia\Flash MX\Configuration\Firefly\Lib目錄中,找到下圖所示三個swf文件。依照不同的Firefly版本,可能文件名略有不同,不過沒有關(guān)系。
- 將上圖中的3個swf文件拷貝到第一步創(chuàng)建的Fireice文件夾中去。
- FireFly的組件能夠從其本身內(nèi)部映射到你的ColdFusion。Firefly組件能夠把CFC和其中可用的方法都羅列出來。但是開發(fā)者還是需要做一件事情。在路徑C:\Program Files\Macromedia\Flash MX\Configuration\Firefly\CFIDE下找到下圖顯示的文件。
- 把FxCFCInfo.cfc文件拷貝到路徑C:\cfusionmx\wwwroot\CFIDE\下,如下圖所示。只有這樣,才能讓Firefly組件偵測ColdFusion cfc Component的功能萬無一失。注,Macromedia官方強調(diào),如果用于產(chǎn)品服務(wù)器部署運行,請刪除這個cfc文件,因為會有安全問題。
- 在DWMX中創(chuàng)建一個叫做Fireice的使用Coldfusion的站點。在fireice下創(chuàng)建一個叫做employee.cfc的頁面。很快,我們就要在這個頁面中添加方法。如下圖所示。
- Fireice站點中的employee.cfc將要添加操作的方法。在添加操作的方法之前,先說明一下employee.cfc將用到安裝完CFMX系統(tǒng)后自帶的Data Source,名稱是exampleapps。各位開發(fā)者在ColdFusionMX的數(shù)據(jù)源管理中都能看到這個DSN,這個數(shù)據(jù)源用于演示ColdFusion的示例。這個數(shù)據(jù)庫也是CFMX安裝后就有的。
- 接下來向employee.cfc中加入操作雇員的2個方法。注意,這兩個方法的訪問屬性都是remote,是允許遠程請求的方法。兩個方法返回的值全部都是Query查詢的數(shù)據(jù)集合。所以,<cfreturn>的值和<cfquery>的name屬性的值一致。代碼如下圖。
- 為了保險,運行一下這個employee.cfc看看,打開http://localhost:8500/Fireice/employee.cfc。如果沒有什么錯誤的話,應(yīng)該是下面的圖示:
- 在Fireice文件夾中創(chuàng)建一個Flash文件叫做employee.fla。如下圖所示。
好了,環(huán)境基本搭好了,接下來就是準備創(chuàng)建Firefly的前臺應(yīng)用了。
Firefly組件開發(fā)詳解
不要一聽開發(fā)詳解就覺的有多難,其實真正難的是我。。!想想,我先要搞定所有E文文檔,然后自己先做一遍,最后才感拿出來給大家共享。還背著被罵的危險.......,我這個站長當?shù)牟蝗菀装 E茴}了,言歸正傳。
首先,我們要做的能夠讓Firefly的組件在Flashmx環(huán)境中能夠成功的連接ColdFusionMX的組件,就是剛才我們創(chuàng)建的employee.cfc文件。想想,做這個應(yīng)用,你的組件連cfc的連接都不成功,你還玩?zhèn)什么勁啊。所以,首要條件是搞定Firefly同Coldfusion的連接。
Firefly同ColdFusionMX的CFC連接靠什么?當然不是在辦公室里大喊“你們倆快給我連上”就完事了。要用到的(也是必須用到的)就是Firefly的Remoting組件。你可以從FlashMX中找到這個組件,如下圖所示:
接下來就跟著下面的步驟做:
- 打開我們先前創(chuàng)建的employee.fla。場景多大我不管,你自己決定,只要能放下數(shù)據(jù)組件并且顯示數(shù)據(jù)就行。測試的時候感覺不合適,再調(diào)整也不遲。Firefly Remoting的組件一共有三個。分別是FxRecordSetConnector、FxRecordSetResover、FxSQLRecordSetConnector(不要被這么長的名字唬住了)。顧名思義,我們首先是要用到FxRecordSetConnector,這個組件就是創(chuàng)建一個數(shù)據(jù)訪問集的連接器。它訪問數(shù)據(jù)并返回符合要求的數(shù)據(jù)集合。說白了,就跟asp的recordset干的事情一樣。點擊FxRecordSetConnector并把它拖拽到flashmx的場景中,因為它是功能性組件,所以,沒有圖形界面(GUI),所以它在Flash場景中就顯示一個小圖標。如下圖所示:
- 接下來說一下FxRecordSetConnector和FxSQLRecordSetConnector的區(qū)別。兩者非常類似,但是前者的所有SQL語句都是放在服務(wù)器端的cfc中,后者則是不需要創(chuàng)建cfc文件,將sql語句放在客戶端的flash中。哇。!如果你搞個產(chǎn)品服務(wù)器運行,你自己說,SQL語句是放在服務(wù)器端安全呢,還是sql語句被客戶端連同flash一起下載安全呢?由于前面我們看到的Firefly結(jié)構(gòu)圖中表示firefly傳輸?shù)臄?shù)據(jù)通過http方式傳輸,所以FxSQLRecordSetConnector的sql數(shù)據(jù)很容易被人修改成惡意的代碼后再提交。我們還是用FxRecordSetConnector最好。
- 給場景中的這個組件一個實例名字叫做employee_con。如下圖:
- 在屬性面板中點擊啟動組件參數(shù),如下圖所示:
緊接著,我們就看到FxRecrodSetConnector組件的參數(shù)面板如下圖所示:
- 我們需要設(shè)定組件參數(shù)面板中的Gateway、Service、Method三個參數(shù)。實際上,我們在Gateway一欄中輸入以下地址:
http://localhost:8500/flashservices/gateway 然后點擊地址右邊的刷新的小圖標,隨后,點擊Service的下拉按鈕,從中選定我們想要的fireice.employee的服務(wù)即可,如下圖所示:
- 選定了Fireice.employee服務(wù)后,method窗口同樣可以選擇對應(yīng)fireice.employee服務(wù)的方法。我們選定UsersList方法。如果,我們沒有把FxCFCInfo.cfc文件拷貝的操作按照我們上面的要求放在C:\cfusionmx\wwwroot\CFIDE\路徑下,我們可能刷新的操作就失效了,那么就需要手動輸入,最后設(shè)定好的形式就像下圖。
- 現(xiàn)在數(shù)據(jù)集已經(jīng)通過FxRecordSetConnector請求回來了,我們接下來需要一個類似容器的東西來裝這些數(shù)據(jù)。就像我們?nèi)コ幸呀?jīng)付帳買了一堆東西,錢都交了。最后總該有個大塑料帶來裝它們。在Flashmx里,我們進一步需要添加一個Firefly的FxDataSet的組件來負責容納數(shù)據(jù)這個工作。FxDataSet如下圖所示:
- 把FxDataSet組件拖動到場景上,給它一個實例名稱叫做employee_ds。
- 啟動employee_ds的組件參數(shù)面板,看到的情形如同下圖。
- 選中Active的框選項,這樣才能讓數(shù)據(jù)集生效。
- 切換到Fields(數(shù)據(jù)集DataSet字段設(shè)定)面板,按照我們cfc中employee的query查詢的字段來對應(yīng)設(shè)定這里的內(nèi)容。設(shè)定的字段包括EmployeeID,F(xiàn)irstName,LastName,Title,IsTemp,EMail,Phone,DeptIDFK,Personal。其中EmployeeID的Read Only應(yīng)該選中,因為它是數(shù)據(jù)表的主鍵。另外,IsTemp的Type類型選成Boolean的值,只有0和1兩個值。 設(shè)定的情況如下圖所示。
- 除了EmployeeID和IsTemp兩個字段以外,其他字段都類似下圖設(shè)定,我們需要手動修改的只有Label和Name屬性。其他都使用flash自動填入的屬性值。
- 我們必須讓employee_con和employee_ds能夠通信,所以,還要做一項匹配的工作。打開employee_con實例的組件參數(shù)面板,在Property標簽面板中的DataSet中輸入employee_ds。這樣就把兩者聯(lián)系起來了。
- 說到這里,我們豁然開朗。原來Firefly的數(shù)據(jù)操作方式和ColdFusion如此驚人的相似。!設(shè)定FxRecordSetConnector的數(shù)據(jù)連接就像設(shè)定ColdFusionMX 數(shù)據(jù)源一樣,都是做一個數(shù)據(jù)庫的連接。而FxDataSet所作的事情就像coldFusionMX的<cfquery>標簽一樣!做的是數(shù)據(jù)庫的查詢。最后,還差一點!就是數(shù)據(jù)的顯示!ColdFusionMX用<cfoutput>標簽輸入出<cfquery>中的字段查詢結(jié)果值。而Firefly則需要用FxGrid組件去顯示FxDataSet得到的查詢結(jié)果。
- 同樣在Firefly面板中選擇FxGrid組件,拖拽到場景中,在屬性中設(shè)定這個組件的寬和高的值(依自己愛好設(shè)定)。打開組件參數(shù)面板,按照下圖設(shè)定組件參數(shù)。
Column Lines是選擇數(shù)據(jù)表輸出時是否用顯示線分開每列數(shù)據(jù)。Dataset設(shè)定成FxDataSet的實例名稱employee_ds。Row Lines是是否用顯示線分開每行數(shù)據(jù)。Horiz Scroll則是水平方向上是否帶有滾動條。
- 現(xiàn)在,該測試一下結(jié)果了。存儲文件,用Ctrl+enter來看看結(jié)果:
我們已經(jīng)前進了一大步!!是否有成功的喜悅感?后面還有更精彩的。!
7yue.com獨家授權(quán)轉(zhuǎn)載
本文鏈接:http://www.95time.cn/tech/program/2003/497.asp
出處:7yue.com
責任編輯:無意
◎進入論壇網(wǎng)絡(luò)編程版塊參加討論
|