经过十年的发展网络已经成为一个“活”的有机体,“补充新鲜的数据,制作新的信息和服务,脱离过时的。我们观察到两个重要结果的演变。首先,网络服务器日益成为一个信息和服务渠道组织。越来越多的原始数据从地理分布动态来源(例如,网络监测工具,网络的传感器等)。 Web应用程序,例如原始数据(即动态内容)和静态内容结合起来撰写一个HTML / XML的网页道路上的用户(即动态网页产生) 。一些应用程序使用HTML网页充分利用计算资源,为客户端缩短反应时间和减少通信量。第二,简单的客户服务器模式的网络让位给了有深厚的基础设施的多个中介机构(例如,边缘服务器[ 11 , 6 , 10 ] ,代理缓存[ 1 , 4 ] )的透明位于客户端和服务器之间。通常情况下,客户,中介和执行不同的服务器平台技术(例如的VBScript和JavaScript ) 。鉴于这种高度非均匀执行环境很清楚,单个Web应用开发不能完成同样的不同服务质量( QoS )以满足不同的用户需求。
要从根本上解决这个问题, 在Web中选择了一个简单的解决办法,能使Web应用程序脱离开发平台的依赖性。例如,一个基于PHP的Web网站可能需要服务的要求,微软Internet Explorer 6.0中的VBScript的支持宽带连接,结果可能会缓存在Akamai公司的边缘服务器。我们呼吁这个组合平台和技术在要求的范围内。鉴于开发商被要求回答对“在执行该代码”在设计时,然后执行每个代码使用特定技术支持在平台上的代码将被停止。在实践中,大多数网站可能不支持所有平台和技术。相反,它们解决的主导技术是:疏远“不顺从”的用户,本网页最佳浏览器坐标[ 14 ] 。这些网站的理由纯粹是经济的: 跟上技术的进步,并提供一定程度的QoS保证,他们可以承受只有少数几个主要要求的情况。困难在于缺乏适当的基础设施支持。
我们认为,与平台无关的开发和部署的自适应可作为具有成本效益的替代品来替代今天的Web应用开发。首先,它使便携式应用大大发展,从而降低开发和维护成本。申请成为不受外部环境变化,如升级互连网络和采用新的信息设备。其次,令不同的用户的QoS保证一定的水平。这些令谁访问网站的能力较低的平台并不过分阻碍。然而,庞大的网络和其自由放任的性质带来了独一无二挑战的编程。单纯地设计可能需要一个可大大改变现有网络的基础设施。我们都知道, Java尝试建立一个统一的执行环境,这在网络上一直享有荣誉。
我们提出了一个适应发展框架平台和自适应部署Web应用程序,现在来描述其设计和实施。该框架由四个部分组成:一种编程模型、脚本语言、一个安置规范语言,并重定向翻译。我们设计框架时非常小心,因为这种侵入性,可方便地插入而几乎没有改变现有的网络基础设施。
该平台来自独立分开安置的应用逻辑[ 7 , 8 ]和使用一个面向对象的编程模型来描述后者。抽象的编程模型创建一个统一的方案(在概念上)在不同的平台以及跨地域在互联网运行。均匀引起快速原型的发展,从而减少生产成本和提高生产率。自适应部署则涉及单独安置规范。编译需要一种与平台无关的应用程序执行并生成一个根据某一规范产生的版本。明确的编译单独安置要显示平台规格细节,而不是隐藏它们,这样可以使平台的具体细节优化和提高QoS服务供应的质量。
2 动机
两个最关键的决定,是Web应用程序的开发要在设计时说明“在执行”和“正在加载……”的状态,并找到最佳答案,我们工作的进展在报告的文件中。在传统的分布式环境中,某些均匀性理所当然的(例如, Java虚拟机) ,决策可以推迟部署的时间,很少有不利的影响。相比之下,网络应用开发商早在设计阶段就要作出正确的决定,因为以后恢复时的成本代价会很大。在本节中,我们来研究这些问题的细节。
地址与事件。动态页面生成是几乎所有的Web应用程序最基本的功能。一方面,它可以个性化地浏览。生成之前对DOM的浏览器启用动态网页生成已经完全做了在服务器端。但是, Web服务器可能利用浏览器的动态内容的修改能力,负责向浏览器发送网页、脚本以及原始数据。在相同的在网络带宽时,客户端页面即最后的HTML或XML文件是远远大于原始数据的大小的。此外,它还可以帮助减少服务器负载,因为本页产生非常耗时。另一方面,处理机密数据和执行一个敏感的逻辑处理应该留在服务器端。输入验证就是另一个例子。在当地客户端时,用户输入时使用简单的规则验证。用户的输入必须发送到服务器,但是,当他们需要对敏感信息验证时,如果一个客户端的连接是通过一个安全连接并可以信任的,例如一些验证就可以做在客户端。因此,在Web应用程序的发展中,安置决定是一个关键的因素,因为它直接影响到应用程序的性能。曾经,这些昂贵的安置决定改变Web服务器和Web代理使用不同的技术。例如,他们可能会支持不同的脚本语言。
时间与事件。考虑到在一个典型的网页多级菜单选择问题。在两个级别的图书选择菜单中,第一级菜单中包含项和下一级子菜单中包含个别书籍属于某一项。这是一种优化技术,许多网站使用的是多级菜单选择地加载所有可用菜单条目的网页。浏览器根据当地用户的选择适当地显示一个子菜单,这意味着有更好的响应时间、减少网络流量。然而,如果用户访问该网站的一个缓慢或间歇性的网络连接时其选择数量是非常大的,用户可能会花很多不必要的长期加载时间。此外,如果下一级菜单条目不仅取决于对当前的选择,而且也对保存在服务器的动态数据(例如,图书库存)的选择,这将是一个更可取的请求,服务器将发出一个适当的子菜单。当然,发出一个不明确页面请求不是没有成本;如果浏览器没有能力这样做增量修改(其中只有少数国家最先进的浏览器有,至少现在看来如此),服务器应再重发整个网页的新数据去满足每个新的要求。