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 上不能正常工作