jasmine214--love

          只有當你的內(nèi)心總是充滿快樂、美好的愿望和寧靜時,你才能擁有強壯的體魄和明朗、快樂或者寧靜的面容。
          posts - 731, comments - 60, trackbacks - 0, articles - 0

          Ajax框架---ZK一覽

          Posted on 2010-06-24 21:13 幻海藍夢 閱讀(283) 評論(0)  編輯  收藏 所屬分類: Ajax

          原文:http://dev.firnow.com/course/1_web/webjs/200877/131843.html


          ZK架構一覽


          前言

          經(jīng)過這十幾年的發(fā)展演變,Web應用從靜態(tài)的HTML頁面演化成動態(tài)HTML頁面,然后是Applet和Flash,最終到了Ajax技術。

          Ajax面臨的挑戰(zhàn)

          在滿足用戶需求而提供的交互性活動時,Ajax增加了應用的復雜度和本就費用高昂的web應用開發(fā)所必需的技能。

          • 在不同瀏覽器間不可共存且容易產(chǎn)生bug的Javascript API
          • 對于用戶來說重復業(yè)務邏輯產(chǎn)生的維護開銷,尤其是在不同的編程語言情況下
          • 經(jīng)應用數(shù)據(jù)模型和業(yè)務邏輯暴露給用戶的危險
          • 令人頭疼的使客戶端和服務器端保持一致的異步通信。

          當前解決方案

          為了提供一個可管理的Ajax解決方案,目前已經(jīng)有許多的框架或者類庫。最直接的方式是提供立即可用的Javascript控件。然而,應用程序開 發(fā)人員必須生成這些控件,在客戶端中加入業(yè)務邏輯,并且開發(fā)一個應用特定的方式來與服務器端交互數(shù)據(jù)。

          簡而言之,這里只解決了前面提到過的Ajax面臨的挑戰(zhàn)中的第一個。其他的挑戰(zhàn),或多或少還是會繼續(xù)不斷地騷擾我們的應用開發(fā)人員。難道這就是 Web應用程序開發(fā)的本質么?或者只是傳統(tǒng)的Web應用編程模型已經(jīng)不適用了呢?

          ZK架構


          為了解決這些挑戰(zhàn),ZK給Web應用提 供了桌面應用編程模型天生就具備的事件驅動、基于組件以及以服務器為中心的架構。此外,ZK提供了當前流行的UI開發(fā)技術,例如通過標志語言而不是編程來 設計UI,通過腳本語言動態(tài)地改變應用,不需要編程就可以訪問數(shù)據(jù)庫和Web服務的注解和數(shù)據(jù)綁定。

          正如上圖所描述的,ZK是由運行在瀏覽器上的客戶端引擎組成的,而更新引擎則位于服務端。他們就像是棒球里的投手和捕手。他們一起配合,將瀏覽器上 發(fā)生的事件提交給運行在服務器端的應用,同時根據(jù)如何在服務器端生成組件的方式,來更新瀏覽器的DOM樹。

          作為核心,所有的應用代碼都運行在服務器端。任何時候被用戶出發(fā)的時間都會被自動地發(fā)送到運行在服務器端的應用程序。在服務器端的組件發(fā)生的任何改 變,都以可視化的方式顯示在瀏覽器上。瀏覽器只是應用的表現(xiàn)層,沒有數(shù)據(jù)模型,也沒有業(yè)務邏輯會被暴露出來。

          因為應用程序是運行在服務器端,所以它可以直接地訪問后端的資源,例如數(shù)據(jù)庫或者Web服務。在Internet上訪問它們時毫無通信上的麻煩和安 全隱患。

          在不知道其存在的時候, 才使用Ajax最好的方式

          執(zhí)行流程

          • ZK客戶端引用位于瀏覽器中,用于查探任何有用戶活動驅動的事件,例如鼠標的移動或者修改了某個值。一旦探測到事件,它便會通知ZK更新 引擎。
          • 從客戶端引擎接收到請求后,如果必要,ZK更新引擎便會更新對應組件的內(nèi)容。然后,如果有事件處理器,更新引擎就會通過他們來通知應用。
          • 如果應用選擇改變組件的內(nèi)容,刪除、增加或者移動了組件,更新引擎將會發(fā)送新的、改變了的組件到客戶端引擎上。然后,客戶端引擎便會相應 地更新DOM樹。

          注意:
          • 為了減少客戶端和服務器端的訪問,如果事件可以延時,那么會把多個時間發(fā)送回服務器端。
          • 為了最大化視覺效果和響應能力,ZK提供了一個所謂的客戶端動作,讓你可以(可選的)在客戶端執(zhí)行你擁有的Javascript代碼。
          主站蜘蛛池模板: 济南市| 萝北县| 武邑县| 富蕴县| 长垣县| 朔州市| 白沙| 普定县| 青冈县| 涟水县| 平果县| 宜兰市| 如东县| 巩留县| 西峡县| 汉阴县| 红桥区| 泰顺县| 江阴市| 长岛县| 齐齐哈尔市| 光泽县| 昭平县| 卓资县| 宿州市| 油尖旺区| 泾川县| 金平| 宾阳县| 唐河县| 肃北| 望城县| 通道| 蓬莱市| 乐山市| 嘉义县| 冀州市| 沂水县| 潮州市| 龙里县| 昌宁县|