Megosztás a következőn keresztül:


Ajánlott eljárások BITS használata esetén

Ez a szakasz olyan információkat tartalmaz, amelyeket érdemes figyelembe venni a BITS-t használó alkalmazások tervezésekor.

Felhasználói környezet vagy szolgáltatáskörnyezet

A BITS csak akkor továbbítja a fájlokat, ha a feladat tulajdonosa bejelentkezett a számítógépre (a felhasználónak interaktívan kell bejelentkeznie). A BITS nem támogatja a futtató parancsot. További információ: Felhasználók és hálózati kapcsolatok.

Ha nem igényel felhasználói környezetet az alkalmazáshoz, érdemes inkább localSystem, LocalService vagy NetworkService néven futó szolgáltatást írnia. Ezek a rendszerfiókok mindig be vannak jelentkezve, így az átvitelt nem kell kijelentkeztetnie egy felhasználónak. Ha azonban a feladat létrehozásakor megszemélyesít egy felhasználót, az interaktív bejelentkezési szabályok érvényesek. További információkért lásd a szolgáltatási fiókokat és a BITS-t.

A feladatok állandóak

A feladatok addig maradnak az üzenetsorban, amíg az IBackgroundCopyJob::Complete vagy IBackgroundCopyJob::Cancel metódust nem hívja meg. A feladat fájljai nem érhetők el a felhasználó számára, amíg meg nem hívja Teljes. Általában a feladat állapota BG_JOB_STATE_TRANSFERRED, ekkor hívja meg a Teljes funkciót; a Mégse funkciót pedig akkor hívja meg, ha a feladat BG_JOB_STATE_TRANSIENT_ERROR vagy BG_JOB_STATE_ERROR állapotban van, és már nem tud előrehaladni.

Ha 90 napon belül nem hívja meg a Complete eljárást vagy a Törlés eljárást (alapértelmezett JobInactivityTimeout csoportházirend), a szolgáltatás megszakítja a munkafolyamatot. Mindig hívja meg a Teljes vagy a Mégse metódust, és ne támaszkodjon a JobInactivityTimeout házirendre a feladatok törléséhez. Azok a feladatok, amelyek a várólistán maradnak, megakadályozhatják a felhasználókat abban, hogy más feladatokat hozzanak létre, ha elérjük a MaxJobsPerUser vagy MaxJobsPerMachine korlátozást.

Mikor érdemes előtér- vagy háttérprioritást használni?

Hacsak a feladat nem kritikus fontosságú, vagy a felhasználó aktívan várakozik, mindig használjon háttér prioritást. Előfordulhat azonban, hogy a háttérprioritásról az előtér-prioritásra szeretne váltani, például ha a proxy vagy a kiszolgáló nem támogatja a Content-Range fejlécet, vagy az ügyfél víruskereső szoftvere eltávolítja a tartományfejléc-kérést. Az előtérben lévő prioritásra való váltás csak azoknál a fájloknál működik, amelyek fájlmérete kisebb, mint 2 GB. Példaként tekintse meg az IBackgroundCopyCallback::JobError metódus implementálását. Azt is vegye figyelembe, hogy ha az előtérfeladatot hálózati kapcsolat megszakadása vagy a felhasználó kijelentkezése miatt szakítja meg, a feladat meghiúsul, mert a BITS egy tartománykérést küld, amely megpróbálja újraindítani az átvitelt onnan, ahonnan abbahagyta.

A Windows 8-tól kezdve a letöltési feladatokat BITS_JOB_PROPERTY_DYNAMIC_CONTENT és BG_JOB_PRIORITY_FOREGROUND kell konfigurálnia, ha olyan kiszolgálókat céloz meg, amelyek nem felelnek meg a BITS-letöltések HTTP-követelményeinek. Ne feledje, hogy ez azt eredményezi, hogy a BITS-nek az elejétől újra kell indítania a letöltést, ha bármikor megszakad (például csatlakozási problémák vagy rendszer újraindítása miatt).

Az elérhető prioritásokról és arról, hogy a BITS hogyan használja a prioritási szintet a feladatok ütemezéséhez, tekintse meg BG_JOB_PRIORITY.

Átmeneti és végzetes hibák

Néhány hiba helyreállítható, néhány pedig nem. A "Kiszolgáló nem érhető el" hiba például helyreállítható hiba, a "Hozzáférés megtagadva" hiba pedig végzetes hiba. A BITS átmeneti hibaállapotba helyezi a helyreállítható hibákat, és egy megadott időköz után újra megpróbálja a feladatot. Ha a feladat nem tud előrehaladást elérni, a BITS végzetes hibaállapotba helyezi át a feladatot. A IBackgroundCopyJob::SetMinimumRetryDelay és IBackgroundCopyJob::SetNoProgressTimeout metódusokkal szabályozhatja, hogy a BITS hogyan dolgozza fel az átmeneti hibákat.

Az előtérbeli feladatok esetében korlátoznia kell azt az időtartamot, amíg egy feladat átmeneti hibaállapotban marad, és megpróbál helyreállni. A SetNoProgressTimeout metódussal korlátozhatja, hogy egy feladat mennyi ideig marad átmeneti hibaállapotban, vagy kényszerítse a feladatot végzetes hibaállapotba. Ha engedélyezi a feladat helyreállítását, a SetMinimumRetryDelay metódussal állítsa be a minimális újrapróbálkozási késleltetést 60 másodpercre, vagy hívja meg az IBackgroundCopyJob::Resume metódust a feladat ismételt aktiválásához.

További információ: BG_JOB_STATE, BITS-feladat életciklusa, és Hibák kezelése.

Hálózati sávszélesség használatának mérése

A BITS az ügyfél hálózati adapterével becsülheti meg a rendelkezésre álló hálózati sávszélességet. Mivel a BITS nem képes az ügyfélen túli sávszélesség mérésére, előfordulhat, hogy a BITS túlterheli a WAN-kapcsolatot. A WAN-kapcsolat torlódásának csökkentése érdekében a MaxInternetBandwidth csoportházirenddel korlátozhatja az ügyfél által használt sávszélességet. További információ: hálózati sávszélesség és csoportházirendek.

Ha olyan alkalmazást ír, amelyet sok ügyfél használ fájlletöltésre egy adott kiszolgálóról, érdemes megfontolnia egy olyan sémát, amely a letöltési kérelmeket elavultja, hogy ne terhelje túl a kiszolgálót a kérésekkel.

Hitelesítő adatok beállítása proxy- és kiszolgálóhitelesítéshez

Ha arra számít, hogy a proxy vagy a kiszolgáló felhasználói hitelesítő adatokat igényel, meg kell adnia a hitelesítő adatokat a BITS-nek. A hitelesítő adatok megadásához hívja meg a IBackgroundCopyJob2::Hitelesítő adatok beállítása metódust. A BITS támogatja az alap-, a Digest-, a Negotiate-, az NTLM-, és a Passport hitelesítési sémákat.

A hitelesítés részleteiért lásd: Hitelesítési.

Proxybeállítások megadása felhasználói fiókokhoz és szolgáltatásfiókokhoz

Alapértelmezés szerint a BITS a felhasználó Internet Explorer proxybeállításait használja. A felhasználó Internet Explorer-proxybeállításainak felülbírálásához hívja meg a IBackgroundCopyJob::SetProxySettings metódust.

Az Internet Explorer proxybeállításai nem vonatkoznak a rendszerfiókokra, ezért az alapértelmezett proxy viselkedése (BG_JOB_PROXY_USAGE_PRECONFIG) csak a webproxy automatikus felderítési protokoll (WPAD) üzemelő példányaiban működik megfelelően, kivéve, ha további konfigurációs lépések vannak végrehajtva. Ha az alkalmazás LocalSystem, LocalService vagy NetworkService néven futó szolgáltatás, fontolja meg egy segítő jogkivonat konfigurálását a BITS-feladatokon, vagy explicit módon állítsa be a megfelelő proxybeállításokat IBackgroundCopyJob::SetProxySettings meghívásával BG_JOB_PROXY_USAGE_OVERRIDE. Másik lehetőségként használhatja a /Util /SetIEProxy BitsAdmin.exe kapcsolóját az Internet Explorer proxybeállításainak beállításához a LocalSystem, a LocalService vagy a NetworkService rendszerfiókhoz. További információ: BitsAdmin Tool.

A BITS nem ismeri fel a Proxycfg.exe fájl használatával beállított proxybeállításokat.

A Windows 10 2018. októberi frissítésétől kezdve (10.0; 17763-os build) a BITS ugyanazt a proxyrendet használja, amelyet a WinHttp a AUTOMATIC_PROXY használ. A BITS a következő kompatibilisebb rendezést használja, amikor a BG_JOB_PROXY_USAGE_PRECONFIG meg van adva. BG_JOB_PROXY_USAGE_PRECONFIG a HTTP-proxy megadásának alapértelmezett értéke.

A proxyk hitelesítésének felhasználóspecifikus beállításainak megadása

Ha olyan környezetben használ BITS-t, amely proxyhitelesítést igényel, miközben a számítógép hálózati tartományában nem használható NTLM- vagy Kerberos-hitelesítő adatokkal rendelkező fiókként fut, további lépéseket kell tennie a megfelelő hitelesítéshez egy másik, a tartományban hitelesítő adatokkal rendelkező felhasználói fiók hitelesítő adataival. Ez egy tipikus eset, amikor a BITS-kód rendszerszolgáltatásként fut( például LocalService, NetworkService vagy LocalSystem), mivel ezek a fiókok nem rendelkeznek használható NTLM- vagy Kerberos-hitelesítő adatokkal.

A hitelesítés működésével kapcsolatos részletekért lásd hitelesítést.

Méretezhetőség

Ha több mint 100 feladat szerepel az üzenetsorban, a teljesítmény a feladat összetételétől függően csökkenhet. A BITS a MaxJobsPerMachine házirend-beállítással korlátozza a várólistán lévő feladatok számát. Az alkalmazásoknak körülbelül 10-re kell korlátozniuk a munkájuk számát, hogy több alkalmazásnak kevesebb esélye legyen a 100 feladatra vonatkozó iránymutatás túllépésének. Általában egy nagy számú beküldendő feladattal rendelkező alkalmazás először 10 feladatot küld el, majd egyenként küldi el az egyes feladatok befejezésekor.

A feladatban lévő fájlok számát is legfeljebb 10 fájlra kell korlátozni. Ha nagy számú fájlt szeretne átvinni egy feladathoz, érdemes lehet létrehozni egy CAB-fájlt, amely az összes fájlt tartalmazza.

A HTTP-fejlécek minden esetben lehetnek

A HTTP-szabványok mindig azt állították, hogy a HTTP-fejléceket kis- és nagybetűkre érzéketlenként kell kezelni (RFC 7230 3.2. szakasz). A legújabb HTTP-szabvány, az RFC 7540 továbblép, és azt mondja, hogy a HTTP/2 forgalomnak kis- és nagybetű érzékenység nélkül kell összehasonlítania a fejléceket, és kisbetűkkel kell megjeleníteni a fejléceket (RFC 6540, 8.1.2. szakasz). Még akkor is, ha a forgalom nem kisbetűs fejlécekkel érkezik, a proxyk dönthetnek úgy, hogy kisbetűsre kényszerítik a fejléceket.

Személyazonosításra alkalmas adatok (PII) elkerülése

A BITS-feladatok, beleértve a feladat megjelenítendő nevét, leírását és fájlneveit, minden rendszergazdai jogosultsággal rendelkező felhasználó számára láthatók. A windowsos telemetriához is hozzáadhatók. Ne helyezzen bizalmas adatokat (például a felhasználó saját nevét) a feladat részleteibe.