旧人梦 发表于 2017-3-6 21:17:32

转,wininet,winhttp,xmlhttprequest,ServerXmlHttpRequest区别

wininet,winhttp,xmlhttprequest,ServerXmlHttpRequest各版本区别




一、标准API接口WinINet(Microsoft Windows Internet)和WinHTTP(Microsoft Windows HTTP)实现Http访问,微软提供了二套API:WinINet, WinHTTP(分别封装于system32目录下的wininet.dll和winhttp.dll内)二者主要区别在于后者更为安全和稳定,可以说WinHTTP是WinINet的升级版

二、COM对象XMLHttpRequest和WinHttpRequest和ServerXMLHTTPRequestXMLHttpRequest是基于WinInet封装的,而WinHttpRequest和ServerXMLHTTPRequest则是基于WinHTTP封装的所以三者的稳定性属XMLHttpRequest为最差封装成COM形式主要是为了方便js vbs等脚本的调用,还具有易书写、降低开发难度等许多特点把

三、对象版本和封装位置1、XMLHttpRequest对象版本和对应的封装dll文件Microsoft.XMLHTTP 对应 msxml.dllMSXML2.XMLHTTP 对应 msxml2.dllMSXML2.XMLHTTP.3.0 对应 msxml3.dllMSXML2.XMLHTTP.4.0 对应 msxml4.dllMSXML2.XMLHTTP.5.0 对应 msxml5.dll(此版本是伴随office2007发布的,所以目录下可能找不到该版本的dll)MSXML2.XMLHTTP.6.0 对应 msxml6.dll如上各个dll的发布一般都是以补丁的形式发布,win7默认都集成了吧

2、ServerXMLHTTP对象版本和对应的封装dll文件Msxml2.ServerXMLHTTP 对应 msxml2.dll(win7自带,下同!)Msxml2.ServerXMLHTTP.3.0 对应 msxml3.dllMsxml2.ServerXMLHTTP.4.0 对应 msxml4.dllMsxml2.ServerXMLHTTP.5.0 对应 msxml5.dllMsxml2.ServerXMLHTTP.6.0 对应 msxml6.dll

3、WinHttpRequest对象WinHttp.WinHttpRequest.5.1 对应 Winhttp.dll(如上高版本的通常稳定性会好一点)

四、对象成员(属性、方法、事件等),主要优缺点XMLRequest成员参考缺点:和浏览器挂钩,大多情况下会共享cookies,session,不支持单独设置代理优点:和浏览器挂钩,大多情况下会共享cookies,sessionServerXMLHTTP成员参考缺点:系统没有对应dll的情况下程序需要外gua一个dll文件优点:脱离浏览器,使用代理方便WinHttpRequest成员参考缺点:暂无优点:脱离浏览器,使用代理方便


五、总结如果你对WinInet或Winhttp比较熟悉的话当然推荐直接使用标准接口,但同样要付出的代价就是书写更多的代码,记住更多的参数就个人开发经验而言还是推荐大家使用WinHttpRequest对象,微软封装的COM还是很优秀的,应该足以应付大多数要求了



另外微软给出了对比:
WinHTTP vs. WinINet


根据本人测试:Microsoft.XMLHTTPMSXML2.XMLHTTP这2个对象相比其他对象速度要快五分之四,这是非常离谱的,不知道为什么

anyuese 发表于 2017-12-5 19:57:56

写的很好............

o4qm 发表于 2017-12-15 17:28:33

学习了,谢谢

a524666979 发表于 2018-2-24 07:53:20

页: [1]
查看完整版本: 转,wininet,winhttp,xmlhttprequest,ServerXmlHttpRequest区别