Msxml2.ServerXMLHTTP 和 WinHttp.WinHttpRequest 之间的区别?

Posted

技术标签:

【中文标题】Msxml2.ServerXMLHTTP 和 WinHttp.WinHttpRequest 之间的区别?【英文标题】:differences between Msxml2.ServerXMLHTTP and WinHttp.WinHttpRequest? 【发布时间】:2010-11-12 21:05:37 【问题描述】:

就在我终于明白 Msxml2.XMLHTTP 和 Msxml2.ServerXMLHTTP 的区别时

http://support.microsoft.com/kb/290761

XMLHTTP 是为客户端应用程序设计的,它依赖于基于 Microsoft Win32 Internet (WinInet) 构建的 URLMon。 ServerXMLHTTP 是为服务器应用程序设计的,它依赖于新的 HTTP 客户端堆栈 WinHTTP。 ServerXMLHTTP 提供可靠性和安全性,并且是服务器安全的。有关详细信息,请参阅 MSXML 软件开发工具包 (SDK) 文档。

突然发现 WinHttp.WinHttpRequest...

http://msdn.microsoft.com/en-us/library/aa382925(VS.85).aspx

Microsoft Windows HTTP 服务 (WinHTTP) 为开发人员提供服务器支持的 HTTP/1.1 Internet 协议高级接口。 WinHTTP 旨在主要由与 HTTP 服务器通信的服务器应用程序在基于服务器的方案中使用。

那么,这与 Msxml2.ServerXMLHTTP 有何不同

(嗯,隐含的问题是我应该使用哪一个...)

【问题讨论】:

如果客户端使用 Msxml2.ServerXMLHTTP?在引用中:ServerXMLHTTP 是为服务器应用程序设计的...... 【参考方案1】:

Msxml2.XMLHTTP 和 Msxml2.ServerXMLHTTP 是两个组件,它们共享相似的接口,用于通过 HTTP 协议获取 XML 文件。前者建立在 URLMon 之上,后者依赖于 WinINet。后者基于 WinHTTP,它是 WinINet 的服务器友好替代品。简单来说——ServerXMLHTTP = XML + WinHTTP。

【讨论】:

【参考方案2】:

我们在经典的 ASP Web 应用程序中使用了这两个组件。每分钟都会调用很多次,从服务器到服务器 asp 服务器端页面调用另一个 asp 或 aspx 服务器端页面。

Server.CreateObject("WinHttp.WinHttpRequest.5.1")
Server.CreateObject("MSXML2.ServerXMLHTTP.6.0")

我们的经验是WinHttpRequest是稳定的,其他的不是。 我们不得不将我们所有的 createobject 删除到 serverxmlhttp 并用 winhttprequest 替换它们,因为一段时间后,它占用了大量内存,冻结,或者 iis 应用程序池没有响应或变得很慢。

我不知道每个组件的详细规格,但我可以向您保证,根据我们的经验,“MSXML2.ServerXMLHTTP.6.0”是可以使用的。

【讨论】:

对我来说,您的回答令人困惑。在第二段中,您说“WinHttpRequest 是稳定的,而另一个则不是”。在第三段中,您说“根据我们的经验,'MSXML2.ServerXMLHTTP.6.0' 是可以使用的”。这两段相互矛盾。【参考方案3】:

类似地,最近的一个应用程序发现我提出了类似的问题,但是在进行了一些初步研究后,我将其简化如下:

WinHTTP :: HTTP/1.1 Internet 协议的高级接口

ServerXMLHTTP :: ServerXMLHTTP 推荐用于服务器应用程序,XMLHTTP 推荐用于客户端应用程序

取决于你在做什么以及你需要多少控制。

ServerXMLHTTP 的明确拒绝元素通常会引起一些开发人员的烦恼,因为它需要更多的“工作”才能有效地实现。 ServerXMLHTTP 没有明确允许的 WinHTTP 和 XMLHTTP 对象的帮助。

If your solution requires elements of Enterprise up-scaling, out-scaling then perhaps choose appropriately.

【讨论】:

以上是关于Msxml2.ServerXMLHTTP 和 WinHttp.WinHttpRequest 之间的区别?的主要内容,如果未能解决你的问题,请参考以下文章

CreateObject("Msxml2.ServerXMLHTTP.6.0") 在 windows 2003 上不能正常工作

如何用MSXML2.ServerXMLHTTP发送POST数据

vbs http

VBA如何捕获请求超时错误?

为啥cookie是空的

从 VBA 到 PHP 的 POST 参数