何時(shí),紗窗外,風(fēng)搖翠竹

          常用鏈接

          統(tǒng)計(jì)

          最新評(píng)論

          • 1.?re: 慎用AJAX框架
          • AJAX是中國(guó)技術(shù)領(lǐng)域的紅燈區(qū)。。想爽,但又怕潛伏著危險(xiǎn)。。。
          • --阿斯頓飛
          • 2.?re: 慎用AJAX框架
          • 評(píng)論內(nèi)容較長(zhǎng),點(diǎn)擊標(biāo)題查看
          • --夏如嘏
          • 3.?re: 慎用AJAX框架
          • ajax 要懂的原理,同意樓主,框架慎用
          • --驕傲
          • 4.?re: 慎用AJAX框架
          • @讀書(shū)、思考、生活
            2、bug滿天飛,那就說(shuō)明是水平不到家
            您的水平能高到?jīng)]有bug?
          • --樓主
          • 5.?re: 慎用AJAX框架
          • 只要你懂xmlhttp,為什么非要用ajax呢,我從2000年開(kāi)始使用xmlhttp,ajax剛出來(lái)的時(shí)候看了一眼,冷笑一聲。所以爭(zhēng)論沒(méi)有意義,到處都是新瓶裝老酒的故事
          • --挨踢的貨

          頓悟 - 基于事件驅(qū)動(dòng)模型架構(gòu)Flex程序

             原文地址: http://www.pjade.com/html/study/20070703/27.html

              這些天一直在為Flex程序中的各個(gè)組件之間有效的傳遞參數(shù),協(xié)調(diào)組件間的行為等問(wèn)題感到困惑。由于Flex程序?qū)嶋H上是一個(gè)運(yùn)行在客戶機(jī)上的的客戶端程序,因此在Flex內(nèi)部組件之間無(wú)法像B/S程序基于HTTP協(xié)議那樣發(fā)一個(gè)請(qǐng)求,由服務(wù)器端通過(guò)一個(gè)標(biāo)準(zhǔn)接口讀出參數(shù),處理并做出響應(yīng)。也就是說(shuō)用表單、URL的方式傳遞參數(shù)和控制流程肯定是行不通的。前一段時(shí)間一直嘗試像Javascript中那樣用函數(shù)調(diào)用,甚至是全局變量來(lái)做,感覺(jué)越做越復(fù)雜,程序的OO結(jié)構(gòu)也受到很大的破壞,十分的煩惱。

               今天整理書(shū)架時(shí)無(wú)意中看到了壓了多年箱底的那本《深入淺出MFC》,一下子回想起VC和MFC框架中的最核心的事件處理機(jī)制,再想到以前研究flexstore源碼時(shí)看見(jiàn)過(guò)基于事件來(lái)控制程序行為的代碼,頓時(shí)有一種醍醐灌頂?shù)母杏X(jué)!! Flex 的客戶端程序基本上是一種基于組件的C/S程序,而當(dāng)年VC、VB、Dephi等等C/S程序無(wú)一例外的都是基于事件驅(qū)動(dòng)的!當(dāng)年侯先生正是由于在《深入淺出MFC》一書(shū)中深入的剖析了MFC框架中的事件流的機(jī)制,揭示了在API的背后數(shù)據(jù)是如何被分發(fā)和處理的過(guò)程而名揚(yáng)五洲。“消息為基礎(chǔ)、事件驅(qū)動(dòng)之”這句話則是在Windows編程中最基本和最重要的概念,也是C/S程序編程中的最重要的概念之一,在搞了多年B/S程序開(kāi)發(fā)之后,我卻是已經(jīng)將這句當(dāng)年自以為完全理解的觀念拋到腦后去了,想來(lái)也挺有意思,看來(lái)雖著RIA的發(fā)展和推廣,事件驅(qū)動(dòng)模型這一度幾乎被棄用東西又要大行其道了。

              其實(shí)一直以來(lái)事件驅(qū)動(dòng)從來(lái)沒(méi)有遠(yuǎn)離過(guò)我們,網(wǎng)頁(yè)中一個(gè)對(duì)某個(gè)按鈕的onclick事件的觸發(fā),便是事件驅(qū)動(dòng)的一個(gè)應(yīng)用,但是我卻忘記了在這些基于組件的實(shí)現(xiàn)的編程模型中的事件驅(qū)動(dòng)所起到的靈魂作用。和B/S程序中請(qǐng)求/響應(yīng)的模式不同,事件驅(qū)動(dòng)實(shí)現(xiàn)的是請(qǐng)求/訂閱的方式,二者從架構(gòu)到編程都有很大的區(qū)別,我用B/S的思維模式去寫(xiě)事件驅(qū)動(dòng)的程序,不亂才怪!事件驅(qū)動(dòng)的技術(shù)原理實(shí)際上是比較簡(jiǎn)單的,Observer模式對(duì)它有很好的總結(jié),感興趣的朋友可以自己看一下。我這次最大的問(wèn)題實(shí)際是來(lái)自于思維模式上,其實(shí)只需要:放棄用請(qǐng)求觸發(fā)行為的想法,改用事件觸發(fā)!

              當(dāng)然Flex程序并不是像VC那樣的純C/S程序,它一樣需要用請(qǐng)求/響應(yīng)的方式完成很多的功能。今天簡(jiǎn)單的思考了一下,覺(jué)得Flex程序應(yīng)該這樣架構(gòu):

          1. Flex程序的整體架構(gòu)要基于事件驅(qū)動(dòng)模型來(lái)架構(gòu)(事實(shí)是這種基于組件的編程方式你必須基于事件驅(qū)動(dòng)來(lái)構(gòu)架)。這樣的好處不光是易于實(shí)現(xiàn)功能,而且由于事件驅(qū)動(dòng)松耦合的特點(diǎn),也方便于設(shè)計(jì)一個(gè)很好的系統(tǒng)結(jié)構(gòu)。
          2. 對(duì)Flex程序本身,各個(gè)模塊也基于事件驅(qū)動(dòng)的模型按分層、分組件的方式層層搭建。
          3. 對(duì)于需要和Flex程序配合使用的服務(wù)器端程序,還是要嚴(yán)格按照MVC模式構(gòu)建。
          4. 對(duì)于需要和服務(wù)器端交互的flex客戶端程序模塊,利用flex遠(yuǎn)程調(diào)用的異步特性,在向服務(wù)器端請(qǐng)求,接收到響應(yīng)數(shù)據(jù)后觸發(fā)相應(yīng)的事件,依然走事件驅(qū)動(dòng)的路子。

          posted on 2007-07-05 10:12 weidy 閱讀(2171) 評(píng)論(3)  編輯  收藏 所屬分類: RIA

          評(píng)論

          # re: 頓悟 - 基于事件驅(qū)動(dòng)模型架構(gòu)Flex程序 2007-07-16 12:17 abent

          呵呵,深有同感啊,其實(shí)Flex應(yīng)用就是一種批上B/S外衣的C/S,要按照C/S的思維和模式去設(shè)計(jì).  回復(fù)  更多評(píng)論   

          # re: 頓悟 - 基于事件驅(qū)動(dòng)模型架構(gòu)Flex程序 2007-07-16 23:10 weidy

          @abent
          兄臺(tái)也在開(kāi)發(fā)Flex程序么,好的很啊,有機(jī)會(huì)多交流。Flex程序的架構(gòu)確實(shí)給我們提出了新的挑戰(zhàn),客戶端C/S,整體又要B/S,然后還需要能脫離B/S單獨(dú)轉(zhuǎn)C/S,模式很新。我倒是聽(tīng)說(shuō)有一些框架可用,不過(guò)目前還不打算用,還是想自己先探索一下,也可以理解的深一些。  回復(fù)  更多評(píng)論   

          # re: 頓悟 - 基于事件驅(qū)動(dòng)模型架構(gòu)Flex程序 2007-10-15 14:15 烈焰波痕

          說(shuō)Flex是披上B/S外衣的C/S,也許吧。但要我說(shuō)的話,是以Server端的開(kāi)發(fā)思路開(kāi)發(fā)Client。
          如果要用Flex開(kāi)發(fā)RIA, 客戶端的MVC模式是必須存在的,而不僅僅是Event驅(qū)動(dòng),Event是一種控制流,但是根本上Model的建模才是最主要的,這要求不僅僅在Server端建模,而且在Client端也需要建模,而不再是以前B/S那樣,客戶端僅僅是一個(gè)表現(xiàn)層和用戶交互層。
          之所以以前B/S開(kāi)發(fā)忽略了pub/sub,那是因?yàn)樗诳蛻舳吮镜馗揪蜎](méi)有建模,本地根本就是一個(gè)SnapShot。在服務(wù)器端開(kāi)發(fā)MVC可能沒(méi)有事件么?  回復(fù)  更多評(píng)論   


          只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 文化| 平湖市| 渝北区| 凤城市| 金坛市| 清徐县| 白水县| 芦溪县| 武汉市| 玉门市| 曲阜市| 彭山县| 荔波县| 昭觉县| 前郭尔| 盐山县| 二手房| 班玛县| 丽水市| 乡宁县| 正定县| 奇台县| 绥江县| 旬邑县| 淮滨县| 信阳市| 天祝| 长汀县| 大宁县| 商河县| 肥西县| 高尔夫| 宜春市| 东兴市| 塔城市| 苏尼特左旗| 六安市| 潢川县| 莱阳市| 周宁县| 防城港市|