ajax|web|程式
該應用程式運行於其自身的進程之中-在其內資料模型和程式邏輯彼此清晰可見。在同一台電腦上啟動並執行該應用程式的第二個執行個體除了經由檔案系統之外無法存取第一個執行個體的資料模型。典型地,全部程式狀態儲存在單個的檔案中-當該應用程式運行時它被鎖定以阻止任何資訊的同步交換。
該伺服器提供一個客戶可以用之進行互動的可共用的資料模型。用戶端仍然維持它們自己的部分資料模型以達到快速存取。多個客戶可以與同一個伺服器進行互動,而此時在單個對象或資料庫行良好粒度級上控制的資源被鎖定。該伺服器可以是一個單個的進程,就象在90年代以前的早期的傳統型用戶端/伺服器模型或由若干中介軟體層、外部web服務等組成的現代模型。在任何情況下,從客戶的角度來看,伺服器具有單個進入點並且可以被認為是一個黑盒子。
當然,在一現代的N層架構中,伺服器將能與例如資料庫這樣的後端伺服器通訊-這導致了中介軟體層的出現-它們既充當用戶端又充當伺服器端。典型地,我們的Ajax應用程式位於這個鏈的一端上-只擔當用戶端,所以我們可能把整個N層系統看作單個黑盒子-我們把它標記為伺服器,以便於我們當前的討論。
我的工作表只專註於它自己的儲存在本地記憶體和本地檔案系統上的資料。如果它架構良好,資料層和描述層之間的耦合可能相當鬆散,但是我無法把它通過網路分解與共用。所以,從我們的描述層目標來看,它不是一個用戶端。
當然,Web瀏覽器是用戶端,它串連web伺服器並從中進行頁面請求。這些瀏覽器具有一些豐富的功能來系統管理使用者的web瀏覽,例如後退按鈕、曆史列表和多頁面儲存多個文檔。但是如果我們把一個特定網站的web頁面看作一個應用程式,那麼這些通用瀏覽器控制便不能再關聯到應用程式,就象Windows開始菜單或window列表相關於我的工作表一樣。
讓我們看一個現代web應用程式。主要因為每個人可能都聽說過它,所以我們將選擇Amazon-線上書商為例(圖4)。現在,我把自己的瀏覽器指向Amazon網站;因為該網站從我的上次訪問能夠記得我是誰,所以它先給我顯示一個友好的問候、推薦書列表和關於我已購買書的曆史資訊。
圖4 Amazon.com首頁。該系統記得我以前訪問過該網站,其中可導航的連結是通用資訊和私人資訊的混合。 |
從建議列表中點擊一個標題將把我導向一個獨立的頁面(也即,該螢幕閃爍一下,於是我就失去了幾分鐘前可以看到的列表)。於是新頁面中又會充滿各種上下文資訊(見圖5)。
再一次,大量的結合有通用和私人資訊的超連結出現。儘管如此,大量的細節與圖4所示極為相同-這,由於web瀏覽器的基於文檔的操作,必須被重新轉送到每個頁面。
簡言之,我向你展示了非常豐富的緊密聯絡的資訊。而且我與這種資訊互動的唯一方式是通過點按超連結並且填寫文本表單。如果我在瀏覽網站時的鍵盤輸入過程中睡著了並且第二天才醒來,那麼在我重新整理全部頁面之前我不會知道新的哈裡·傳輸速率書已經發行。我不可能帶著我的列表從一個頁面轉到另一個頁面,並且我不可能縮放該文檔的一部分來一次觀看多處的內容。
- Ajax: 一個建立Web應用的新途徑
- Ajax的錯誤處理機制探討(2)
- Ajax的錯誤處理機制探討(1)
- 初次體驗.NET Ajax無重新整理技術
- Rails系統中的AJAX開發技術簡析(4)