10.1 HTTP发展中存在的问题
尽管HTTP/1.1的设计经过了充分的考量,但随着HTTP被越来越多地用作复杂远程操作的统一载体,HTTP/1.1已经开始显现出了一些局限性。HTTP的发展中至少存在4个方面的问题。
·复杂性
HTTP相当复杂,而且其特性之间是相互依存的。由于存在一些复杂的、相互交织的要求,以及连接管理、报文处理和功能逻辑之间的混合作用,要想正确地实现HTTP软件肯定是非常痛苦、很容易出错的。
·可扩展性
HTTP很难实现递增式扩展。很多流传下来的HTTP应用程序中都没有自主的功能性扩展技术,使协议的扩展无法兼容。
·性能
HTTP中有些部分效率不高。其中很多低效特性会随着高时延、低吞吐量的无线
访问技术的广泛使用而变得更加严重。·传榆依赖性
HTTP是围绕TCP/IP网络协议栈设计的。尽管没有限制说不能使用替代协议栈,但在这方面所做的工作非常少。HTTP要为替代协议栈提供更多的支持,才能作为一个更广阔的报文发送平台应用于嵌入式和无线应用程序之中。
10.2 HTTP-NG的活动
1997年夏天,万维网联盟启动了一个特殊项目,调查并提出一个新的HTTP版本,以修正与复杂性、可扩展性、性能及传输依赖性有关的一些问题。这个新的HTTP被称为HTTP:下一代系统(HTTP-NG)。
在1998年12月举行的一次IETF会议上,提出了一组HTTP-NG建议。这些建议勾勒出了一种可能的 HTTP主要发展方向。这项技术还未被广泛采用(可能永远也不会被广泛采用了),但 HTTP-NG确实在扩展HTTP系统方面做出了最认真的努力。下面我们来仔细看看HTTP-NG。
10.3模块化及功能增强
可以用三个英语单词来描述HTTP-NG的主题:“模块化及功能增强”(modularizeand enhance)。如图10-1所示,HTTP-NG 工作组建议将协议模块化为三层,而不是将连接管理、报文处理、服务器处理逻辑和协议方法全都混在一起。
·第一层,报文传输层(message transport layer),这一层不考虑报文的功能,而
是致力于端点间报文的不透明传输。报文传输层支持各种子协议栈(比如无线环境下的协议栈),主要负责处理高效报文传输及处理方面的问题。HTTP-NG项目组为本层提出了一个名为WebMUX的协议。
第二层,远程调用层 (remote invocation layer),定义了请求/响应的功能,客户端可以通过这些功能调用对服务器资源的操作。本层独立于报文的传输以及操作的精确语义。它只是提供了一种标准的方法来调用服务器上所有的操作。本层试图提供一种像CORBA、DCOM和Jave RMI那样的面向对象的可扩展框架,而不是 HTTP/1.1中那种静态的、服务器端定义的方法。HTTP-NG项目组建议本层使用二进制连接协议( Binary Wire Protocol).
第三层,Web应用层 (Web application layer),提供了大部分的内容管理逻辑。所有的HTTP/1.1方法(GET、POST、PUT等),以及HTTP/1.1首部参数都是在这里定义的。本层还支持其他构建在远程调用基础上的服务,比如WebDAV。
只要将HTTP组件模块化了,就可以对其进行改进,以提供更好的性能和更丰富的特性。
image.png
10.4 分布式对象
HTTP-NG的很多基本原理和功能目标都是从 CORBA和 DCOM这样的结构化、面向对象的分布式对象系统中借鉴来的。分布式对象系统对可扩展性和功能特性都很有帮助。
从1996年开始,一个研究团体就在争论是否要将HTTP与更复杂的分布式对象系统聚合在一起。在 Web中使用分布式对象模型有很多好处,更多与此相关的信息请查阅Xerox PARC早期名为“Migrating the Web Toward Distributed Objects”("web向分布式对象的迁移")的文章(ftp:llftp.parc.xerox.com/pub/ilu/misc/Webilu.html)。将Web和分布式对象统一起来的雄心使得HTTP-NG的应用受到了某些社团的抵制。过去的一些分布式对象系统受到了重量级实现方案和形式上复杂性的影响。HTTP-NG项目组也尝试去解决需求中提到的一些问题。
10.5第一层——报文传输
我们从最底层开始,近距离地看看HTTP-NG这三层的功能。报文传输层关心的是报文的有效传输,不考虑报文的含义和目的。报文传输层为报文传输提供了一个API,无论底层实际采用的是什么网络协议栈都可以使用。
本层关注的是提高报文传输的性能,其中包括:
·对报文进行管道化和批量化传输,以降低往返时延,·重用连接,以降低时延,提高传输带宽,
·在同一条连接上并行地复用多个报文流,在防止报文流饿死的同时优化共享连接;·对报文进行有效的分段,使报文边界的确定更加容易。
HTTP-NG工作组将大部分精力都放在了为第一层的报文传输开发WebMUX 协议上。WebMUX是个高性能的报文协议,可以对报文进行分段,并在一条复用的TCP连接上交错地传输报文。本章会对WebMUX进行较为详细的介绍。
10.6第二层——远程调用
HTTP-NG结构的中间层提供了对远程方法调用的支持。本层提供了通用的请求/响应框架,客户端可通过此框架调用对服务器资源的操作。本层并不关心特定操作的实现及语义(缓存、安全性以及方法逻辑等)﹔它只关心允许客户端远程调用服务器操作的接口。
现在已经有很多远程方法调用标准了(举几个例子来说,比如CORBA、DOM和Java RMI),本层并不打算支持这些系统中所有好的特性。但它有一个明确的目标,就是要对HTTP/1.1所提供的HTTP RMI支持进行扩展。特别是,要以可扩展的面向对象方式提供更通用的远程过程调用支持。
HTTP-NG小组建议本层采用二进制连接协议。这个协议支持一种高性能的可扩展技术,通过这种技术可以调用服务器上经过良好描述的操作,并将结果返回。本章稍后将对二进制连接协议进行较为详细的讨论。
10.7第三层——Web应用
Web应用层是执行语义和应用程序特定逻辑的地方。HTTP-NG工作组避开了扩展HTTP应用特性的诱惑,专注于正规的基础建设工作。
Web应用层描述了一个用于提供应用程序特定服务的系统。这些服务并不单一,不同的应用程序可能使用不同的API。比如,HTTP/1.1的Web应用构成的应用程序与WebDAV可能会共享一些公用的部分,但又会有所不同。HTTP-NG结构允许多个应用共存于本层,共享底层特性,它还提供了一种添加新应用程序的机制。
Web应用层的基本思想是提供与HTTP/1.1等价的功能和一-些扩展接口,同时将其映射到一个可扩展的分布式对象框架中去。更多与Web应用层接口有关的内容可以参见http://www.w3.org/Protocols/HTTP-NG/1998/08/draft-larner-nginterfaces-00.txt。
网友评论