基本原理
由於web的弊端,基於web的應用沒有本地計算機程序的相應概念,如進程、線程、堆棧、地址等,造成用戶瀏覽器僅僅是呈現服務器數據及簡單把用戶數據發送工具,不能像本地程序一樣,有數據空間、進程空間來包容各種用戶數據。現在的腳本程序也可以在本地處理一些簡單數據,但對於複雜數據處理起來非常繁瑣,使用像ajax、xml等其他輔助技術來處理複雜數據。由於這些因素的存在,現在基於web應用對初學者來與學習本地編程語言不可比較。因此,本文嘗試用一種結合本地技術與遠程數據的技術,使得客戶端程序處理遠程數據時可像本地一樣方便。爲此,提出如下的基本解決方案。
1、 進程空間定義
Www協議的定義只是爲了呈現用戶文檔數據,完全沒有程序的概念,在web上建立應用時,就必須建立各種虛擬的數據空間,如cooke技術。任何人訪問統一網站時,瀏覽器就會偷偷建立cooke文件,以便識別用戶的訪問,這是一種非常不和諧的技術。如果像本地程序一樣,當用戶打開應用程序時,操作系統便建立了一個程序運行的內存空間---進程,除非程序設計需要原因以外,進程不會在本地上再建立多餘的文件,程序的運行只是對內存數據的處理,而web應用因爲沒有進程空間概念,瀏覽器也僅僅只是呈現數據樣式,沒有辦法再進一步處理。
爲了讓web應用像本地程序一樣,本文提出可以像本地進程一樣,定義一個進程空間。
爲方便,這裏簡單用xml來表示web進程的定義:
<進程 ID=“8888”程序名=“facebook”>
< … >
< … >
</進程>
如上所示,當用戶訪問各種網站應用時,web服務器返回的只是該應用服務的進程數據給瀏覽器,用戶瀏覽器再根據進程數據位用戶在本地建立進程空間。
2、 函數空間定義
只有進程空間定義,web應用是沒有辦法運行起來的。操作系統出了會建立進程空間,爲了並行計算方便,他還會建立諸如線程、纖程、對象等概念的相對獨立的空間,這些空間的相對簡單,且都是平等的概念,每個線程空間都是分佈的進程空間線性範圍內,不會交叉在一起,因此,web應用模仿操作系統也定義相似的概念---函數空間。函數空間用來包含用戶數據,把用戶數據相對分割開來,並提供函數內安全保護。
簡單表示如下:
<進程 ID=“8888”程序名=“facebook”>
<好友>
<喬布斯ID=“1”/>
<…>
</好友>
<粉絲>
<…>
<…>
</粉絲>
</進程>
這種表示方法與XHTML非常相似,但是這是有本質區別的,本文是爲了web應用而定義的,而XHTML是爲文檔服務的。
上述的表示方法基本上與本地進程一樣,只是對空間進行簡單的線性分割,採取這樣的模型主要是爲web應用設計方便。