用SOAP和ASP进行服务器端更新

ZDNet软件频道 时间:2003-04-16 作者:周靖 译 |  我要评论()
本文关键词:
使用XMLHTTP对象,客户端浏览器可请求在服务器上执行一个ASP,并等候服务器的响应以继续。由于原始客户端网页没有卸载,所以对客户来说,整个过程都是透明的,而且速度一般都非常快。
本文译自Builder.com客户端和服务器通信可采用一种自定义协议。然而,SOAP为此提供了一种灵活的、易于扩展的和简单的方案。使用XMLHTTP对象,客户端浏览器可请求在服务器上执行一个ASP,并等候服务器的响应以继续。由于原始客户端网页没有卸载,所以对客户来说,整个过程都是透明的,而且速度一般都非常快。

下面通过几个示范网页来探讨该技术。由于只有Microsoft Internet Explorer 5和更高的版本才支持XMLHTTP,所以本章的例子要想正常工作,你的客户端必须满足这一最低要求。

考虑到扩展性,我不希望用一个查询字符串来传递SOAP请求,因为这个字符串的长度限制在2048字节以内。相反,我希望在HTTP标头中传递请求,它不存在这方面的限制。清单A演示了如何使用客户端JavaScript,通过HTTP标头向服务器发送基本信息。

SOAP的问题

为了提供清单A的功能,要向服务器发出一个SOAP请求。这种请求由以下4部分组成:

  • 信封包含整个请求,并将包含的信息标识成一个SOAP请求。
  • 包Schema描述了构成SOAP包的信息。
  • 主体包含SOAP包。
  • 包内含有和服务器请求有关的实际信息。

由于SOAP文档也是一个XML文档,所以它具有和任何XML文档一样的限制。其中最重要的就是文档必须“良构”(Well-formed),这意味着两件事情。

首先,良构XML文档中的标记必须封闭。为演示这一点,最简单的办法就是观察HTML和XHTML的区别。在XML文档中,所有标记都是容器标记。虽然对于<span>等容器标记来说,这不会造成问题,但对于<hr>等非容器标记,却必须予以留意。

有两个办法将非容器标记变成容器标记。第一个和最明显的办法就是为每个标记(例如<hr>)添加一个结束标记(例如</hr>)。另一个办法是使用自封闭的XML标记;换言之,<hr></hr>可简写成<hr />。还要记住,XML文档要区分大小写。所以,<hr></hr>是良构的,但<HR></hr>不是。

良构XML文档的第二个要求是必须用单引号或双引号来封闭属性。所以,虽然<input type=text name=stuff />是完全有效的HTML,但却不是良构的XHTML,必须改成<input type='text' name='stuff' />

SOAP文档还具有其他大多数XML文档都没有一个限制,也就是必须用一个XML架构(XML Schema)来描述SOAP文档。架构是文档结构以及用XML编写的内容的一种抽象表示,宗旨是为XML解析器定义和描述文档的结构。


XML充电
如果对良构和XML架构的内容感到困惑,请参考“XML补习班”系列,尽快掌握XML知识。



百度大联盟认证黄金会员Copyright© 1997- CNET Networks 版权所有。 ZDNet 是CNET Networks公司注册服务商标。
中华人民共和国电信与信息服务业务经营许可证编号:京ICP证010391号 京ICP备09041801号-159
京公网安备:1101082134