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

17

就在我终于理解了Msxml2.XMLHTTP和Msxml2.ServerXMLHTTP之间的区别时,突然发现WinHttp.WinHttpRequest……

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

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

那么这与Msxml2.ServerXMLHTTP有何不同呢?

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

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

Microsoft Windows HTTP Services(WinHTTP)为开发人员提供了一个受服务器支持的高级接口,用于HTTP / 1.1 Internet协议。 WinHTTP主要设计用于服务器端场景,由与HTTP服务器通信的服务器应用程序使用。


2
如果是客户端使用 Msxml2.ServerXMLHTTP,那么在引用中,“ServerXMLHTTP是专为服务器应用程序设计的…” - cychoi
3个回答

12

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


2
同样,最近一个应用程序让我询问类似的问题,但是在进行了一些基础研究后,我简化了如下内容:
WinHTTP:高级接口,用于HTTP/1.1互联网协议
ServerXMLHTTP:建议用于服务器应用程序,而XMLHTTP则建议用于客户端应用程序
视你所做的事情以及你需要多少控制而定。
明确拒绝ServerXMLHTTP的元素经常会导致一些开发人员感到恼火,因为它需要更多的“工作”才能有效实现。对于明确允许的WinHTTP和XMLHTTP对象,帮助之手并不在ServerXMLHTTP中。
如果您的解决方案需要企业级升级、扩展,则可以选择适当的方案。

-6
我们在经典的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”是要使用的。


18
我觉得你的回答有些令人困惑。在第二段中,你说“WinHttpRequest很稳定,另一个不稳定”。但在第三段中,你又说,“根据我们的经验,应该使用'MSXML2.ServerXMLHTTP.6.0'”。这两段话相互矛盾。请问您希望使用哪个? - slolife

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接