WinINet 与 WinHTTP简介
来源:互联网 发布:seo网站排名优化工具 编辑:程序博客网 时间:2024/04/29 22:33
之前一直有听到WinHTTP和WinINet这两种网络服务,是Microsoft提供的两套API,但一直没有系统的用过,趁次机会一起来将这个整理一下。
首先了解一下WinINet:
WinInet,全称The Microsoft Windows Internet ,应用程序可以通过它提供的API访问标准的网络协议,比如FTP和HTTP等。WinINet不支持服务端的实现。另外,它也不能在服务端进行调用。WinINet是被设计成一个HTTP客户端平台来为桌面应用提供相应的接口。它为收集用户证书等操作扮演着一个用户接口的角色。
Microsoft的这篇文档做了一个简要的介绍Windows Internet
再来了解一下WinHTTP:
WinHTTP(全称Microsoft Windows HTTP Services )为开发者提供了服务器的支持及为HTTP/1.1提供了更高层次的接口。WinHTTP的设计优先考虑的是,在服务器应用与HTTP服务器的通信这类基于场景中。
WinHTTP也可以用于系统服务以及基于HTTP的客户端应用,但是对于那种需要使用到FTP协议,cookie保存,缓存cache,自动证书对话框处理,IE兼容,或者下载平台支持的应用则应该使用WinINet。
另外,从windows8开始,WinHTTP为WebSocket协议增加了新的接口实现,比如WinHttpWebSocketSend 和 WinHttpWebSocketReceive这类。
更多的了解可以看官方的这篇文章,About WinHTTP
除了一些异常情况外,WinINet是WinHTTP的一个超集。按照Microsoft的说法,在这两者之间做选择的时候最好选择WinINet,除非你是计划运行一个服务器或者是一个能够仿造请求及session隔离的类似于服务器的进程。
上面列出来的是Microsoft官方提供的相关文档整理出来的资料,下面再列出一些chromium团队整理的一些区别。chromium团队在最初做选择的时候就考虑了这些东西。我们也换个角度,从chromium做浏览器的角度来考虑一下这个问题。插句题外话,chromium没有用WinINet,开始的版本用的是WinHTTP加上一些自己的功能补充,后来的版本直接就切到了它们自己的网络库。具体描述可以看看Multi-process Resource Loading这篇文章。
1、都能处理他们计划支持的windows平台(Win2K及后续系统)。
2、WinHTTP文档更加完善。而WinINet的API较难理解且文档有些混乱。
3、chromium需要的API接口 WinHTTP有更清晰的描述,而WinInet中chromium需要的一些函数它们却没有文档或者不支持,尽管IE用了它们。
4、WinHTTP允许自己实现自己的cache,而WinInet经常会与IE分享一个cache。Chromium想要自己控制自己的cache数据,同时,与IE分享cache会引起一些问题,比如说当某些站点有一些为特定浏览器服务的页面。
5、WinInet在使用账户上已经被IE证明是更好的,WinHTTP使用起来没有这么好,它主要是为服务器设计的。它在处理由服务器发送并保持活动的没有进行ASCII编码的URL时存在问题。chromium不得不为这些问题提供不一样的工作方式。
2、WinHTTP文档更加完善。而WinINet的API较难理解且文档有些混乱。
3、chromium需要的API接口 WinHTTP有更清晰的描述,而WinInet中chromium需要的一些函数它们却没有文档或者不支持,尽管IE用了它们。
4、WinHTTP允许自己实现自己的cache,而WinInet经常会与IE分享一个cache。Chromium想要自己控制自己的cache数据,同时,与IE分享cache会引起一些问题,比如说当某些站点有一些为特定浏览器服务的页面。
5、WinInet在使用账户上已经被IE证明是更好的,WinHTTP使用起来没有这么好,它主要是为服务器设计的。它在处理由服务器发送并保持活动的没有进行ASCII编码的URL时存在问题。chromium不得不为这些问题提供不一样的工作方式。
这两者的具体区别可以深入的看看看WinINet vs. WinHTTP这篇文章。
通过这些了解,当你要用Microsoft提供的API做网络数据请求时,你应该有所了解,知道该用WinINet还是WinHTTP了,如果是要进行从WinINet到WinHTTP的转换则可以看看Porting WinINet Applications to WinHTTP这篇文章。
- WinINet 与 WinHTTP简介
- WinInet 与 winHTTP 共同引用 冲突
- [转]使用WinINet和WinHTTP
- winsock,ws2_32,WinInet,WinHttp对比
- winsock,ws2_32,WinInet,WinHttp对比
- wininet,winhttp,xmlhttprequest,ServerXmlHttpRequest区别
- wininet、winhttp、winsock的区别
- 使用WinInet方式访问网页与使用WinHttp对象方式访问有什么不同
- 使用WinINet和WinHTTP实现Http访问
- 使用WinINet和WinHTTP实现Http访问
- 使用WinINet和WinHTTP实现Http访问
- WinInet, WinHttp, Winsock, ws2_32的基本解释
- 用WinINet和WinHTTP访问网站
- 使用WinINet和WinHTTP实现Http访问
- 使用WinINet和WinHTTP实现Http访问
- 使用WinINet和WinHTTP实现Http访问
- 使用WinINet和WinHTTP实现Http访问
- 使用WinINet和WinHTTP实现HTTP访问
- “硬币方案”--蓝桥杯
- hdu 3306 矩阵解决线性递推
- ubuntu 安装配置mysql
- TCP/IP总结1:阻塞socket和非阻塞socket
- 64位linux配置nasm程序调试
- WinINet 与 WinHTTP简介
- String,StringBuffer,StringBuilder区别与效率
- DMA的控制方式
- 我对相对布局的初级应用
- eclipse 找不到或无法加载主类
- 最长公共上升子序列(LCIS)学习小记 Hdu 1423 + Poj 2127 (LCIS路径输出)
- 如何计算结构体大小和结构体中成员的内存偏移
- C#写的光模块烧写软件
- 第八周上机任务项目3-分数类中运算符重载