搜索
查看: 7764|回复: 8

inet库中http与whttp的区别总结

[复制链接]

18

主题

108

帖子

625

积分

三级会员

Rank: 4

积分
625
发表于 2013-4-3 16:00:49 | 显示全部楼层 |阅读模式
本帖最后由 wish5115 于 2013-4-3 16:11 编辑

今天在论坛看到帖子http://bbs.aardio.com/thread-311-1-3.html http与whttp有何异同?
也在论坛搜了一下,发现问的人还不少,没找到非常好的答案,就自己找了点资料,大致总结了下,由于知识浅薄,仅供参考! 资料基本来自网络,加以汇总,如有雷同,纯属正常。另外,建议这些理论,看看了解就好了,没必要深究。

首先说下什么是http,在inet库中可以看到http的api多是调用的是Wininet.dll中的函数,可知这个就是微软的wininet了,然后又看到whttp调用的是winhttp.dll,可知就是微软的winhttp了。用这两个关键词到百度搜索,资料还不少。

以下是摘自网络,仅供参考!

WinHTTP与WinINet的区别

WinInet和WinHttp是windows平台下提供了两套独立的网络库,按照微软官方的说法, WinInet的优势在于client-端的应用,而WinHttp更适用于server-端编程。从名称上我们可以看出WinHttp在Http协议应用方面要比WinInet更加专业,WinInet支持的协议包括Gopher\HTTP\HTTPS\FTP较为杂乱,而WinHttp库专门是为HTTP\HTTPS服务的。

为实现Http访问,微软提供了二套API:WinINet, WinHTTP。WinHTTP比WinINet更加安全和健壮,可以这么认为WinHTTP是WinINet的升级版本。这两套API包含了很多相似的函数与宏定义,呵呵,详细对比请查阅msdn中的文章“Porting WinINet Applications to WinHTTP”,在线MSDN连接:http://msdn2.microsoft.com/en-us/library/aa384068.aspx。在这个例程中,通过一个宏的设置来决定是使用WinHttp还是WinINet。

WinHTTP被设计为主要应用在服务器端应用程序的场景下, 让服务器端应用程序访问HTTP服务器.
WinINet是一种更老的技术, 它被设计为一个HTTP客户端平台, 用于交互式桌面应用程序, 比如说IE, Office等.
服务器端应用程序要求HTTP客户端服务使用WinHTTP而不是WinINet.
WinHTTP提供了两种编程方式, 一种是C\C++的API, 另一种是COM组件.
WinHTTP和WinINet在微软是由不同的团队来提供支持的.

WinInet,Windows Internet扩展库,工作于应用协议层,提供了http,ftp,gopher协议的实现,为基于以上三种协议的程序开发提供基础平台,需要说明的是,尽管WinInet工作于应用层,但其本身wininet.dll的实现并不依赖于winsock.dll或ws2_32.dll,而是独立存在的。至少目前的版本是这样。基于WinInet的应用程序最著名的例子就是IE了。

WinHttp,也是工作于应用协议层,提供了http协议的实现。看起来与WinInet有重复的部分,没错,WinHttp就是为了替换WinInet中的http部分的,它更加健壮稳定,而且还为http服务器端开发提供了库函数。如果进行现代http的开发,建议使用WinHTTP而不是WinInet。使用WinHTTP进行开发的著名例子就是Google的浏览器Chrome,但是Chrome2.0以后版本google放弃了winhttp而是使用了自己开发的http库,这也是为了使chrome实现跨平台的重要举措。另外,WinHttp.dll也不依赖于winsock或ws2_32,也是独立运行的。

如果基于socket编程的话,Winows平台与其它平台函数基本相同,实现跨平台比较容易。
如果基于http进行编程的话,不同平台库差别很大,如果不考虑跨平台使用WinHttp,如果考虑跨平台可以考虑使用libwww。
另外,wsock和wininet或winhttp也可以同时使用。

图解区别:
aaaaaaaa.png

也可以参考微软官方文档:
http://msdn.microsoft.com/en-us/ ... 7%28v=VS.85%29.aspx
http://msdn2.microsoft.com/en-us/library/aa384068.aspx

还在网上找到一篇word文档,由于内容太多,添加附件如下:
WinINet与WinHttp总结.rar (55.62 KB, 下载次数: 68)
如果人人都献出一点爱,那么这aardio将变成最美的语言!
回复

使用道具 举报

9

主题

463

帖子

2556

积分

版主

Rank: 7Rank: 7Rank: 7

积分
2556
发表于 2013-4-3 16:25:22 | 显示全部楼层

inet.http(WinInet),inet.whttp(WinHTTP) 在aardio中的提供的函数接口基本一样,用法上没有什么区别。 inet.

inet.http(WinInet),inet.whttp(WinHTTP)
在aardio中的提供的函数接口基本一样,用法上没有什么区别。

inet.http支持持久化cookie,会话cookie进程共享。
inet.whttp不支持持久化cookie,会话cookie各对象隔离不共享(指一个进程内可以多线程多用户登录)
另外NT服务程序里只能使用inet.whttp

评分

参与人数 1银币 +10 收起 理由
wish5115 + 10 很给力!言简意赅,很到位!

查看全部评分

回复

使用道具 举报

18

主题

108

帖子

625

积分

三级会员

Rank: 4

积分
625
 楼主| 发表于 2013-4-3 16:27:29 | 显示全部楼层

[quote][size=2][color=#999999]roger 发表于 2013-4-3 16:25[/color] [url=forum.php?mo

roger 发表于 2013-4-3 16:25
inet.http(WinInet),inet.whttp(WinHTTP)
在aardio中的提供的函数接口基本一样,用法上没有什么区别  ...

嗯,说的有理,你这几句话总结的很到位,感觉比我那一大段都好!不过微软官方文档还是可以参考下,还是不错的!
如果人人都献出一点爱,那么这aardio将变成最美的语言!
回复

使用道具 举报

9

主题

79

帖子

1000

积分

荣誉会员

Rank: 8Rank: 8

积分
1000
发表于 2013-4-3 16:49:57 | 显示全部楼层

不错不错,wish5115解了我心中很久的疑惑

不错不错,wish5115解了我心中很久的疑惑
回复

使用道具 举报

18

主题

108

帖子

625

积分

三级会员

Rank: 4

积分
625
 楼主| 发表于 2013-4-3 17:12:28 | 显示全部楼层

[quote][size=2][color=#999999]sphawkcn 发表于 2013-4-3 16:49[/color] [url=forum.php

sphawkcn 发表于 2013-4-3 16:49
不错不错,wish5115解了我心中很久的疑惑

谢谢关注!大家共同努力,互相帮助,共同为aardio做贡献!
如果人人都献出一点爱,那么这aardio将变成最美的语言!
回复

使用道具 举报

0

主题

24

帖子

221

积分

二级会员

Rank: 3Rank: 3

积分
221
发表于 2013-5-4 09:09:14 | 显示全部楼层

感谢辛苦搜索

感谢辛苦搜索
回复

使用道具 举报

0

主题

2

帖子

28

积分

新手入门

Rank: 1

积分
28
发表于 2013-5-9 22:38:27 | 显示全部楼层

嗯,虽然很长,但讲得很详细,谢谢lz分享~

嗯,虽然很长,但讲得很详细,谢谢lz分享~
回复

使用道具 举报

0

主题

31

帖子

336

积分

培训班

积分
336
QQ
发表于 2014-8-11 20:39:33 | 显示全部楼层

收藏着。刚好也在看这个东东。

收藏着。刚好也在看这个东东。
回复

使用道具 举报

0

主题

22

帖子

123

积分

一级会员

Rank: 2

积分
123
发表于 2017-6-3 16:02:39 来自手机 | 显示全部楼层
正需要这方面的知识,好好学习下
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

手机版|未经许可严禁引用或转载本站文章|站长邮箱|aardio.com|aardio官方社区 ( 皖ICP备09012014号 )

GMT+8, 2017-11-25 13:21 , Processed in 0.078125 second(s), 22 queries , WinCache On.

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表