?
快捷搜索:  as  test  1111  test aNd 8=8  test++aNd+8=8  as++aNd+8=8  as aNd 8=8

興旺娛樂官方網站:使用AJAX開發新一代Web應用程序

?

一、小序

一個抱負的用戶接口對用戶最好是弗成見的-僅在用戶必要時供給選擇,否則并不過問他們的事情而讓其專注于手頭的事情。然而,這并不是一件輕易的工作。如今,我們變得習氣于經由過程并不十分令人知足的UI進行日常事情,直到有人向我們展示一種更好的措施。現在,我們才徐徐熟識到我們當前的措施在做這些工作時是多么吃力。

因為用于顯示文檔內容的基礎web瀏覽器技巧又被推進一步進而越過曩昔它們所能及的范圍,以是,如今的互聯網正在經歷著這樣的實現。

Ajax(異步JavaScript+XML)是一個異常新的名字,為Adaptive Path的Jesse James Garrett所創建。此中,Ajax的某些部分曩昔被描述為動態HTML和遠程腳本。

Ajax的呈現不僅僅是一個新名字的問題。從技巧和商業的角度看,環抱Ajax還有大年夜量沖感民心的器械。從技巧上講,Ajax實現了web瀏覽器技巧中大年夜量的尚未實現的潛力。從商業上看,Google和其它一些主要商家正在慢慢應用Ajax技巧,從而讓"民眾,"熟識到一個web利用法度榜樣所能做的工作。

曩昔我們習氣的范例web利用法度榜樣如今正在遭遇著偉大年夜的壓力,由于徐徐繁雜的基于萬維網的辦事正日趨成熟并開始利用于互聯網。各類新技巧爭相涌現出來以降服這些問題,而Ajax僅應用現有的互聯網技巧就能夠更好地表達這些思惟。

使用Ajax,我們重用了一堆原有技巧但卻擴展了它們原本所能及的范圍。我們必要能夠治理這種我們引入的繁雜性。本文將評論爭論如何實現這些技巧,而且還要評論爭論一下治理大年夜型Ajax工程的問題。我們將先容Ajax設計模式及其如何贊助我們完成事情。設計模式贊助興旺娛樂官方網站我們捕獲我們的常識和履歷,用我們現在的技巧并且使之與其它工具進行通訊。經由過程把規則引入到代碼基之上,它們就能夠方便創建利用法度榜樣-可以據變更對工程加以改動和擴展。應用設計模式進行開拓以致是一種喜悅!

為什么說Ajax是富厚的客戶端?

構建一個富厚的客戶端接口比設計一個WEB頁面要繁雜。那么是器械導致我們這樣做的?好處有哪些?什么是富厚的客戶端?

一個富厚的客戶端有兩個關鍵特征:它是富厚的,而且它是一個客戶端。

讓我稍作解釋。富厚指的是客戶端要領。一個富厚的客戶端模型-是指它能夠支持各類輸入措施且能夠直不雅又異常及時地作出相應。只管我們稱其為"富厚的",然則它必須與象字處置懲罰器和事情表等今世桌面利用法度榜樣一樣好才真正富厚。下面讓我們看一下為達此目的所詳細要求的實興旺娛樂官方網站現技巧。

二、對照用戶體驗

在這里,讓我們評論爭論一個事情表法度榜樣的實例。當我在事情表輸入一些簡單的公式時,我可以有幾種要領與之交互-現場編輯數據,用鍵盤和鼠標導航數據和經由過程鼠標拖動從新組織數據。

當我在操作這些時,軟件給我反饋-鼠標光標外形改變,當我在按鈕上移動時按鈕高亮,選定的文本改變顏色,高亮的窗口和對話框以不合形式顯示,等等(圖1)。

圖1 這個桌面事情表利用法度榜樣闡清楚明了多種用戶交互的可能性。

這些是當今用戶富厚的交互的主要體現。這樣的事情表利用法度榜樣便是一個富厚的客戶端嗎?還不是。

在一個事情表或類似的桌面利用法度榜樣中,邏輯和數據模型都在一個封閉的情況中運行-在此它們彼此都能清晰可見,然則卻把外界拒之門外(圖2)。我的客戶端定義是一個法度榜樣-它能夠與一個不合的自力的進程通訊-范例地它運行于一個辦事器上。傳統地,該辦事器比客戶端更大年夜更強壯并且存儲了海量信息。客戶端容許終端用戶不雅看和改動這些信息,并且假如有一些客戶連接到同一個辦事器上,它容許他們分享該數據。圖3顯示出一客戶機/辦事器架構的簡單圖解。

圖2 一個自力桌面利用法度榜樣的圖解架構。

該利用法度榜樣運行于其自身的進程之中-在其內數據模型和法度榜樣邏輯彼此清晰可見。在同一臺謀略機上運行的該利用法度榜樣的第二個實例除了經過文件系統之外無法存取第一個實例的數據模型。范例地,整個法度榜樣狀態存儲在單個的文件中-當該利用法度榜樣運行時它被鎖定以阻攔任何信息的同步互換。

圖3 客戶端/辦事器系統和n層架構圖解。

該辦事器供給一個客戶可以用之進行交互的可共享的數據模型。客戶端仍舊保持它們自己的部分數據模型以達到快速存取。多個客戶可以與同一個辦事器進行交互,而此時在單個工具或數據庫行優越粒度級上節制的資本被鎖定。該辦事器可所以一個單個的進程,就象在90年代曩昔的早期的傳統型客戶端/辦事器模型或由多少中心件層、外部web辦事等組成的今世模型。在任何環境下,從客戶的角度來看,辦事用具有單個進口點并且可以被覺得是一個黑盒子。

當然,在一今世的N層架構中,辦事器將能與例如數據庫這樣的后端辦事器通訊-這導致了中心件層的呈現-它們既充當客戶端又充當辦事器端。范例地,我們的Ajax利用法度榜樣位于這個鏈的一端上-只擔當客戶端,以是我們可能把全部N層系統看作單個黑盒子-我們把它標記為辦事器,以便于我們當前的評論爭論。

我的事情表只專注于它自己的存儲在本地內存和本地文件系統上的數據。假如它架構優越,數據層和描述層之間的耦合可能相稱疏松,然則我無法把它經由過程收集分化與共享。以是,從我們的描述層目標來看,它不是一個客戶端。

當然,Web瀏覽器是客戶端,它連接web辦事器并從中進行頁面哀求。這些瀏覽用具有一些富厚的功能來治理用戶的web瀏覽,例如退卻撤退按鈕、歷史列表和多頁面存儲多個文檔。然則假如我們把一個特定站點的web頁面看作一個利用法度榜樣,那么這些通用瀏覽器節制便不能再關聯到利用法度榜樣,就象Windows開始菜單或window列表相關于我的事情表一樣。

讓我們看一個今世web利用法度榜樣。主要由于每小我可能都據說過它,以是我們將選擇Amazon-在線書商為例(圖4)。現在,我把自己的瀏覽器指向Amazon站點;由于該站點從我的上次造訪能夠記得我是誰,以是它先給我顯示一個友好的問候、保舉書列表和關于我已購買書的歷史信息。

圖4 Amazon.com首頁。該系統記得我曩昔造訪過該站點,此中可導航的鏈接是通用信息和私人信息的混雜。

從建議列表中點擊一個標題將把我導向一個自力的頁面(也即,該屏幕閃爍一下,于是我就掉去了幾分鐘前可以看到的列表)。于是新頁面中又會充溢各類高低文信息(見圖5)。

圖5 Amazon.com站點冊本具體資料頁面。

再一次,大年夜量的結合有通用和私人信息的超鏈接呈現。只管如斯,大年夜量的細節與圖4所示極為相同-這,因為web瀏覽器的基于文檔的操作,必須被從新轉送到每個頁面。

簡言之,我向你展示了異常富厚的慎密聯系的信息。而且我興旺娛樂官方網站與這種信息交互的獨一要領是經由過程點按超鏈接并且填寫文本表單。假如我在瀏覽站點時的鍵盤輸入歷程中睡著了并且第二天才醒來,那么在我刷新整個頁面之前我不會知道新的哈里波特書已經發行。我弗成能帶著我的列表從一個頁面轉到另一個頁面,并且我弗成能縮放該文檔的一部分來一次不雅看多處的內容。

這并不是在毀謗Amazon,在異常有限的限制內它事情得相稱優秀。然則與事情表比擬,它所依附的交互模型毫無疑問相稱有限。

那么,為什么在今世web利用法度榜樣中存在這么多的限定呢?今朝,存在很多技巧上的緣故原由。是以,現在讓我們作進一步闡發。

三、收集的潛力

互聯網期間的巨大年夜就在于天下各地所有的謀略機相互聯系,就象在一個異常大年夜的謀略資本之中。遠程和本地歷程調用變得很難區分,并且發行者已經不再清醒地懂得它們在哪些物理機械上事情。

不幸的是,遠程和本地歷程調用是根本不相同的技巧。

在收集上的通訊是昂貴的(它們是慢并且弗成靠的)。當一部分非收集代碼被編譯或解釋時,各類措施和函數就象在其上操作的數據一樣被編碼為存儲在相同的本地內存中的指令(圖6)。這樣,把數據通報給一個措施并返回結果就相稱直接。

圖6 本地歷程調用序列圖-在此很少的元素如法度榜樣邏輯和數據模型都被存儲在本地內存并能彼此直接望見。

其其實底層,為了發送和接管數據,很多謀略運行于一個收集連接的兩端(圖7)。實際上,這種謀略遠不如沿著物理線路的運行更導致系統的減慢-各級的編碼與解碼普及通訊的各個方面,從沿著線路傳輸的物理信息,把這些信息翻譯為二進制的1和0,差錯反省和重發送,到從新整合該二進制序列。

圖7 一個遠程歷程調用序列圖。在一臺機械上的法度榜樣邏輯試圖操作在別的一臺機械上的數據模型。

調用函數的哀求必須被編碼為一個稍后將被串行化的工具(也即,被轉換成一個線性字節聚攏)。然后,被串行化的數據被通報到利用法度榜樣協議(現在平日為HTTP)并且經由過程物理傳輸發送。

在遠程機械上,該利用法度榜樣協議被解碼,并且數據的字節被反串行化以創建該哀求工具的一個副本。然后,這個工具被利用到數據模型和一個天生的相應工具上。為了聯系該相應和調用函數,該串行化和傳輸層必須被再一次導航,著末導致一個相應工具被返回到調用函數。

這些客戶端是繁雜的然則得當于自動化實現。今世的編程情況例如Java和微軟.NET框架都供給了這種功能的自由應用。只管如斯,興旺娛樂官方網站當孕育發生一個遠程歷程調用(RPC)時,在內部有大年夜量的活動在進行并且假如這樣的調用太自由的話,機能也會受到影響。

是以,經由過程收集的調用永世不會象調用本地內存中的一個措施那么富有效率。而且,收集的弗成靠性(并是以必要從新發送掉去的信息包)也使得這種低效在賡續變更且很難猜測。在你的本地機械上的內存相應性不僅更好一些而且比擬之下可以被很好地定義。

這但與可用性有什么關系呢?已證實,其關系相昔時夜。

一個成功的謀略機UI切實著實必要仿照我們真實的天下期望。該交互的最基濫觴基本則之一是,當我們點按某器械時,它能夠急速相應。在點按和相應之間的稍微的延遲都邑帶給用戶迷惑并使之分神-把用戶的留意力從手頭的義務轉移到UI本身。

必須做所有的額外事情來穿越收集經常就足已減慢一個系統,以至于該延遲變得相稱惹人留意。在一桌面利用法度榜樣中,我們必要做出糟糕的可用性設計決策來使得利用法度榜樣感到起來充溢差錯或不具有相應性,然則在一個聯網利用法度榜樣中,不必要我們關心這些!

因為收集潛力的弗成猜測性,這種可察覺的差錯交往來交往去,并且測試利用法度榜樣的相應性也可能變得更為艱苦。是以,收集潛力是真實天下利用法度榜樣具有可憐的交互性的最平日的緣故原由。

四、異步客戶端

在實際中,我們必興旺娛樂官方網站須只管即便使UI相應自力于收集活動。幸好,一段固準光陰的相應常常就足夠了,只要它是及時的。讓我們再次看一下實際中的問題。我的早上例程的主要義務之一是喚醒我的孩子們上學。我可以站在他們上面戳他們直到他們起床并穿上衣服,但這是一相稱花費光陰的要領,留下很長的一段光陰我險些無事可做(圖8)。

圖8異步響利用戶輸入序列圖

在這個序列圖中,光陰的過渡是垂直的。陰影部分的高度唆使了我被壅閉進一步輸入的光陰長度。

我必要弄醒我的孩子,外盯窗戶,并且輕忽了貓。孩子們將看護我-這時他們因要求吃早餐而被精確喚醒。就象辦事器端進程一樣,孩子們醒得很慢。假如我應用一個異步的客戶端模型,我將等待很長光陰。只要他們能夠咕噥一聲,我就能醒來,然后我就可以繼承輕松地干其余工作并且在必要時反省他們。

用謀略機術語來說,我在此所做的是在一個自力的線程中引發一個異步的歷程。一旦啟動它們,我的孩子們就會在他們自己的線程中自己醒來;而我-父線程,不必要與他們同步,直到他們看護我(平日應用一個哀求)。只管他們正在醒來,然則我無法與他們的客戶端進行通訊,好象它們已經起床并穿好衣服了,然則我能確信它必然會及時發生的(圖9)。

圖9 一異步響利用戶輸入序列圖。假如我應用一個異步的輸入模型,我能讓孩子們看護我他們開始醒來。然后,當醒來發生時,我能繼承我的 別的的活動并且有一段很短的光陰維持壅閉。

無論應用任何UI,創建一異步線程來處置懲罰任何冗長的謀略并且讓它在后臺運行,而用戶繼承處置懲罰其它工作都是一種很好的辦理規劃。當該線程啟動時,用戶一定被阻斷,然則這可能在很短的一段可吸收光陰之內發生。因為收集的潛力,一種不錯的實現是把任何RPC算作潛在的冗長歷程并異步地處置懲罰它。

該問題和這種辦理規劃都是良構的。收集的潛力早已呈現在老式的客戶端/辦事器模型中-這使得糟糕設計的客戶端在試圖到達一個過載的辦事器時滯留到令人無法遭遇的程度。在當今互聯網期間,收集的潛力使得你的瀏覽器在web頁面間往返切換時經歷了偉大年夜的挫敗。我們弗成能打消這種潛力;然則我們知道經由過程異步地處置懲罰遠程調用可以處置懲罰它,對紕謬?

不幸的是,對我們絕大年夜多半web開拓者來說,并沒有捕獲到這一點。

HTTP是一個哀求-相應協議,該協議是單向的。客戶端可以聯系辦事器,然則辦事器不能與客戶端開始一個通訊。確鑿,該辦事器不能從一次到另一次的哀求中記著客戶端。

多半應用今世說話如Java、PHP或.NET的web開拓者都邑認識用戶會話的觀點。HTTP按照它的最初設計優越地事情著,而且它已經被改編來實現更為機動性的功能。然而,我們的異步回調辦理規劃的關鍵在于客戶端被再次看護:當創建線程時是第一次而當線程完成時是第二次。直接的HTTP和經典web利用法度榜樣模型無法為我們完成這一點。

如Amazon所應用的經典web利用軟件模型仍舊是基于頁面觀點設計的。一文檔被顯示給用戶-包孕一個列表的鏈接和/或表單元素-它們容許它們提交給進一步的文檔。完全有可能以這種要領大年夜規模地與繁雜數據集交互,并且如Amazon和其它站點所展示的-完全可以基于這一履歷構建一種商業運作。

這種客戶端要領已經根深蒂固于以前十多年間的天天的商業互聯網之中。友好的WYSIWYG web創尷尬刁難象把我們的站點可視化為一個頁面聚攏。辦事器端web框架把這種頁面間的轉換建模為狀態轉換圖。經典web利用法度榜樣,在頁面刷新時,與弗成避免的短缺相應慎密結合,弗成能輕易地告急于異步處置懲罰器辦理規劃。

然則Amazon基于其網站已經取得了商業上的成功。當然,經典web利用法度榜樣弗成能象那樣弗成用?為了理解為什么web頁面可以得當于Amazon而不適用于每小我,我們應該斟酌一下應用模式的問題。

五、經久與短暫應用模式

軟件可用性專家Alan Cooper對付應用模式下過緊張的結論,并且定義了兩個關鍵的應用要領:短暫的和經久的。一個短暫的利用法度榜樣可能天天都被應用,但只在是一段光陰內且平日只是作為第二活動。而相反,一個經久的利用法度榜樣必須每次繼續數小時地有效地處置懲罰用戶的整個留意力。

許多利用法度榜樣著實都是短暫或經久應用的。一個作家的字處置懲罰器是一經久的利用法度榜樣,例如,此中包括了許多短暫的功能,例如文件治理器(常常嵌入到字處置懲罰器中,如一個文件保存或打開對話框),一本字典或拼寫反省法度榜樣(常常是嵌入的)以及與同事交流的一個電子郵件法度榜樣等。對一個軟件開拓者來說,文本編輯器或集成開拓情況(IDE)則是他們經久應用的,還有調試器。

經久應用的利用法度榜樣經常也是滿懷激情應用的。請記著,一個良構的UI應該是弗成見的。這種應用的一個優越度量是對用戶UI事情流的影響,這樣就提醒了用戶它的存在。假如我只是簡單地把文件從一個文件夾移動到另一個文件夾并碰到一個2秒鐘的等待,我可能對照痛快。假如 我在操作一個繪圖法度榜樣或在一個繁重調試會話中心碰見同樣的一個2秒鐘等待,我可能變得有點不安。

Amazon是一短暫利用法度榜樣,eBay和Google以及大年夜多半的異常大年夜型的公共的基于web的利用法度榜樣也是這樣的法度榜樣。自從呈現互聯網后,勢力巨子專家們已經預言了在基于Web的辦理規劃的沖擊下傳統型的桌面辦公室套件的歸宿。然而,10年以前了,它還沒有發生。基于Web頁面的辦理規劃對付短暫的應用已經足夠了然則對付經久的應用卻不敷。

六、忘卻Web

幸好,今世web瀏覽器相似于原本的針對遠程文檔辦事器的客戶端抱負-這極鄰近于瑞士軍刀相似于一種逾期的電石打獵對象。在沖向創建最引入注目的瀏覽體驗中,交互式小發現,腳本說話和插件都將/正在躊躇未定中關門。

可以把Ajax看作一個針對付瀏覽器戰斗中被誤解的行徑不正常的孩子的康復中間。經由過程供給一些指示和一個可在此中操作的框架,我們能把JavaScript轉換成互聯網中的一個有用的模型成員,它能夠前進一個web利用法度榜樣的實用性并且在該歷程中不會激怒用戶或給瀏覽器顯示需求量等垃圾信息。為此,有一些成熟的、易于理解的對象可用來贊助我們。設計模式便是這樣一種對象-常用于我們的事情中并且在本文中多次參考。

引入一種新技巧是一個技巧的和社會的歷程。一旦該技巧呈現了,人們就必要弄明白該用它來干些什么,并且第一步經常是應用它,彷佛它是一種原有技巧且更為認識。是以,早期的自行車被算作是木馬并且沿著地面推著人的腳來騎。跟著這種技巧為更廣多的用戶所熟識,又一批改革者將發明應用這種技巧的一些新的措施-添加了改進如踏腳板,制動閘,齒輪和充氣輪胎。跟著每次改進,自行車變得越來越不象馬了(圖10)。

圖10今世自行車的成長

相同的歷程也適用于web技巧的成長。Ajax背后的技巧能夠把web頁面轉換成某種相稱新的器械。為了從根本上理解Ajax技巧的潛力,我們必須攤開web頁面的觀點,并且在這樣做時,要忘卻很多曩昔我們所做的許多假設。在以前很短的幾個月間因為Ajax一詞的呈現,曩昔我們所用的很多技巧都要被揚棄了。

免責聲明:以上內容源自網絡,版權歸原作者所有,如有侵犯您的原創版權請告知,我們將盡快刪除相關內容。

您可能還會對下面的文章感興趣:

浙江体彩20选5开奖号 快乐10分走势图云 湖北快三计划 正宗长沙麻将下载 基金配资价格 银行怎么给私募基金配资 股票融资融券什么意思 长荣慧国际 东北麻将游戏下载 大众版单机麻将 河南快三一定牛 陕西十一选五 中超赛程 温州麻将 海南麻将有番规则图解 上海麻将清混碰 湖北快三推荐