Sdílet prostřednictvím


Osvědčené postupy při používání služby BITS

Tato část obsahuje informace, které byste měli zvážit při návrhu aplikace, která používá službu BITS.

Kontext uživatele nebo kontext služby

Služba BITS přenáší soubory pouze v případech, kdy je vlastník úlohy přihlášený k počítači (uživatel se musí přihlásit interaktivně). Služba BITS nepodporuje příkaz Spustit jako. Další podrobnosti najdete v tématu Uživatelé a síťová připojení.

Pokud pro vaši aplikaci nepotřebujete kontext uživatele, zvažte vytvoření služby spuštěné jako LocalSystem, LocalService nebo NetworkService. Tyto systémové účty jsou vždy přihlášeny, takže přenos není předmětem odhlášení uživatele. Pokud však při vytváření úlohy zosobníte uživatele, použijí se interaktivní pravidla přihlášení. Další podrobnosti najdete v Účty služeb a BITS.

Úlohy jsou trvalé

Úlohy zůstanou ve frontě, dokud nevoláte metodu IBackgroundCopyJob::Complete nebo metodu IBackgroundCopyJob::Cancel. Soubory v úloze nejsou uživateli k dispozici, dokud nezavoláte Dokončit. Obvykle voláte Dokončit, když je stav úlohy BG_JOB_STATE_TRANSFERREDa zavoláte Zrušit, když je úloha ve stavu BG_JOB_STATE_TRANSIENT_ERROR nebo BG_JOB_STATE_ERROR a už nemůže pokračovat.

Pokud nezavoláte metodu Complete nebo metodu Cancel do 90 dnů (výchozí hodnota pro JobInactivityTimeout v zásadách skupiny), služba úlohu zruší. Vždy byste měli volat metodu Complete nebo Cancel a neměli byste se spoléhat na zásadu JobInactivityTimeout k ukončení úloh. Pokud dojde k dosažení limitu zásad MaxJobsPerUser nebo MaxJobsPerMachine, mohou úlohy, které zůstaly ve frontě, bránit uživatelům v vytváření dalších úloh.

Kdy použít prioritu popředí nebo pozadí

Pokud není úloha kritická nebo uživatel aktivně čeká, měli byste vždy použít prioritu na pozadí. Existují však časy, kdy můžete chtít přepnout z priority na pozadí na prioritu popředí, například když proxy server nebo server nepodporuje hlavičku Rozsah obsahu nebo antivirový software v klientovi odebere požadavek na hlavičku rozsahu. Přepnutí na prioritu popředí funguje jenom pro soubory, jejichž velikost souboru je menší než 2 GB. Pro příklad viz implementaci metody IBackgroundCopyCallback::JobError. Také si všimněte, že pokud je aktivní úloha přerušena kvůli odpojení sítě nebo odhlášení uživatele, úloha selže, protože služba BITS odešle požadavek na rozsah, aby obnovila přenos z místa, kde skončil.

Počínaje systémem Windows 8 byste měli nakonfigurovat stahování úloh s BITS_JOB_PROPERTY_DYNAMIC_CONTENT a BG_JOB_PRIORITY_FOREGROUND při cílení na servery, které nesplňují požadavky HTTP pro stahování pomocí BITS. Mějte na paměti, že to způsobí, že BITS bude muset restartovat stahování od začátku, pokud se někdy přeruší (například kvůli problémům s připojením nebo restartování systému).

Informace o dostupných prioritách a o tom, jak služba BITS používá k plánování úloh úroveň priority, najdete v tématu BG_JOB_PRIORITY.

Přechodné a závažné chyby

Některé chyby se dají obnovit a některé ne. Například chyba Server není k dispozici je obnovitelná chyba a chyba Odepření přístupu je závažná chyba. Služba BITS umístí obnovitelné chyby do přechodného chybového stavu a pokusí se úlohu znovu po zadaném intervalu. Pokud úloha nemůže postupovat, služba BITS přesune úlohu do závažného chybového stavu. K řízení toho, jak BITS zpracovává přechodné chyby, použijte metody IBackgroundCopyJob::SetMinimumRetryDelay a IBackgroundCopyJob::SetNoProgressTimeout.

U úloh na popředí byste měli omezit dobu, po kterou necháte úlohu zůstat v přechodném chybovém stavu a pokusit se ji obnovit. Pomocí metody SetNoProgressTimeout omezte dobu, po kterou úloha zůstane v přechodném chybovém stavu, nebo přesuňte úlohu do závažného chybového stavu. Pokud umožníte pokus o obnovu úlohy, měli byste použít metodu SetMinimumRetryDelay a nastavit minimální zpoždění opakování na 60 sekund nebo zavolat metodu IBackgroundCopyJob::Resume a znovu aktivovat úlohu.

Další informace naleznete v tématu BG_JOB_STATE, Životní cyklus úlohy BITSa Zpracování chyb.

Měření využití šířky pásma sítě

Služba BITS může k odhadu dostupné šířky pásma sítě použít síťový adaptér klienta. Vzhledem k tomu, že služba BITS nemůže měřit šířku pásma za hranici klienta, může přetížit síť WAN. Pokud chcete snížit zahlcení propojení WAN, můžete použít zásady skupiny MaxInternetBandwidth k omezení šířky pásma, kterou klient používá. Další informace najdete v tématu Síťová šířka pásma a Zásady skupin.

Pokud píšete aplikaci, kterou mnoho klientů použije ke stahování souborů z daného serveru, měli byste zvážit schéma, které rozloží žádosti o stažení, abyste server nepřetěžovali požadavky.

Nastavení přihlašovacích údajů pro ověřování na proxy a serveru

Pokud očekáváte, že proxy server nebo server budou vyžadovat přihlašovací údaje uživatele, musíte přihlašovací údaje zadat službě BITS. Chcete-li zadat přihlašovací údaje, zavolejte metodu IBackgroundCopyJob2::SetCredentials. BITS podporuje schémata základního ověřování, Digest, Negotiate, NTLM a Passport.

Podrobnosti o ověřování najdete v tématu Ověřování.

Určení nastavení proxy serveru pro uživatelské účty a účty služeb

Služba BITS ve výchozím nastavení používá nastavení proxy aplikace Internet Explorer uživatele. Chcete-li přepsat nastavení proxy uživatele v aplikaci Internet Explorer, zavolejte metodu IBackgroundCopyJob::SetProxySettings.

Nastavení proxy serveru aplikace Internet Explorer se nevztahuje na systémové účty, takže výchozí chování proxy serveru (BG_JOB_PROXY_USAGE_PRECONFIG) bude fungovat správně pouze v nasazeních protokolu WPAD (Web Proxy Auto-Discovery Protocol), pokud nejsou provedena další kroky konfigurace. Pokud je aplikace služba spuštěná jako LocalSystem, LocalService nebo NetworkService, zvažte konfiguraci pomocného tokenu pro úlohy BITS nebo explicitním nastavením správných proxy nastavení voláním IBackgroundCopyJob::SetProxySettings s BG_JOB_PROXY_USAGE_OVERRIDE. Alternativně můžete použít přepínače /Util /SetIEProxy z BitsAdmin.exe k nastavení proxy serveru pro Internet Explorer pro systémový účet LocalSystem, LocalService nebo NetworkService. Podrobnosti naleznete v nástroji BitsAdmin.

Služba BITS nerozpozná nastavení proxy serveru, která jsou nastavená pomocí souboru Proxycfg.exe.

Od aktualizace Windows 10 z října 2018 (10.0; Build 17763) používá služba BITS stejné pořadí proxy, které WinHttp používá s AUTOMATIC_PROXY. Služba BITS používá toto kompatibilní řazení, pokud je zadán BG_JOB_PROXY_USAGE_PRECONFIG. BG_JOB_PROXY_USAGE_PRECONFIG je výchozí hodnota pro zadání proxy serveru HTTP.

Určení nastavení specifických pro uživatele pro ověřování proxy serverů

Pokud používáte službu BITS v prostředí, které vyžaduje ověření proxy serveru a běží na účtu bez použitelných pověření NTLM nebo Kerberos v síťové doméně počítače, musíte využít pověření jiného uživatelského účtu, který má platné pověření v doméně, pro správné ověření. Jedná se o typický scénář, kdy je váš kód BITS spuštěný jako systémová služba, jako je LocalService, NetworkService nebo LocalSystem, protože tyto účty nemají použitelné přihlašovací údaje NTLM nebo Kerberos.

Podrobnosti o fungování ověřování v tomto scénáři najdete v tématu Ověřování.

Škálovatelnost

Pokud je ve frontě více než 100 úloh, může se v závislosti na složení úlohy začít snižovat výkon. Služba BITS používá nastavení zásad MaxJobsPerMachine pro nastavení pevného limitu na počet úloh ve frontě. Aplikace by měly omezit počet svých úloh na přibližně 10, aby více aplikací mělo menší pravděpodobnost překročení limitu 100 úloh. Aplikace s velkým počtem úloh, které se mají odeslat, obvykle nejprve odešle 10 úloh a pak jednu po druhé při dokončení každé úlohy.

Počet souborů v úloze by měl být také omezen na maximálně 10 souborů. Pokud chcete přenést velký počet souborů pro úlohu, zvažte vytvoření souboru CAB, který obsahuje všechny soubory.

Hlavičky HTTP můžou být v libovolném případě

Standardy HTTP vždy říkaly, že hlavičky HTTP musí být považovány za malá a velká písmena nerozlišující (RFC 7230, oddíl 3.2). Nejnovější standard HTTP, RFC 7540, uvádí, že provoz HTTP/2 musí porovnat hlavičky bez rozlišení velkých a malých písmen a musí být hlavičky uvedeny malými písmeny (RFC 6540, část 8.1.2). I když se provoz odešle s hlavičkami bez malých písmen, proxy servery se můžou rozhodnout, že se hlavičky vynutí na malá písmena.

Jak se vyhnout identifikovatelným osobním údajům (PII)

Úlohy SLUŽBY BITS, včetně zobrazovaného názvu a popisu úlohy a názvů souborů, jsou viditelné všem uživatelům s oprávněními správce. Můžou se také přidat do telemetrie Windows. Měli byste se vyhnout vkládání citlivých dat (například vlastního jména uživatele) do podrobností o úloze.