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

时间:2009-07-22 04:19:24

标签: httpwebrequest winhttp xmlhttprequest serverxmlhttp winhttprequest

就在我终于理解了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

有什么不同

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

3 个答案:

答案 0 :(得分:11)

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

答案 1 :(得分:2)

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

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

ServerXMLHTTP :: ServerXMLHTTP建议用于服务器应用程序,建议XMLHTTP用于客户端应用程序

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

显然被拒绝的ServerXMLHTTP元素经常会引起一些开发人员的烦恼,因为它需要更多的“工作”才能有效实施。使用明确允许的WinHTTP和XMLHTTP对象的帮助与ServerXMLHTTP不一样。

如果您的解决方案需要企业扩展的元素,那么可能需要适当选择。

答案 2 :(得分:-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”是可以使用的。