基本原理
由于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应用设计方便。