WinINet vs. WinHTTP

S několika výjimkami je WinINet nadmnožinou WinHTTP. Při volbě mezi těmito dvěma možnostmi byste měli použít WinINet , ledaže plánujete běh v rámci služby nebo procesu podobného službě, který vyžaduje zosobnění a izolaci relace.

Porovnání funkcí

Funkce WinINet WinHTTP
Mezipaměť přihlašovacích údajů. Umožňuje automaticky získat přihlašovací údaje pro všechny integrované aplikace v aplikaci Windows Internet Explorer. Umožňuje také aplikaci spuštěnou mimo Internet Explorer zobrazit výzvu nebo zadat přihlašovací údaje pro server pouze jednou. Od tého dne jsou požadavky automatické. Ano Ne
Výzva k zadání přihlašovacích údajů. Poskytuje rozhraní API, které volajícímu kódu umožňuje vyzvat uživatele k zadání přihlašovacích údajů. Ano Ne
ftp Ano Ne
podpora autodial/RAS . Toto je starší verze funkcí. Místo toho použijte vzdálený přístup. Ano Ne
zón. Automatická integrace se zónami zabezpečení Internet Exploreru Ano Ne
podpora IDNA. Integrovaná podpora IDNA RFC/Punycode. Ano Ano
cookie jar api. Podporují se trvalé a netrvalé soubory cookie. Jakákoli aplikace nebo skript to může použít k tomu, aby viděl stejné soubory cookie jako prohlížeč. Ano Ne
podpora chráněného režimu IE Ano Ne
Podpora dekomprese. Podpora kompresních metod gzip a deflate. Ano Ano
Podpora nahrávání po částech. Klientský kód musí provést rozdělení na bloky. Ne Ano
Podpora SOCKS4 (SOCKS verze 4). Nezahrnuje v4a. Ano Ne
Podpora SOCKS5 (SOCKS verze 5) Ne Ne
obousměrné odesílání a přijímání Ne Ne
překrývané vstupně-výstupní operace Ne Ne
Podpora schématu souborů. Užitečné pro proxy skripty se schématem souborů. Ano Ne
InternetOpenUrl. Zjednodušený kód pro otevření adresy URL Ano Ne
Podpora služeb. Lze spouštět ze služby nebo pod účtem služby. Ne Ano
Izolace relací. Samostatné relace nemají vliv na sebe navzájem. Ne Ano
zosobnění. Podporuje volání, když vlákno zosobňuje jiného uživatele. Ne Ano

Průvodce rychlým rozhodováním

Pomocí tohoto vývojového diagramu vyberte správný zásobník klienta HTTP:

  1. Je váš kód spuštěn ve službě systému Windows, systémovém procesu nebo pod impersonací?
    • Ano → použít WinHTTP.
  2. Je váš kód desktopovou aplikací, která potřebuje nastavení proxy serveru Internet Options (IE) uživatele, soubory cookie nebo výzvy k přihlašovacím údajům?
    • Ano → použít WinINet.
  3. Píšete moderní desktopovou aplikaci C++ nebo UPW/WinUI?
  4. Píšete .NET aplikaci?
    • Ano → použít System.Net.Http.HttpClient.
  5. Potřebujete kompatibilitu mezi platformami?
    • Ano → Použít knihovnu libcurl nebo podobnou přenosnou knihovnu.

Note

Kdy použít ani WinINet ani WinHTTP – Pokud vytváříte novou aplikaci a nevyžadujete starší integraci Win32, upřednostněte moderní alternativy uvedené výše. Nabízejí jednodušší rozhraní API a lepší podporu asynchronní synchronizace. Některé alternativy také nabízejí další výhody: libcurl a .NET HttpClient jsou multiplatformní; Dostupnost protokolu TLS 1.3 závisí na podkladovém zásobníku PROTOKOLU TLS a konfiguraci operačního systému. Vyhraďte si WinHTTP/WinINet pro scénáře, které konkrétně vyžadují podporu služby Win32, sdílení přihlašovacích údajů prohlížeče nebo hlubokou integraci proxy serveru.

Important

Připomenutí zabezpečení – Bez ohledu na to, který zásobník HTTP zvolíte, nikdy nezakažte ověření certifikátu TLS v produkčním prostředí. WinHTTP i WinINet umožňují ignorovat chyby certifikátů prostřednictvím příznaků, ale zpřístupňuje aplikaci útokům typu man-in-the-middle.