ServerXMLHTTP及XMLHTTP的差别

 一般在 client side 的 ajax 会用到这个 component (for IE) Microsoft.XMLHTTP, 若是在 server 端的 asp 程序代码使用这组 code, 来访问其他站台的内容时, 可以利用程序代码如下:

ASP/Visual Basic代码
  1. Set xmlhttp = Server.CreateObject("Microsoft.XMLHTTP")  
  2. xmlhttp.Open "GET""http://www.baidu.com/"False  
  3. xmlhttp.Send  
  4. Response.Write xmlhttp.ResponseTEXT  
  5. Set xmlhttp = Nothing  

不过这个有一些些问题, 因为 XMLHTTP 本身的工作行为是绑在 IE API 上, 当然是有好有坏, 根据微软的文件, 这组组件是适合用在客户端而非 server 端, 在使用上会有一些稳定及效能的问题, 不过更有趣的还有一个地方, 就是他会增进效能而在本机的文件系统上存入访问的内容, 路径如下:


C:\WINDOWS\Temp\Temporary Internet Files\Content.IE5

也就是说, 会占用掉部分的空间, 但实际观察又不全然是这种 cache 的状况, 因为相同的网页, 被重复 reload 时, 该 cache 用的目录居然也会成长, 也就是说, 原来设计为 cache 的功能, 也有可能用不到, 但用不到还没关系, 会一直占用空间成长(无上限), 这个就比较麻烦了.

之前笔者在追踪一个案例(c:碟占用空间持续成长的状况), 原来就是这个组件的毛病, 实际再测, 若是访问的网页是非 xml 时, 似乎就没有这种状况, 不过大多数的应用环境, 数据都会选 xml 的方式来传送, 所以仍会有这个问题存在.

为了解决这个问题, 还有另一组组件可供使用, MSXML2.ServerXMLHTTP, 这组组件提供了更稳定的方式来执行前述功能, 而且几乎完全兼容语法, 并提供了更多的功能, 也不会产生大量的cache 临时文件, 我们来看看微软官网上对此二者的比较:
http://support.microsoft.com/kb/290761
主要差异点如下:
XMLHTTP is designed for client applications and relies on URLMon, which is built upon Microsoft Win32 Internet (WinInet). ServerXMLHTTP is designed for server applications and relies on a new HTTP client stack, WinHTTP. ServerXMLHTTP offers reliability and security and is server-safe. For more information, see the MSXML Software Development Kit (SDK) documentation.

如此一来便可以很清楚地了解在 asp 程序内, 使用 XMLHTTP 及 ServerXMLHTTP 的差异了, 将上面的程序代码改为:

ASP/Visual Basic代码
  1. Set xmlhttp = Server.CreateObject("MSXML2.ServerXMLHTTP")  
  2. xmlhttp.Open "GET""http://diary.tw/tim/"False  
  3. xmlhttp.Send  
  4. Response.Write xmlhttp.ResponseTEXT  
  5. Set xmlhttp = Nothing  



上一篇: Asp正则验证是否有效的URL
下一篇: vb6 winhttp 用法操作
文章来自: 本站原创
引用通告: 查看所有引用 | 我要引用此文章
Tags: asp xmlhttp
相关日志:
评论: 0 | 引用: 0 | 查看次数: 2339
发表评论
昵 称:
密 码: 游客发言不需要密码.
邮 箱: 邮件地址支持Gravatar头像,邮箱地址不会公开.
网 址: 输入网址便于回访.
内 容:
验证码:
选 项:
虽然发表评论不用注册,但是为了保护您的发言权,建议您注册帐号.
字数限制 1000 字 | UBB代码 开启 | [img]标签 关闭

 广告位

↑返回顶部↑