Windows - Background Intelligent Transfer Service

A háttérben futó intelligens átviteli szolgáltatás a Windows XP platformon jelent meg először, és leveszi a fejlesztők válláról a fájl letöltés kezelésének terhét. Ez a rendszerszolgáltatás a háttérben futva optimálisan használva a hálózati kapacitást, letölti a megadott fájlokat a HTTP vagy HTTPS protokoll segítségével.
A Background Intelligent Transfer Service (BITS) szolgáltatás fájlok átvitelét aszinkron módon képes megvalósítani kliens és HTTP kiszolgáló között. A BITS képes folytatni az átvitelt azután is, hogy az alkalmazás futása véget ért, egészen addig, amíg a felhasználó - aki az átvitelt kezdeményezte - bejelentkezett állapotban van és a hálózati kapcsolat is él. A BITS nem kényszeríti a kapcsolatot arra, hogy élő maradjon.
Felhasználói és hálózati kapcsolatok
Az átvitel megáll, amikor a kapcsolat megszűnik, vagy ha a felhasználó kilép, de a szolgáltatás megtartja az átviteli információkat, amíg a felhasználó nincs jelen hálózat kapcsolat bontása, vagy gép újraindítása miatt. Amikor a felhasználó visszatér, a BITS folytatja az átviteli folyamatot.
Ahhoz, hogy a BITS érzékelje a felhasználó belépését, a következőt kell kezdeményeznünk:
  • Belépés az üdvözlő képernyőn keresztül.
  • Terminál Service kliensre történő belépés. A BITS nem támogatja a Windows 2000 terminál szolgáltatását, csak XP és Windows 2003 szerveren működik ez a fajta belépés.
  • Gyors felhasználóváltás alkalmazása.
A job-ok mindig az őket létrehozó felhasználó biztonsági környezetének megfelelően működnek. Rendszergazdák képesek a job-ok tulajdonjogát átvenni.
Várakozási lista és átviteli sebesség
A háttérben futó intelligens átviteli szolgáltatás egy várakozási listát (queue) használ az átvitelek kezelésére. Prioritásokat állíthatunk be a különféle le- és feltöltésekhez, valamint beállíthatjuk, hogy mely állományok átvitele történjen előtérben vagy a háttérben. A háttérátvitel optimális annyiban, hogy az alkalmazás felhasználja a szabad sávszélességet, és az átvitel sebességét a rendelkezésre álló sávszélesség szerint növeli, vagy csökkenti. Ha egy hálózati alkalmazás nagyobb sávszélességet használ, akkor a BITS csökkenti az átvitel sebességét, hogy a felhasználó számára megfelelő interaktivitást nyújtson a hálózati alkalmazás használatára.
Ha több hálózati csatolót használunk, például modemet, VPN-t, vagy több hálózati kártyát, akkor a BITS meghívja az IP Helper szolgáltatás GetBestInterface függvényét, hogy megállapítsa a legjobb útvonalat a megfelelő IP címhez. A BITS ezen a hálózati interfészen keresztül figyeli a hálózati sávszélesség foglaltságát.
Prioritások
A BITS egy előtérben és három háttérben alkalmazható prioritási szintet nyújt (FOREGROUND, HIGH, NORMAL, LOW). Magasabb prioritási job-ok felfüggesztik az alacsonyabbak futását. Azonos prioritásúak pedig megosztják az átvitel idejét egymás közt, ami meggátolja, hogy nagyobb job-ok blokkolják az átvitelt a kisebbek számára a várakozási listában. Alacsony prioritású folyamatok nem kapnak átviteli időt addig, amíg a magasabbak véget nem értek, vagy hibás státuszba nem kerülnek.
A munkafolyamatok életciklusa
Ha egy job-ot létrehozunk, akkor hozzá kell rendelnünk állományokat. Feltöltési munkafolyamat csak egy állományt tartalmazhat. Letölteni egyszerre több fájlt is tudunk. Meg kell adnunk a forrás fájl nevét (HTTP vagy HTTPS formulával), de a kliensen más nevet is használhatunk. Egy job miután létrejön, felfüggesztett státuszba áll, azaz nem kezdi meg az átvitelt. Nekünk kell aktiválnunk a job-ot külön, amit bármikor megtehetünk, és bármikor ismét felfüggesztett állapotba helyezhetjük. A job az átvitelt csak akkor kezdi meg, amikor az ütemező ezt számára lehetővé teszi. Ilyenkor a job connecting státuszba áll, azaz kapcsolódni próbál a távoli szerverhez. Ha a kapcsolódás sikeres, akkor a job transferring státuszt kap, és egész addig ebben a státuszban marad, amíg vagy véget nem ér az átvitel, vagy hiba nem történik, vagy le nem jár az időkerete, vagy egy alkalmazás fel nem függeszti a futását. Ha a job elég nagy, és más job-ok is vannak az átviteli listában, akkor ezek felfüggeszthetik annak futását. A job e között a három státusz között mozog (queued, connecting, transferring), amíg az összes állományának átvitele véget nem ér. Ha ez sikeresen megtörténik, akkor a job a transferred státuszba lép. Az állományok nem elérhetőek a kliensnek egészen addig, amíg az alkalmazás az IBackgroundCopyJob::Complete metódust meg nem hívja, hogy a fájlok tulajdonjogát átvegye a BITS-től.
Hiba esetén a job kétféle hibastátuszt kaphat. Az egyik a fatal, vagy végzetes hiba, a másik a transient, azaz átmeneti hiba. A végzetes hibákat a szolgáltatás nem tudja javítani, ezek külön beavatkozást igényelnek. Ha alkalmazásból javítani tudjuk a hibát, akkor ismét queued státuszba állítható a job. Átmeneti hibás job-okat a BITS megpróbálja újraindítani, amíg azok átvitele véget nem ér, vagy amíg időtúllépés nem történik. Időtúllépés esetén fatal error státuszba lép a job.
A BITS verziói
  • 1.0 az első BITS kiadás, ami a Windows XP számára jelent meg. Prioritásos, megállítható és aszinkron letöltések az előtérben és a háttérben egyaránt. A letöltések automatikusan folytatódnak újraindítás vagy hálózati kapcsolatszakadás után.
  • Az 1.2-es verzió, ugyanazokkal a funkciókkal Windows 2000 SP3 és Windows XP SP1 szervizcsomagokban jelent meg. Belső javításon, tökéletesítésen esett át.
  • Az 1.5-ös verzió a Windows 2003 kiszolgálócsalád számára készült, de a kiszolgálók megjelenése után a Windows 2000 és XP számára is készül majd kiadása. Tartalmazza a feltöltés és feltöltés újraindítás képességét, az események parancssori indításának lehetőségét.