Web技术及其应用引论
杰弗瑞.福克斯 (Geoffrey C.Fox)
1997年4月9日
本文讨论基本Web技术, PERL, Java, JavaScript, VRML, Web下的数据库,以及多媒体。该讨论将在一种层次结构的WebWindows软件体系的背景下进行,在这种软件体系结构中,应用软件建筑于多用途的服务设施之上。我们认为WebWindows是一种很有前途的观念,其界面由Web客户/服务器标准来确定。这种普适的环境将支持各种WebTop工具, 例如Webword,将动摇大型软件公司现行的经营模型。我们将通过商业,医疗保健,金融,教育等例子解释这些概念。
本文旨在介绍和解释六种基本Web技术及其应用。我们认为,当前融合Web, PC, 以及通信基础设施以建设国家信息基础设施(NII)的潮流.将会继续。也许这将成为Gordon Bell的“可伸展网络及平台”(SNAP)概念的具体体现[Bell:95a]。
在2.1小节,我们介绍经典的Web客户/服务器体系结构。2.2小节概述人们常提的世纪之交(~2000+)时NII的情形。2.3小节讲WebWindows,作为一种普及的API(应用程序界面),它将被看作是Web客户和服务器的一个集合。比起常规软件界面,我们认为Webwindows要有用得多,它将成为主导性的,与硬件无关的“操作系统”[Fox:96C].在第2节最后,我们简略地讨论NII应用及服务内容,看它们如何能建立在Web技术和WebWindows界面之上。
第3节介绍我们选择的六种Web技术------PERL, Java, Java Script, VRML, Web下的数据库,以及多媒体。
第4节我们讨论六种典型应用-----Intranets,医疗保健,金融,教育,生产加工,以及危机管理或指挥与控制。
到目前为止,Web上已经有了400,000个服务器[IDS:97a]。但不断发展的技术将直接或间接地将所有客户也变成具有服务器功能的实体.客户与服务器之间的功能差异逐渐缩小。
图1是经典Web的情形。作为一种客户/服务器应用,它的实现要求适当的客户,服务器,以及网络技术。在本文中,我们将主要讨论涉及客户与服务器的一些问题,基本不涉及网络技术。最初web的体系结构,如图2所示,相对比较简单,各个部件的功能也很清楚.然而,随着Web的演化,我们进入了一种丰富同时也有些“混乱”的情景,如图3所示, 许多概念重叠交错在一起。实际上,自然的Web模型也许应该是一种服务器/服务器结构,这表现在所有计算机都需要有服务器的能力。这与Gore副总统的NII观念是一致的,他认为每个人既是信息的生产者,又是信息的消费者。当然,这种观念的实现可以粗略地在每台机器上运行一个服务器和一个客户来完成,如图4(b)所示,也可由一种分布式环境来完成,如图4(a)所示。尽管从计算能力的角度来看,单个服务器计算机通常要比单个客户计算机要强,但由于所有客户机的总计算能力要比所有服务器总计算能力大得多(如图5所示),不断加强客户方的功能是很自然的。
Figure 1:Synergy of InterNet and IntraNets
Figure 2: Simple representation of "old" (pre-1996) WWW software
architecture showing emerging advanced services,as well as basic technology
Figure 3: 1996 Java/Netscape client-server model with evolving/confusing/overlapping
capabilities
Figure 5: An estimate of the communication bandwidth and compute capability
contained in the NII and supercomputer industries
Gordon Bell的SNAP观念认为万维网,并行超级计算机,以及各种单位的内部网络将都建筑在相同的,普通的通信基础设施之上,即双绞线,同轴电缆,光纤, 以及移动电话,这些技术将每个人每个单位都连接起来[Fox:97a]。这种硬件基础设施是多样化的,各自都有广泛的用途,都在不同的时期得到更新和发展。但作为软件基础的Web技术,尽管建立在多样化的硬件之上,其本身在不同的应用场合将会相对一致。这是因为只有这样才能提高软件的生产率,降低软件生产费用。显然,SNAP观念的实现目前尚未完美,但我们已经有足够的基础设施,为社会创造了各种机遇。近年来American Online, Netscape,Microsoft,WebTV等的发展明显地证实了这一点。
图5提供了NII计算机通信能力的一种估计,它是常规超级计算机能力的100至1000倍,并且我们认为大规模并行计算机将不仅被用来做传统的超级计算,也将被用来做Web服务器,为客户提供各种多媒体信息。我们称这种情形为InfoVISiON,即Information, Video, Imagery和Simulation ON Demand。
InfoVIsiON包括各种多媒体数据的存贮,查询和传播。好莱坞,有线新闻电视台等至少存有100,000小时以上有价值的录像。如果将它们用MPEG压缩起来,大约需要一亿兆字节的存贮容量。注意到当前WWW中存放的录像数据和其它数据比起来是相对很少的,我们认为未来的NII中录像数据将会占支配地位。
如图6所示,NII将以1~20兆位的数据率连接到各个家庭和办公室,这种数据率大约是目前典型调制解调器数据率的1000倍,将覆盖从文字到视频数据传输的需要。
在图5中,我们估计在大型服务器机器上的投资只是在客户机上投资的10%。这说明是NII,而不是数值计算,为并行处理事业的发展提供了最好的机遇。同时我们还注意到,2000年NII所包容的计算能力约为10~100PetaFlops,远远超出一台TeraFlops超级计算机的能力。对此[Bhatia:97a],[Fox:97a][Fox:97c]作了进一步地探讨,旨在扩展Web成为一个超巨型计算资源。
可以将这种InfoVIsiON的情形看作是最了不起的客户/服务器模型的应用,其中有108个客户或小型服务器,还有104个大型服务器。但正如2.1节所提到的,我们也可以用一种含有108个结点的异构型服务器/服务器的结构来实现这一想法。于是我们就有了一个超巨型大规模并行计算机,其结点数是典型大规模并行计算机的105倍。当然,尽管讲起来有那么大的总体计算能力,通信是个问题,不可能每个服务器都随机地访问其它任何服务器。为使这种超巨型计算机能发挥作用,计算机体系结构的基本原理之一,追求数据的局部性,应该能得到有效地应用。图7表示了这样一种情形,当Jurassic Park VI,在好莱坞的服务器上发行时,不应该让美国每个人都直接访问该服务器,那样的平均距离是1500英哩。适当的做法应该是让这种热门电影沿不同层次的服务器级联下来,使得任何人的访问距离只有几英哩。这种策略将用于NII主干线上的光纤需求量减少约100倍。
Figure 6: Basic InfoVISiON home scenario in the year 2000: Intelligent
settop box interfacing the digital home to a hierarchical network of InfoVISiON
servers
Figure 7: Typical hierarchical server network for Hollywood master system
cascading down through a fragment of node systems shown for central New
York
图2和图3示意了Web软件的总体结构。应用HTML,VRML,以及Java等标准界面和技术是其得以蓬勃发展的基础。表1给出了一些关健概念的基本含义。
Clients(such as Mosaic and Netscape) | support browsing of hyperlinked documents, but have no internal interactive/compute capability[Andreessen:93a] |
Servers | read HTTP and deliver requested service to client |
HTML | document format supporting hyperlinks |
HTTP | transport protocol defining interaction between Web servers and clients |
URL | universal resource locator or addressing scheme for items on the Web |
MIME | data format allowing agent-like(extended e-mail)communication |
CGI | standard Web Server interface allowing sophisticated server extensions |
PERL | rapid prototyping language (Script) aimed at text and file manipulation (systems programming) |
Java | semi-interpreted C++ like language supporting an applet model of distributed computing |
JavaScript | interpreted language for manipulating Web components in documents |
VRML 1.0 | universal description for static three-dimensional objects |
VRML 2.0 | dynamic 3D descriptor for virtual environments |
JDBC | set of methods and drivers linking Java to general relational databases(Java Database Connectivity) |
我们相信在这种结构上发展应用软件的潮流将会加速推进。现在,我们已经看到了WebMail,WebDatabase(如图8所示),WebEdifor,WebFoil,WebChat,很快我们还会看到更高级些的产品,例如“WebWord”,它将提供至少是Microsoft Word的所有功能,但是建筑在Web技术之上。WebWord从体系结构和实现上与为Word提供一个Web界面是完全不同的,于是在新生的WebTop产品领域Microsoft将没有什么特别的优势。
Figure 8:(a) Oracle-Web Integration Architecture; (b) Choices of Formats
and Filters in Web Systems
WebWord将Web标准用于其内部及外部表示,从而允许方便的系统集成,新功能的增加,以及适应不同要求的定制。Web不仅能使得人们能应用新技术,为成熟的应用软件发展更好的版本,它同时也开发了计算机的新应用领域。
值得一提的是,当我们讲用Web技术开发出来的产品时,并不一定要求它必须在整个Internet上运行。WebWord可以就在一台PC机上运行,这台PC机具有如图4(b)那样的客户和服务器能力。进而,要求Web连接起来的数据库(图8)以及未来的WebLotusNotes之类的产品,都将基于Web技术,但往往只运行在相对封闭的企事业信息系统或Intranets上。
Web也很自然地支持虚拟组织机构,其中若干小型公司动态地连接在一起,这将使得大型板块系统和软件公司失去竞争力。另一方面,软件系统集成将会成为一种显著的行业,它根据不同市场及机构的需要将适当的基于Web技术的模块装配在一起。
上述隐含地提出了WebWindows将是未来软件开发的基础,它将取代UNIX,Apple MacOS,以及Windows95/NT。Gorden Bell讲Windows NT将会是SNAP的操作系统,我们认为这也许是对的,但不相关。这是因为实际的“行为”将会发生在比Windows NT更高的层次上,这种层次就是由Web所确定的[Fox:96c]。图9示意了这种上层的Web技术对下层具体应用程序的影响作用。我们注意到,有些应用将对基础web技术提出新的要求,安全性就是这样一个例子。在这种观念下,传统操作系统的作用和结构可能会改变,因为它们不需要直接支持用户了。这种改变操作系统结构的情形可从图10和图11的比较中看出。
Figure 9: This illustrates how economies of scale combined with the richness
of the underlying distributed computing model imply that Web technologies
with well-chosen enhancements can be used for IntraNet applications.
Figure 10: Architecture of Web Client-Server Software--Netscape and Internet
Explorer Today
Figure 11: Architecture of Web Client-Server Software --The Future as suggested
by Hotjava and Java Servers, such as Jeeves and Jigsaw? [Bhatia:97a]
对于Web(NII)应用,我们可以定义一种简单的层次结构,基于如图13所示的多用途公共设施的概念。“多用途”可以看作是众所周知的“军民两用”概念的扩展,其中一些功能能被许多不同应用共享。从COTS的角度看,Web也是一种极好的实现技术。自然,难以将公共设施和应用准确区别开来,且大多数应用又是递归地建筑在公共设施和“子应用”之上的[Fox:95]。尽管如此,我们还是可以识别5种NII的公共设施如下。表2将这些设施与7种应用领域作了一个对应。
Applications | WebTop Productivity | Info VISiON | Commerce/Security | Collaboration | MetaComputing |
Society |
X |
X |
X |
X |
|
Education |
X |
X |
X |
||
Enterprise Systems |
X |
X |
X |
X |
|
Health Care |
X |
X |
X |
X |
|
Command and Control/Crisis Management |
X |
X |
X |
X |
X |
Manufacturing |
X |
X |
X |
X |
X |
Collaboratory |
X |
X |
X |
在几篇论文中[Beca:7a],[Bhatia:97a],[Fox:97a],我们探讨了用Web软件作为并行处理操作环境和程序设计的基础。从如图12所示的计算金字塔的观点看,这采用了一种自底向上的哲学。这意味着Web硬件能提供世界的最快的计算机,而Web软件也将在最大的紧耦合并行计算机上运行。
Figure 12: Integration of Large Scale Computing and Web Technologies
上面列举的那些公共设施中有一些已由当前的Web技术实现了。例如,基础WebTop和初步的合作设施已经能用。另外一些仍然等待着新技术的出现,例如使InfoVisiON.成为可能的基础设施,以及使电子贸易成为可能的安全保障。最后,要使如上所述的总体计算成为现实,整个web运作的方式也许需要一种实质性的扩展。目前,Web主要还是集中在文件与图象的服务上。不过,通过Java和VRML技术,我们已经看到了一种向计算机交互式模拟方面的伸展。
a) Request
The client sends a request, conforming to the URL standard and formatted
with a MIME header, to the server. The server parses the request and decides
what to do:
-for FTP and other services, the server makes an appropriate request of
its operating system and responds,
-for HTTP service, it retrieves the file named by the URL and decides what
to do based on file type. An HTML, MPEG, AU, or any other file with recognizable
file extensions is returned directly to the client with no further processing(except
in the case of Server Side Includes-SSI),
-if the file is executable,the server executes it as a CGI program. The
server processes the header to pass execution parameters as environment
variables or as a STDIN stream to the CGI program.
b) Answer
The CGI program parses the input from the server and MUST generate a response--even
if there is no data to send back, the CGI program must send an error or
empty message since the http connection is still open and must be closed
by the server. The CGI program will send a header to server:
-If the header is type "Location," the server will send the indicated
file to the client.
-If the header is "Content-type," the server will send all the
data back to the client. This should be a properly formatted HTML page.
When the CGI program terminates, the server closes the connection.
Figure 13:
在这一节里,我们讨论在表1和图2和图3中提到的一些技术,即PERL,Java,JavaScript,VRML,Web下的数据库,以及多媒体。通过一些简单的例子,我们介绍它们的语法和应用特点。
3.1 Perl4和Perl5---CGI文本
早于Web的出现,Perl是一种很有名的解释型程序设计语言。最初只是针对于UNIX系统,现在也有了PC/Windows版本。 在Web出现后,Perl常用于编写所谓CGI文本,如图2,3所示,CGI文本主要用来方便地扩充Web服务器的功能。从理论上讲,CGI文本可用任何计算机语言编写,例如C,C++,甚至Fortran等。事实上,如图3所示,Java越来越多地被用在扩充服务器的功能方面,包括CGI文本和更复杂的机制。尽管如此,由于它极强的文字处理和文件处理的功能,Perl在CGI的编写中仍然占主导地位,这因为CGI文本的主要功能是处理HTML表格,其具体内容就是文字和文件处理。值得一提的是,一些混合型方式也常见于CGI文本的编写中,其用Perl作为一种上层包装,启动下层由其它语言编写的具体应用程序,例如数据库和模拟软件包。
后面我们将会谈到JavaScript,对比起来,它提供处理HTML表格的另一种方式,即处理过程运行在客户方。尽管如此,服务器方的操作有时是不可避免的。因此,PERL和JavaScript提供了互补的能力。至于Java,尽管已用于编写Web服务器等,它的文字处理能力远不如Perl。因此,Perl将继续广泛地用于CGI文本的编写。
Perl的最新版本是Perl5。相对于Perl4,它在多维数组以及面向对象方面有了重要扩充。然而,尽管它的新数组特点是有用的,但它的面向对象的机构远不如Java,因此并没被广泛采用。
图14是一个简单的Perl程序,其用到了字符串变量内插的功能.图15是一HTML表格定义,它使得流览器方的用户能输入一个名字,然后服务器调用这个图16所示的一段Perl程序(其是图14程序的一个扩充),返回一段问候给用户。
#!/usr/local/bin/perl5 -w
# Simple non CGI Hello World Example
#
print "what is your name?"; #Prompt User
$hero=<STDIN>; #Read Name Input
chomp ($hero); #Remove Trailing Newline
#
$today = 'date';
chomp($today); # Today's date captured from UNIX
#
print "Hello World to you my friend $hero on a great $today\n";
exit; # End Program
Figure 14: Simple PERL Program to read in name input and output a Cheery Greeting
(a)
<head>
<title> My Hello World CGI Script Tester</title>
</head>
<body>
<h1>Enter Your name in Text field of Form Please</h1>
<Form ACTION="http://boss.npac.syr.edu:8080/cgi-bin/webwisdom/helloworld.pl">
My name is: <input name="username" type="text" size="40">
</form>
</body>
(b)
Enter Your name in Text field of Form Please
My name is:
(c)
Hello World to you my friend Geoffrey Fox on a great Sun Mar 23 14:21:55
EST 1997
Figure 15: HTML Page defining Hello World with (a) HTML displaying as shown in (b). The result is displayed in (c).
#!/usr/local/bin/perl5 -w
# Simple Hello World Example
#
require "cgi-lib.pl"; #Public Domain library to read form data
#
$statusofread = $ReadParse(*formdata); # read data in associative array
formdata
#
$hero="Anonymous"; #if no good form data!
if ($statusofread) { # If $statusofread nonzero, data read OK $hero = $formdata{"username"};
#The input user name}
#
$today = 'date';
chomp($today); # Today's date captured from UNIX
#
print <<EOF; #Generate the HTML responding page starting with HTTP
line Content-Type: text/html
<html>
<head>
<title>This is Result of my Hello world CGI Script</title>
</head>
<body color="white">
<h1>Hello World to you my friend $hero on a great $today</h1>
</basefont>
</body>
</html>
EOF
exit;#End Program
Figure 16: CGI Script used in previous example
Java是一种面向对象程序设计语言,语法和C及C++相似。由于它使得浏览器方(客户方)能运行由HTML文件带过去的程序,它在1995年一出现,就给Web带来了重大影响。Java开创了平衡客户/服务器应用的新局面,将一些处理放到客户方来做,减少了通信开销,在很多场合都是受欢迎的。不仅如此,人们发现Java有更重要的意义。特别地,我们认为它向C++和Fortran提出了挑战,很可能成为未来软件工程和科学计算的主导语言[Fox:97e]。这个潮流有多方面的原因,例如,WebWindows的概念认为未来大型软件工程项目将基于web标准,这就意味着Java将成为自然的实现语言。另外,Java提供一种漂亮的面向对象机制,且具有优化编译产生能和Fortran性能相当代码的潜力。进而,我们可以看到一种以Java作为第一计算机语言学习的潮流,这种潮流发自于孩子们通过浏览Web首先接触了它,并用它来构造自己的homepage。
如图17所示, Java在Web上以一种半解释的模式得到应用。javac编译器将Java源码转换成一种面向Java虚拟机的中间码,bytecode。Java虚拟机解释执行这种中间码。
Figure 17: Structure of Interpreted Java Applets
Java虚拟机带有一套很强的运行系统,支持图形,网络和交互式用户界面。特别地,AWT(抽象窗口工具箱)支持诸如按钮,表格,窗口等界面机构.
图18和19分别给出了一段Java源程序以及引用这段程序所对应的中间码(类文件)的HTML页,我们称这种嵌入的类文件为Applet。
Figure 18: The Java Code for the Simplest Java Applet: Hello, World!
Figure 19: Displaying Your Hello World Applet from a Web Page
可以指望Java技术将在许多方面得到改进,以提高其性能,增强其功能。"适时编译"技术就是一个例子,它嵌入在Java虚拟机中,在执行时将byfecode转换成机器码。我们将会看到各种支持库的出现,包括商业应用和科学计算等。同时,我们也会看到将Java源码直接编译成本地机器码的编译的出现。
3.3 JavaScript
JavaScript看起来有些像Java,但是完全不同的一种语言。我们可以大至认为Java是一种计算机语言的扩展,而Java Script是一种文本描述语言(HTML)的扩展。
图20是一段简单的JavaScript,显示"Hello,World!"。真正表示JavaScript特点的是图21和22所示的内容。在图21所示的程序中,一种新的HTML标记属性ONCLICK用来指出用JavaScript的过程Compute去处理表格的数据。这个过程就定义在HTML文件中,在客户方执行。图23示出了JavaScript怎样能用来生成参数化的HTML页,其中JavaScript的变量(可能从表格的输入中取值)被用来确定HTML页的动态特性。由于它允许在一个框架中的动作去控制另一个框架的特性, Java Script特别适合用来构造多框架的HTML文件。
<HTML>
<HEAD>
<Title>A Test of JavaScript</Title>
<HEAD>
<BODY>
<SCRIPT LANGUAGE="JavaScript">
<!--A Conentional comment to hide JavaScript from old browsers
document. writeIn("<hi>Hello World!<hi>");
//scriptend-->
</SCRPT>
<b>Continue with conventional HTML</b>
<BODY></HTML>
Figure 20: Hello World Example of Javascript
<HTML><Head><TITLE>JavaScript with
Forms</TITLE>
<SCRIPT LANGUAGE="JavaScript">
<!--A Conventional comment to hide javaScript from old browsers
function computr(form){
if(confirm ("Is this what you want?"))
form. result. value=eval(form.expr.value);
else alert("Enter a new expression then!");}
//scriptend-->
</SCRIPT></HEAD>
<BODY><FORM>
Enter an Expression:
<INPUT TYPE="text" name="expr" SIZE=15>
<INPUT TYPE="button" VALUE="DoIt!"
ONCLICK="compute(this.form)">
<BR>Result:
<INPUT TYPE="text" Name="result" SIZE=15>
<BR>
</FORM></BODY></HTML>
Figure 21:HTML Page for JavaScript
Figure 22: HTML Display for JavaScript
Figure 23: Parameterized HTML in JavaScript
Java是由SUN公司开发的,现在已成了工业标准。JavaScript由Netscape开发,现在也得到了包括Microsoft在内的一些流览器厂家的支持。我们相信,尽管它尚不是一个标准,JavaScript的作用是很清础的,将会作为Web技术之一长期存在。在第3.2节里,我们提到了AWT,其功能与JavaScript相似。我们可以用Java AWT来模仿Java Script的效果,但实现同样的效果,用Java Script要方便得多。
和Java比起来, JavaScript有许多局限性。JavaScript支持对象,但没有继承。JavaScript依赖于浏览器去执行多任务线索,而Java直接提供语言级的多线索支持。JavaScript通常只用于相对于简单的客户方界面信息的处理,Java的用途则要广泛得多,它是一通用程序设计语言。
3.4 VRML及Web上的真实世界
VRML的动机是很清础的.这个世界三维的,人们应该能够在Web上看到和操纵三维物体。最初的VRML1.0不是一种程序设计语言,它只是一种静态三维场景加上动态视点的描述语言。这样一个三维场景能象图像链(imagemap)一样嵌入到HTML文本中。VRML于1994年春初提出来,1995年出了1.0版本,现在的版本是2.0。VRML是虚拟现实模型语言的简略语.
图24是VRML的一个例子.六行VRML1.0定义了被3个单位长度沿X轴方向分开的两个单位尺寸的物体。VRML的基础是SGI的Open Inventor图形数据库格式,做了些适合Web应用的限制和扩充。VRML的三维世界建筑在一种层次结构之上,其基本概念包括结点,组,分隔符。上面例子中的cube和Sphere,以及图25中的Material都是结点。每个结点有些属性,例如图25中的diffusecolor和translation。图26解释成组的概念。
Figure 24: White Cube and White Sphere in VRMl
Figure 25: Yellow Cube and Yellow Sphere in VRML
Figure 26: Yellow Cube and White Sphere in VRML
图27是一个复杂的例子,一个由云层所复盖的地形区域。由于有效三维图形的处理对计算机通信的要求都极高,现在这种技术目前还没能在Web上广泛应用。尽管这样,许多性能方面的改进有可能通过语言设计和VRML浏览器的改进得到。我们相信硬件,软件以及语言本身的进步将会增加VRML的实际应用。
Figure 27: VRML for 3D Terrain with Weather Simulation Superimposed
在新的VRML2.0版本中,对性能问题有了些考虑,但主要是加进了事件"行为"的概念,其允许程序代码与结点相关,用以修改结点的属性。目前VRML支持Java和JavaScript。这允许场景中的物体相互运动,按照程序代码的描述交互作用。于是,虚拟现实的效果,以及基于Web的游戏等就可以被创造出来。当然,VRML并不是支持三维物体的唯一途径,我们可以通过扩充Java运行环境使它支持三维图形,就像它现在支持二维图像一样。很清础,VRML的思想是基本Web技术的不可或缺的一部分,但如何有效实现的途径似乎尚未找到。
3.5 Web下的数据库
和Web比起来,数据库已有很长的历史了。由于数据库系统现在代价不高,且容易使用,NPAC有许多与数据库有关的应用。
所有这些都能通过Oracle关系数据库或Illustra对象数据库和Web相连得以实现。数据库在NPAC以及其它单位,近年来的普遍应用是可以理解的。传统上,我们用UNIX的文件系统来管理我们的数据和资料。现在数据库大规模降价,以及Web方便的界面自然改变了这种情形,使我们能够在不变的费用上通过HTML提供的友好界面享受数据库系统提供的各种功能,图8(a)是一个典型的通过简单CGI文本使Web与Oracle数据库相连的例子。我们已经积累了许多应用WOW的经验,它有一个很简单的CGI文本,用户通过HTML表格输入的查询命令由Oracle的PL/SQL解释执行。WoW提供的几个工具库,使得将数据库服务器生成的数据转换成HTML文本发送给客户端相对比较容易。
PL/SQL是一种方便的高级语言,生成标准的SQL查询,但它只适用于Oracle系统,我们认为Java数据库连接工具(JDBC),其可以访问任何SQL数据库,在将来会是十分重要的。
在图8(b)中,我们强调了一个复杂的Web服务器可能包含许多数据转换(过滤)器。这是因为数据往往以具体应用程序特有的格式存放,而包含在返回给浏览器的HTML文件中数据的描述往往是不同的。Java很适合编写这种数据转换器。图28是一个利用PL/SQL访问简单电话号码数据库的例子,图29和30是相应的两个HTML文件。
CREATE PACKAGE EXAMPLE IS
procedure get_phoneno_name (name IN VARCHAR2);-- only procedure
END EXAMPLE;
CREATE PACKAGE BODY EXAMPLE IS
CREATE PROCEDURE get_phoneno_by_name(name IN VARCHAR2) IS
CURSOR person_cui(cname IN VARCHAR2)IS
SELECT last_name,first_name,phone_no,phone_type
from person_info_table,phone_list_table WHERE
(person_info_table.person_id=phone_list_table.person_id) AND (last_name
LIKE
('%'//LOWER(cname)//'%')OR fist_name LIKE('%'//LOWER(cname)//'%'));
*lname person_info_table.last_name%TYPE;- a variable to hodl last
name
*fname person_info_table.fist_name%TYPE;- a variable to hold fist
name
*phone phone_list_table.phone_no%TYPE; a variable to hold phone no
*ptype phone_list_table.phone_type%TYPE;- a varible to hold phone
type
BEGIN
htp.htitle('Query Results');
htp.ulistopen;
OPEN person_cur(name);- open the cursor
LOOP;-Fetch eatch row matching the query into variables repeatedly
FETCH person_cur INTO lname,fname,phone,ptype;
EXIT WHEN person_cur
/* print out the query result*/
htp.p(htp.item //' The //'ptye//' phone no. of '//fname//''//lname//':phone);
END LOOP;
CLOSE person_cur;-close the cursor after it is done
htp.ulistCLOSE;
END get_phoneno_by_name;
END EXAMPLE;
Figure 28: the PL/SQL Package for a Phone Example
A HTML form page to accpet user search input and invoke
CGI script on the Web
server to access the database
<html><header><title>A Web/Oracle
phonebook Example</title></header>
<body>
<form action="http://myhostcp616/wow/get_phone_by_name">
Enter Last or First Name : <input type="text" name"name"
value="">
</form></body></html>
Figure 29:Web Page Search Interface to Wow Phone Example
<html><header>
<title>Query Reslts</title></header>
<body><hi>Query Results</hi>
<ul>
<li> The office phone no. of Geofftey Fox: 3154432163
<li>The home phone no. of Geofftey Fox: 315xxxyyyy
</ul>
</body>
</html>
Figure 30: Result of Wow Phone Query is Another Page(assume user typed in 'geoffrey)
3. 6关于数字语音和录像
多媒本在Web上的作用越来越重要。不少人认为Web将要覆盖当前电话和电视的作用,而且已有了许多这方面的努力。这将给网络以及客户和服务器软件带来新的要求。起初,从Web服务器上可以取下MPEG压缩的录像,但这只能适用于很短的一个剪节。我们必须用到流服务器,其数据连续不断地流向客户。由于不能有中断和延迟,这就对网络提出了很高要求。目前的Internet可以支持语言流,例如有名的RealAudio产品可以给出AM质量的语音效果,但还支持不了录像。当然,这种语音和录像的传送也依赖于压缩技术,例如分形,MPEG,小波等,这些技术的实现细节通常都是商业机密。
新的网络硬件设备,例如ISDN,ATM等也是在Web上发送高质量录像数据的希望所在,但它们真正被部署,投入广泛使用的时间和方式仍然是不清楚的。一个确定的因素是到底视频数据在Web上发送对消费者来说有多么重要!
4.1 Intranets和企业的信息系统
Intranets最近流行起来。它们相当于用WebWindows技术建设企业的信息系统如2.1节中的图9所示。这些系统将应用传统的数据库技术,但和丰富的WebTop环境连接起来。注意,这意味着人们不会因为今天Internet的带宽不变和不够安全而拒绝Web技术。如果我们今天建设一个WebWindows Intranet,它能够具有该企业所能提供的带宽和安全保障。NPAC在去年Newt Gingrich访问Syracuse大学的时候曾开发了一个政治信息系统[Maxell:96a],该系统显示了信息存贮和在线讨论在WebWindows概念下的一种实现。
4.2 Web Med:Web技术在医疗保健方面的应用
Intranet的想法当然也能应用于医疗事业,Web技术可以将医生,医院管理人员,保险公司,护士,以及病人联系起来,共享有关信息,NPAC有两个这样的项目.一是和Syracue大学的护士学院合作开发一个帮助中小学校护士的系统,二是利用简单的虚拟现实技术使残疾人能够流览Web,从他们家中将医疗感应数据传送到远方的Web服务器中供那里的医生分析.
4.3 Web技术在金融工业中的应用
NPAC有兴趣的领域之一是将WebWindows用于金融工业中,这里Java用来提供响应实时交易数据的界面,也允许下载简单的模型代码以辅助在线的交易活动。不过,当今复杂的金融环境要求应用Monte Carlo等计算量很大的算法来做精确模拟。这里我们应用Web技术让投资者访问股票数据,而让模拟系统运行在大规模并行计算机上。
4.4 Web技术在远程教育方面的应用
有理由期望Web将对教育事业有一个很大的促进,这既包括传统的学院式教育,也包括远程教育。这方面已有不少研究与讨论。例如什么是最有效的学习方法,异步还是同步?教育单位的经营模型的可能改变也是一个论题。我们认为这些重要问题只能通过一些实际的实验来回答。下来讨论一些从事这些实验的方式和技术。
4.4.1基础设施问题
带宽。第2.4节提出的多用途的基本原理告诉我们, 搞远程教育,我们将用NII所提供的,商业,医疗,娱乐行业同样也在用的基础设施。
用户访问Web可基于28.8Kb的POTS连接。这就是说只能指望文字,语音和图象的传送,高质量视频数据的传送将要求ISDN(12 Kb/sec)或ATM。假定MPEG1压缩,全屏NTSC录像显示要求大约1.5Mb/sec带宽。作为对比,4速CD-ROM的数据传输率只是0.6Mb/sec。我们注意到ISDN的能力只能应付上述要求的10%。当然,作为教育应用,我们也许只需1/4屏,每秒15帧的质量。小波变换等较先进的压缩技术现在已可用,但还没标准化,没有像MPEG那样在PC中已有普遍应用。
这种能支持视频数据传送的带宽也能支持如下与远程教育有关的活动。
缓存(Caching)的作用。在远程教育应用中缓存既对性能也对内容都有影响,教育通常是在教室环境中进行的,一组学生浏览相关的内容自然地有效利用了缓存资源。在由NASA LangLay做的一项学校实验中,95%学生用的资料都在Cache中找到,这就使得一个28.8kb的连接看起来像一个专用T1线[Fox:95m]。
缓存也影响内容的质量。在教室里用事先选好的材料能够保证学生浏览相关的,适当的内容,维持教师备课的效率。考虑到一些不适当材料的影响,一些学校对学生访问Internet做了一些限制,在Web上进行数据开采,收集与中小学教室相关的资源为Web的内容增加了很大的价值.NPAC的KidsWeb项目[Kids:95a]开发了一个系统,支持Syracuse地区8年级的教学计划,它是NPAC的Web;服务器上被最经常访问的一个内容。
如第2.2节和图7所示,缓存也用来支持层次型Web服务器的情形。需求量大的内容被复制存放到与用户靠近的服务器上以减轻对带宽的压力。
在今后的远程教育实验中,我们打算给每个学生一片CD-ROM,通过传送同样的URL,授课将以一种同步的方式进行(在同一时刻所有学生都看同一页). 这种方式利用诸如Habanero[NCSA:97 b]或[TANGO:97b]之类的先进合作手段来从本地CD-ROM上获取数据,在每个客户上显示同样的内容,例如一个100Kb的图象。这就有效地降低了对带宽的要求,使得28.8Kb的线路能支持图象丰富的教学内容。
4.4.2人与人之间交流的问题
合作。人们关心Web所带来的这种虚拟学校,虚拟教育的模式引起的教师与学生间,学生与学生间的隔离,这显然是不利于学习的。但另一方面Web技术使得学生的交流范围扩大到了全世界。远程教育使得学生能根据自己的情况安排时间,但也应该支持学生和教师间的双向交流。在很多情景,学习也应该是一个集体行为,因此应该有多用户的合作工具,支持集体讨论,写作等活动。
合作对基础设施提出了高要求,因为是实时交互进行的,像缓存,层次型,服务器结构等技术都用不上了.如上所介绍的,与CD-ROM结合的一种方案似乎是很有前景的。我们的基于Java的Tango系统就支持这种模型.我们希望能很快用它做一组实验。
我们在视话会议方面的经验显示56Kb是最低要求,ISDN(128kb)足够了,但远不是指每秒30帧的全屏录像,我们正在实验用语言来做注解,以增强在线教材的有效性。
写作。如果2.3节所讨论的,Web的广泛性使我们会看到专有操作系统将被Web操作系统所取代,将会看到大批WebTop 工具的出现,在Web环境下的写作将成为远程教育的中心内容。
家庭作业将在电子环境下完成,学生必须能够创造,修改,编辑在线超文本材料,这将成为他们学习过程的一部分。作为我们计算机课程的一部分,我们开发了一个虚拟程序设计实验室,通过浏览器,学生可以编写,编译和运行程序[Dincer:97a],[Dincer:97b ]。
主动性模拟。模拟可以提供一种学生与模拟世界双向交互的手段,学生应该能够通过设置参数,激活事件来引导模拟的过程,观察有兴趣的部分,获取有关注释性信息。虚拟现实是提供一种身在其中之感环境的技术。它们成熟和应用将大大改善模拟的质量。
巡游。尽管Web是教育材料和内容无比丰富的源泉,但不断增加的信息量和复杂性使学生很容易在其中迷茫,我们需要有针对性较强的巡游工具,使得在其中寻找我们需要的内容能更有效。
结构化的巡游和自由随意浏览之间要求得一个平衡,既使教师能有效地引导学习过程,也要使学生能应用对他自己最适合的学习方式。NPAC从事的 KidsWeb和录像档案项目属于非结构化的,而为计算机科学课程提供的在线电子教材属于结构化的。[CPS:96a], [Fox:95n]。
评估新技术和方式对学习效果的影响是重要的, 而Web本身在这方面也很有用。一些工具用来记录学生巡游的路线以及他们对所选择序列的反应,这些信息可用来分析学习的有效性。记录所访问过的URL是最简单容易的,我们现在用它来使有关教材的文字内容(以HTML页的形式出现)和事先录制好的语音联系起来。Tango支持对多媒体合作过程的完整记录,记录巡游路线以及在两个目标间的时间间隔使我们可以预测以后的巡游方向,改善停息设计[Sherman:97a]。
信息的单位。在传统的模型里,教学通常是由授课加上教材,笔记等实现的,在基于Web的环境下,信息高度分布,学生可以进行交互式模拟,我们必须考虑什么是最合适的信息单位.一种电子百科全书的模型也许是合适的,条目短小,模块化,相互连接,对一个条目,可以包含多作者,多层次的解释。
从物证上看,信息的自然单位应该约为一屏计算机显示.我们注意到这类似于一张投影胶片上的内容,因此我们可以认为报告技术可能是Web教育实现技术的一个来源。
4.4.3 NPAC的一些实验
NPAC的文字索引录像的项目将需求驱动的放映,软件系统等技术结合起来,提供一种以教育为中心的需求驱动的放映服务。该项目的所有工作都是基于Web的。
以娱乐为服务内容的放映系统所给出的几乎是100%视频内容。NPAC的VoD项目以教育为服务内容,录像放映服务系统被集成到一个大信息系统之中,放映服务器和一个全文搜索数据库连接起来,这样,在放映录像的同时可以伴有解释文字材料等[Maxwell:96a]。
在放映服务系统的开发过程中,我们研究了图象质量和带宽要求之间的权衡,这是在固定位率的网络通道上传输可变位率的视频数据流必须考虑的。压缩技术总是希望能最有效地表达两帧相继图象之间的差异,但这种差异在不同的情景下是不一样的[Podgorny:97a]
4.4.4 WebWisdom
这是一个层次结构的知识树,用JavaScript实现[Fox:97b],在Netscape3.0上应用。它是一种有效地显示一组相关内容的方式,在顶层JavaScript的一些函数调用,定义了一种递归的,层次式结构,这些函数调用自动生成包含被显示内容的HTML页,使其能在Netscape出显示出来。
这种结构在教育和邮件归档方面有自然的应用,我们目前已实现了,"Family "和"Family Photoworld". Foilworld将NPAC所有报告宣讲材料归档,使得它们可被按字母序或内容主题查询,浏览,Family Photworld使我们能将家庭历年来的照片有序地整理好,在Web上得以方便地浏览,当然照片需事先用扫描仪之类的设备变成计算机文件。我们已将WebWisdom与Oracle数据库连接起来,其提供了更高的搜索功能。WebWisdom的一个重要功能是其Java前台,其可以从不同层次的结点中抽取内容,组成新的结点。
4.5生产加工和NII
高性能计算和通信技术以及NII目前都在实际生产中得到应用,流行的"灵敏加工"概念使人们必须用高性能计算机来做快速设计与模拟试验,而NII将不同的加工过程以及相关单位联系起来。
在飞机生产的各个方面,高性能计算是十分重要的,但我们注意到流体力学计算的开销在波音777费用中只占5%,而整个系统问题要求的计算机开销要超过50%,因此,针对CFD研究并行计算是有用但是不充分的。这就是实用HPCC的Amdahl定律。CFD算得再快,它在整个系统中只占那个份量,因此,HPCC必须考虑集成整个过程,上述那个5%与50%之比,即1:10,可以看作是在大规模,高技术生产过程中对并行计算(传统HPCC)和分布计算(NII或Web)之比。
这种观点的被接收可从目前所用的设计标准看出来。以前,重点在于提高性能:速度,范围,高度,尺寸,这些仍然是重要的。但现在更重要的标准是竟争力,包括投放市场的时间,整体承受能力。设计费用是这个承受力的一部分,但80%的费用通常都花在生产加工和维护上。因此,HPCC/NII的应用需既描准设计过程,也描准生产过程以及产品的整个生命周期。
以生产未来的战斗机为例,ASOP(可承受系统优化过程)是一种新的指导思想[ASOP:95a],及其有关的一个项目。这种假想的飞行器将涉及到六家重要的飞机生产厂家和20.000个子任务单位,这就构成了一个遍布全国甚至全世界的"虚拟公司",最初可能需要50个工程师来做概念设计。之后的初步设计和详细设计可能分别涉及到200和2000个工程师。
Copyright NPACT