Служба узла фоновая интеллектуальная что это
BITS что это за служба в Windows?
BITS — интеллектуальная служба передачи данных между клиентом и HTTP-сервером. При этом при передачи используется интернет, который не используется. Как это? Например у вас интернет-пакет со скоростью 10 мегабит, а вы просто сидите в социальной сети, которая ну никак не может для отправки сообщений использовать все 10 мегабит. И вот то, что не используется — то может взять себе служба BITS для передачи данных) вот как-то так все и работает)
Но где эта служба применяется? Самое главное применение — загрузка обновлений с серверов Microsoft. Обновления могут быть большие и вот чтобы загрузка их не мешала пользователю в плане скорости — то и нужна служба BITS. Вот поэтому то он и интеллектуальная — качает с такой скоростью, чтобы вам не мешать сидеть на сайтах, или например играть в онлайн игру..)
Как я понимаю, основная фишка службы BITS — фоновая загрузка данных, при которой используется не вся скорость интерната, а только неиспользуемая.
Кроме обновлений служба также используется и в антивирусе Microsoft Security Essentials (Windows Defender).
Как я понимаю, эту службу могут использовать и другие программы. Они могут загружать файлы из интернета при помощи этой службы. Для этого программа создает задание, в котором указаны файлы, и потом это задание идет или в очередь или сразу выполняется. В общем это уже больше для разработчиков, вряд ли вам интересно)
Нужно ли отключать службу BITS? Судя по тому где она используется — нет, отключать не стоит, иначе могут быть проблемы со встроенным антивирусом или с обновлениями. Но если вы ни первым ни другим не пользуетесь — то получается отключить можно. Но опять же, а если еще какая-то программа использует эту службу? Нельзя ведь точно знать какие проги используют, а какие нет. Поэтому.. нет, лучше все таки ее не отключать. Тем более что вряд ли она может грузить ПК — разве что совсем немного и только когда идет передача данных.
Чтобы отключить службу или посмотреть, включена она или нет, то нужно открыть окошко свойств — там есть вся необходимая информация. Как это сделать? А вот как — зажимаете Win + R, вставляете эту команду:
Нажимаете ОК и потом в списке служб находите Фоновая интеллектуальная, нажимаете два раза и будет окошко свойств. Там все будет сказано. Чтобы отключить — в Тип запуска выбираете Отключена и нажимаете кнопку Остановить. Но отключать в итоге все таки думаю что не стоит.
Как и многие системные службы, BITS работает под процессом svchost.exe, тут ничего удивительного нет.
Проверка состояния службы BITS
BITS Administration Utility (bitsadmin.exe)
BITS Administration Utility — инструмент управления службой BITS. Возможно что инструмент из себя представляет команду, так как имеет параметры для запуска из командной строки:
Да, bitsadmin.exe — это команда:
Я точно не знаю — но если интересно, то можете попробовать ввести в командную строку:
И в результате может отобразиться справка по этой команде.
Вирус может использовать BITS
Но я нашел еще кое-что интересное. Впрочем ничего странного нет.. в общем вирусы тоже могут использовать службу BITS. На одном сайте читаю, что некий троян в 2016 году использовал функционал службы для загрузки вирусов на ПК. Ну тут просто без комментариев, я то думал что там в Microsoft это учли и сделали так, что загрузка могла бы быть только с безопасных источников. Но как видим — нет.
Сегодня тот вирус уже вряд ли опасен — информация за 2016 год, а сейчас конец 2018, и скорее всего вирус уже внесен в антивирусные базы.
Нашел даже более точную информацию — вирус назывался Zlob.Q и он использовал BITS для связи с командным центром (C&C). И как обнаружили этот вирус? Все очень просто — была подозрительная активность службы BITS, ну и начали копать, и в итоге докопались.
Возможно у вас тоже есть подозрительная активность? В любом случае, при малейшем подозрении — проверьте ПК на вирусы. Чем? Я перечислю две основные утилиты, которыми стоит проверять регулярно ПК:
Вот этими двумя утилитами я оч советую проверить ПК при малейшем подозрении на вирус. На этом все — удачи, надеюсь информация помогла.
Background Intelligent Transfer Service
Вы все еще не знаете, как лучше организовать передачу файлов по сети на компьютеры под управлением Windows? Тогда вам сюда!
Background Intelligent Transfer Service (BITS) – служба ОС Windows, которая может передавать файлы в фоновом режиме. Она используется, в основном, для Windows Update.
Какой же интерес BITS представляет для разработчиков?
1. Возможность закачки файлов в фоновом режиме, незаметно для пользователя
2. Высокий уровень отказоустойчивости. Если сетевой кабель перерубят, или комп выпадет в «синий экран», то BITS докачает файлы, как только это станет возможно.
3. Intelligent сказано не зря. Если пользователь в данный момент ничего не качает и комп простаивает, BITS воспользуется освободившимися ресурсами. Эту фичу можно использовать, назначая различные приоритеты закачек.
Работать с BITS можно через специальный API
Ключевым объектом BITS является Job (не надо дословного перевода, назовем это «закачкой»).
Жизненный цикл «закачки» следующий:
1. Создание Job. Указываем название, описание, тип (Upload\Download) и приоритет
2. Добавление файлов. Job может содержать несколько файлов, если выбран тип Download.
3. Подписываемся на события закачки, если необходимо отслеживать прогресс в реальном времени.
4. Запуск закачки. Далее BITS все делает сам.
Важной особенностью BITS является то, что создать закачку может только пользователь, совершивший вход в систему, либо системная учетная запись. Тем, кто собирается использовать BITS, советую не забывать об этом.
Я сознательно не привожу примеров кода, они есть здесь и здесь.
Для дополнительного ознакомления есть замечательная статья на английском.
Как исправить проблемы фоновой интеллектуальной службы передачи (BITS) в Windows 10
В Windows 10 фоновая интеллектуальная служба передачи (BITS) является важным компонентом, отвечающим за помощь системе и приложениям во время основной или фоновой загрузки и выгрузки между устройством и удаленным сервером, не влияя на работу сети. Это достигается за счет интеллектуальной обработки приоритетов и регулирования, а также автоматической приостановки и возобновления передачи данных.
Хотя это интеллектуальная функция, иногда служба внезапно перестает работать, что препятствует правильной работе Центра обновления Windows, Магазина Microsoft и других служб.
Если в вашей установке Windows 10 возникли проблемы с этим компонентом, вы можете использовать средство устранения неполадок фоновой интеллектуальной службы передачи, автономный установщик Центра обновления Windows (WUSA) и инструменты командной строки, такие как средство проверки системных файлов (SFC) и обслуживание образа развертывания и управление им ( DISM) для решения наиболее распространенных проблем.
В этом руководстве по Windows 10 мы расскажем вам о трех способах устранения неполадок и устранения распространенных проблем, когда BITS работает неправильно.
Как исправить проблемы с битами с помощью устранения неполадок
Чтобы исправить типичные проблемы с BITS в Windows 10, выполните следующие действия:
Просмотрите подробности обнаружения.
После выполнения этих действий средство устранения неполадок будет сканировать, обнаруживать и исправлять любые проблемы (включая перезапуск службы при необходимости), которые могут мешать правильной работе BITS.
Как исправить проблемы с битами, используя SFC и DISM
Если у вас по-прежнему возникают проблемы из-за проблем с установкой Windows 10, вы можете использовать инструмент командной строки SFC и DISM, чтобы попытаться устранить проблему с помощью BITS.
Чтобы использовать DISM и SFC для устранения проблем с битами, выполните следующие действия:
Введите следующую команду, чтобы просканировать и исправить любые повреждения системных файлов, и нажмите Enter :
dism /Online /Cleanup-Image /RestoreHealth
Введите следующую команду для запуска инструмента и нажмите Enter :
После того, как вы выполните эти шаги, DISM будет сканировать и восстанавливать системные файлы, а инструмент SFC будет сканировать и пытаться решить общие проблемы с вашей установкой Windows 10, что также может помочь исправить менеджер загрузки системы.
Как исправить проблемы BITS с помощью последнего обновления
Если ни одна из вышеперечисленных рекомендаций не помогла исправить BITS, это может быть проблема с Windows 10, которую можно исправить, установив последнее качественное обновление с веб-сайта каталога Центра обновления Майкрософт вручную.
Чтобы установить последнее обновление, выполните следующие действия.
Определить последнее обновление
Определить тип системы
Чтобы узнать, требуется ли вашему устройству 32-разрядная или 64-разрядная версия обновления, выполните следующие действия.
Подтвердите, нужны ли вам 32-разрядные или 64-разрядные обновления.
Загрузка последнего обновления
Чтобы загрузить обновление Windows вручную, выполните следующие действия.
Нажмите кнопку « Загрузить» для получения 64-разрядной или 32-разрядной версии обновления.
Установка обновления вручную
Введите следующую команду для запуска инструмента и нажмите Enter :
wusa C:\FOLDER-PATH\UPDATE-NAME.msu /quiet /norestart
В команде обязательно обновите путь и имя обновления, чтобы успешно выполнить команду.
После выполнения этих шагов перезагрузите компьютер, и служба менеджера загрузки системы должна снова начать работать.
Это руководство ориентировано на Windows 10, но вы также можете обратиться к этим шагам, чтобы исправить проблемы с фоновой интеллектуальной службой передачи в Windows 8.1 и Windows 7.
Больше ресурсов по Windows 10
Для получения более полезных статей, обзоров и ответов на распространенные вопросы о Windows 10 посетите следующие ресурсы:
Мауро рекомендует все эти доступные аксессуары
Привет, я Мауро Хуулак, помощник Windows Central и практический гуру. Я написал пост, который вы сейчас читаете, и я знаю ОС Windows от и до. Но я также немного фанат аппаратных средств. Вот некоторые из доступных гаджетов на моем столе сегодня.
Logitech MX Master Wireless Mouse ($ 72 в магазине Amazon)
Я знаю мышей, и этим я пользуюсь каждый день. MX Master — это беспроводная высокоточная мышь, которая очень удобна в использовании и имеет множество замечательных функций, в том числе возможность подключения к нескольким устройствам, бесконечное колесо прокрутки, кнопки «назад» и «вперед», которые вы можете настраивать.
Расширенный игровой коврик для мыши Ktrio (12 долларов на Amazon)
Если вы будете печатать много времени, ваши ладони и мышь оставят следы на вашем столе. Мое решение состояло в том, чтобы начать использовать игровые коврики для мыши, которые достаточно велики, чтобы вы могли комфортно пользоваться клавиатурой и мышью. Это тот, который я использую и рекомендую.
Супер ночь светодиодная лента (20 долларов на Amazon)
Вы можете просто использовать обычную лампочку в своем офисе, но если вы хотите добавить немного окружающего освещения с разными цветами, лучше использовать светодиодную ленту RGB. Этот одобрен Mauro.
Мы можем заработать комиссию за покупки, используя наши ссылки. Узнайте больше
Фоновая интеллектуальная служба передачи bits как отключить
Советы и факты / Как запретить Windows 10 шпионить
Сначала обновляемся до версии 1607 (кто не обновился) где появилось несколько полезных возможностей и в частности возможность привязки активированной лицензии Windows к вашей учетной записи Microsoft.
После этого при входе в систему нужно будет вводить пароль от вашей учетной записи Microsoft. Если вы привыкли входить без пароля, его запрос можно отключить. Нажимаем Win+R (вводим netplwiz). В открывшемся окне выбираем пользователя и снимаем галочку Запрашивать пароль при входе, после этого вводим пароль и подтверждаем его, жмем OK.
Привязка лицензии к учетной записи Microsoft нужна в том случае, если вы планируете повторно успешно активировать свою лицензионную копию Windows 10 после смены компьютера или замены важной части железа, например материнской платы. Это поможет (хочется думать, что так и будет) без обращения в службу поддержки Microsoft успешно активировать Windows 10 при изменении конфигурации оборудования.
А теперь отключаем шпионские функции Windows 10
1. Во-первых, автоматическое обновление Windows отключаем в окне Службы.
Окно службы вызываем нажатием клавиш Win+R (вводим services.msc).
Дважды нажимаем на строку Центр обновления Windows и выбираем в появившемся окне тип запуска – Отключена, состояние – Остановить. Также это можно сделать и в общих настройках Windows в пункте Обновления.
2. Дальше в общих настройках Windows в пункте Конфиденциальность – Общие запрещаем все кроме второго сверху пункта фильтр SmartScreen.
Далее в Общих настройках в пункте Конфиденциальность – Расположение запрещаем все. В Отзывах и диагностике Отзывы – никогда, Данные диагностики – базовые сведения. И так далее проходим по всем пунктам вкладки Конфиденциальность и выключаем все, что вам не нужно (практически все отключаем). И запрещаем всем приложениям работать в фоновом режиме.
3. В общих настройках в пункте Сеть и Интернет выключаем пункты Подключение к предложенным открытым хот-спотам и Подключаться к сетям, доступ к которым предоставили мои контакты.
4. В общих настройках в пункте Центр обновления Windows – Дополнительные параметры выбираем, когда и как вы хотите получать обновления. Отключаем обновление из нескольких мест.
5. В окне Службы (Win+R (вводим services.msc)) отключаем службу фоновой интеллектуальной передачи (BITS).
Раньше этот пункт назывался – Служба диагностического отслеживания (Diagnostics Tracking Service), но его переименовали. Жмем два раза на пункт Функциональные возможности для подключенных пользователей и телеметрия (Connected User Experiences and Telemetry) и меняем параметры на Отключено.
По другому отключить Connected User Experiences and Telemetry можно там же, где любой другой сервис Windows 10 – в настройках services.msc (надо также поменять параметры на Отключено).
6. В Настройках – Конфиденциальность также выключаем отслеживание местоположения.
Ps. А еще, если вам не нужен Магазин приложений Windows (App Store), который втюхали на ваш компьютер без вашего согласия, можно его отключить (т.к. удалить в панели удаления программ не получится).
BITS — интеллектуальная служба передачи данных между клиентом и HTTP-сервером. При этом при передачи используется интернет, который не используется. Как это? Например у вас интернет-пакет со скоростью 10 мегабит, а вы просто сидите в социальной сети, которая ну никак не может для отправки сообщений использовать все 10 мегабит. И вот то, что не используется — то может взять себе служба BITS для передачи данных) вот как-то так все и работает)
Но где эта служба применяется? Самое главное применение — загрузка обновлений с серверов Microsoft. Обновления могут быть большие и вот чтобы загрузка их не мешала пользователю в плане скорости — то и нужна служба BITS. Вот поэтому то он и интеллектуальная — качает с такой скоростью, чтобы вам не мешать сидеть на сайтах, или например играть в онлайн игру..)
Как я понимаю, основная фишка службы BITS — фоновая загрузка данных, при которой используется не вся скорость интерната, а только неиспользуемая.
Кроме обновлений служба также используется и в антивирусе Microsoft Security Essentials (Windows Defender).
Как я понимаю, эту службу могут использовать и другие программы. Они могут загружать файлы из интернета при помощи этой службы. Для этого программа создает задание, в котором указаны файлы, и потом это задание идет или в очередь или сразу выполняется. В общем это уже больше для разработчиков, вряд ли вам интересно)
Нужно ли отключать службу BITS? Судя по тому где она используется — нет, отключать не стоит, иначе могут быть проблемы со встроенным антивирусом или с обновлениями. Но если вы ни первым ни другим не пользуетесь — то получается отключить можно. Но опять же, а если еще какая-то программа использует эту службу? Нельзя ведь точно знать какие проги используют, а какие нет. Поэтому.. нет, лучше все таки ее не отключать. Тем более что вряд ли она может грузить ПК — разве что совсем немного и только когда идет передача данных.
Чтобы отключить службу или посмотреть, включена она или нет, то нужно открыть окошко свойств — там есть вся необходимая информация. Как это сделать? А вот как — зажимаете Win + R, вставляете эту команду:
Нажимаете ОК и потом в списке служб находите Фоновая интеллектуальная, нажимаете два раза и будет окошко свойств. Там все будет сказано. Чтобы отключить — в Тип запуска выбираете Отключена и нажимаете кнопку Остановить. Но отключать в итоге все таки думаю что не стоит.
Как и многие системные службы, BITS работает под процессом svchost.exe, тут ничего удивительного нет.
Проверка состояния службы BITS
BITS Administration Utility (bitsadmin.exe)
BITS Administration Utility — инструмент управления службой BITS. Возможно что инструмент из себя представляет команду, так как имеет параметры для запуска из командной строки:
Да, bitsadmin.exe — это команда:
Я точно не знаю — но если интересно, то можете попробовать ввести в командную строку:
И в результате может отобразиться справка по этой команде.
Вирус может использовать BITS
Но я нашел еще кое-что интересное. Впрочем ничего странного нет.. в общем вирусы тоже могут использовать службу BITS. На одном сайте читаю, что некий троян в 2016 году использовал функционал службы для загрузки вирусов на ПК. Ну тут просто без комментариев, я то думал что там в Microsoft это учли и сделали так, что загрузка могла бы быть только с безопасных источников. Но как видим — нет.
Сегодня тот вирус уже вряд ли опасен — информация за 2016 год, а сейчас конец 2018, и скорее всего вирус уже внесен в антивирусные базы.
Нашел даже более точную информацию — вирус назывался Zlob.Q и он использовал BITS для связи с командным центром (C&C). И как обнаружили этот вирус? Все очень просто — была подозрительная активность службы BITS, ну и начали копать, и в итоге докопались.
Возможно у вас тоже есть подозрительная активность? В любом случае, при малейшем подозрении — проверьте ПК на вирусы. Чем? Я перечислю две основные утилиты, которыми стоит проверять регулярно ПК:
Вот этими двумя утилитами я оч советую проверить ПК при малейшем подозрении на вирус. На этом все — удачи, надеюсь информация помогла.
Добавить комментарий Отменить ответ
Этот сайт использует Akismet для борьбы со спамом. Узнайте как обрабатываются ваши данные комментариев.
**********************************
Background Intelligent Transfer Service (BITS) Disabled [«Отключена фоновая интеллектуальная служба загрузки (BITS)]
Чтобы исправить эту проблему:
Чтобы включить службы, от которых зависит BITS:
Служба передачи данных
Незаметная, но интеллектуальная служба BITS
Объемы данных, передаваемых по сети современными приложениями, нередко достигают десятков или сотен мегабайт, а порой измеряются и гигабайтами. Это подчас приводит к заметному снижению пропускной способности сети. С другой стороны, постоянно растущее число мобильных пользователей или пользователей, вынужденных работать в условиях отсутствия надежных каналов связи с высокой пропускной способностью, заставляет задумываться над проблемой передачи больших объемов информации в сетях с неустойчивым или прерывающимся соединением. Например, вы можете начать передавать файл во время полета на самолете, но не успеть завершить процесс, а продолжить его из гостиничного номера. Или передача данных с буровой вышки может быть прервана из-за резкого ухудшения погодных условий.
Для решения этих и ряда других задач в состав Microsoft Windows 2003 Server включена новая служба — Background Intelligent Transfer Service (BITS). Она предназначена для передачи информации в фоновом режиме по ненадежным соединениям. Основные преимущества, предоставляемые этой службой, описаны во врезке «Зачем нужна BITS»
Специалисты Microsoft позаботились о разработчиках программного обеспечения и предложили специальный SDK, предназначенный для написания приложений, которые используют новую службу. Данная статья посвящена технологии и архитектуре BITS, а также интерфейсам программирования и приемам работы с ними, необходимым для использования возможностей службы BITS в приложениях. Материал, посвященный службе BITS, «Background Intelligent Transfer Service», можно найти на сайте MSDN по адресу http://msdn.microsoft.com/library/default.asp?url=/ library/en-us/bits/bits/bits_start_page.asp
Знакомство
BITS — это служба, предназначенная для передачи данных между клиентом и сервером. В отличие от других протоколов, BITS по умолчанию передает файлы в фоновом режиме, использующем для передачи информации только ситуации низкого сетевого трафика. Для реализации этой функции служба проверяет состояние сети и использует ее в моменты наименьшей загрузки. Также существенным отличием BITS от других механизмов передачи является асинхронный алгоритм работы, который позволяет приложению, инициировавшему передачу файлов, прекратить работу в то время, когда информация еще не передана. После генерации задания на передачу файла пользователь может прекратить выполнение приложения, а уже BITS осуществит передачу данных. Если пользователь, инициировавший передачу файла, закроет свою сессию работы на компьютере, процесс передачи будет приостановлен и возобновлен только после следующей регистрации пользователя в системе. Если задание создано системной службой, выполняющейся под определенной учетной записью (например, LocalSystem) и не требующей регистрации пользователя, то оно будет выполняться во время работы службы.
В операционную систему Microsoft Windows XP включена поддержка BITS версии 1.0, которая поддерживает только получение файлов (download), но не их передачу (upload). Версия BITS 1.5, поддержка которой включена в операционную систему Windows Server 2003, поддерживает двунаправленную передачу файлов. Также версия 1.5 может быть дополнительно установлена для Windows 2000 и Windows XP. В этой статье будет рассматриваться версия BITS 1.5.
Для осуществления передачи файлов должен быть установлен сервер Internet Information Services (IIS) версии 5.0 или 6.0 с серверными расширениями BITS. Версия IIS 5.1, входящая в поставку Windows XP, не поддерживается. Соответствующие обновления можно получить на сайте Microsoft.
Программный интерфейс ориентирован на использование в программах, разрабатываемых на языке C++, и входящие в него заголовочные и библиотечные файлы, а также справочные материалы входят в поставку SDK.
Служба BITS поддерживает протоколы HTTP и HTTPS для получения и загрузки файлов и требует сервера HTTP версии 1.1. Для получения файлов HTTP серверный метод Head должен возвращать размер файла в байтах, а метод Get должен поддерживать заголовки Content-Range и Content-Length. Для передачи динамической информации приложения ASP, ISAPI или CGI также должны поддерживать заголовки Content-Range и Content-Length. В противном случае возможна передача только статической информации. В табл. 1 приведено сравнение BITS и других механизмов, используемых для передачи файлов.
Конечно же, служба BITS может осуществлять и простую передачу файлов между каталогами. На листинге 1 приведен пример функции, которая выполняет простое копирование файлов. Приложение контролирует весь процесс передачи данных, т. е. не является асинхронным.
Перед тем как вкратце описать принципы действия программы, определим терминологию, используемую в API службы BITS. Основной термин, который применяется при описании работы BITS, — «задание» (Job). Это логический контейнер, объединяющий один или несколько файлов, предназначенных для передачи. Все файлы, входящие в задание, имеют одинаковый приоритет. Все задания объединяются в одну очередь заданий (Queue). Задания, помещенные в очередь, выполняются последовательно, т. е. одновременно не может передаваться более одного файла. Если выполнение задания по той или иной причине приостановлено, выполняется следующее задание с наиболее высоким приоритетом. Под файлом (File) понимается объект, имеющий два основных параметра — удаленное (Remote) и локальное (Local) имена. В зависимости от типа задания файл будет либо передан на удаленный ресурс, либо скопирован оттуда.
Программные интерфейсы BITS
Для разработки клиентских приложений специалисты Microsoft создали API, представляющий собой несколько COM-интерфейсов. Это делает API независимым от применяемых средств разработки. В том числе возможно использование функций, представляемых службой BITS в сценариях. Интерфейсы API, необходимые для передачи файлов и обеспечения управления процессом их копирования, приведены в табл. 2.
Рассмотрим пример из листинга 1. В первую очередь создается экземпляр интерфейса IBackgroundCopyManager. Он обеспечит доступ ко всем прочим необходимым интерфейсам. Далее используется метод IBackground CopyManager::CreateJob для создания задания и метод AddFile интерфейса IBackgroundCopyJob для инициализации процесса передачи файла. При создании задания указывается, каким образом оно будет применяться. Возможны три варианта значения параметра Type, имеющего тип BG_JOB_TYPE:
BG_JOB_TYPE_DOWNLOAD — определяет, что задание будет использовано для получения данных на стороне клиентского приложения.
BG_JOB_TYPE_UPLOAD — определяет, что задание будет использовано для передачи (загрузки) данных на сервер. Это значение доступно в версии BITS 1.5.
BG_JOB_TYPE_UPLOAD_REPLY — определяет, что задание будет использовано для передачи (загрузки) данных на сервер и получения файла ответа от серверного приложения. Это значение также доступно в версии BITS 1.5.
Также замечу, что выполнение задания после создания приостанавливается. Для продолжения и наблюдения за ходом выполнения задания используется периодический опрос его состояния. Текущий статус задания возвращает метод GetState интерфейса IBackgroundCopyJob. Статус может принимать следующие значения:
BG_JOB_STATE_QUEUED — показывает, что задание находится в очереди и ожидает выполнения. Если пользователь выйдет из системы до завершения задания, оно будет переведено в это состояние.
BG_JOB_STATE_CONNECTING — показывает, что служба BITS пытается установить соединение с сервером. Если соединение успешно установлено, состояние задания переходит в состояние BG_JOB_STATE_TRANSFERRING, в противном случае будет возвращено значение BG_JOB_STATE_TRANSIENT_ERROR.
BG_JOB_STATE_TRANSFERRING — показывает, что BITS передает информацию, помещенную в задание.
BG_JOB_STATE_SUSPENDED — показывает, что выполнение задания приостановлено. Для перевода в это состояние вызывается метод IBackgroundCopyJob::Suspend. Как я уже отметил выше, служба BITS автоматически приостанавливает задание после его создания. Задание будет находиться в приостановленном состоянии, пока не будет вызван один из методов: IBackgroundCopyJob::Resume, IBackgroundCopyJob::Complete или IBackgroundCopyJob::Cancel.
BG_JOB_STATE_ERROR — показывает, что при выполнении задания возникла критическая ошибка, приводящая к невозможности передачи файла. Когда ошибка будет исправлена, например изменены настройки системы, приводящие к запрещению доступа, вызов метода IBackgroundCopyJob::Resume продолжит выполнение задания. Если ошибка не может быть исправлена, вызов метода IBackgroundCopyJob:
:Cancel прервет выполнение задания, а вызов метода IBackground CopyJob::Complete позволит продолжить передачу других файлов, входящих в задание, и посчитать эту часть успешно завершенной.
BG_JOB_STATE_TRANSIENT_ERROR — показывает, что возникла некритическая ошибка. Служба BITS будет пытаться продолжить передачу данных в течение времени, установленного при вызове метода IBackgroundCopyJob::SetNoProgressTimeout. Если в течение этого времени передача не продолжится, статус задания поменяется на BG_JOB_STATE_ERROR.
BG_JOB_STATE_TRANSFERRED — показывает, что задание успешно завершено. Для заданий, предполагающих получение файлов клиентом, после перехода в это состояние необходимо вызвать метод IBackgroundCopyJob::Complete для предоставления клиентам доступа к полученным файлам.
BG_JOB_STATE_ACKNOWLEDGED — показывает, что клиентским приложением был вызван метод IBackgroundCopyJob::Complete, подтверждающий, что задание успешно выполнено.
BG_JOB_STATE_CANCELLED — показывает, что выполнение задания было прервано клиентским приложением с помощью вызова метода IBackgroundCopyJob::Cancel, который прерывает выполнение задания и удаляет его из очереди.
На рис. 1 показан жизненный цикл задания. Он начинается с генерации задания, это функция клиентского приложения. Задание представляет собой логический контейнер, содержащий файлы для передачи. После создания задания к нему добавляется один или несколько файлов для передачи. Важно! Обращаю внимание читателей на то, что в задание, предназначенное для передачи файлов на сервер, может быть помещен лишь один файл.
|
Рисунок 1. Жизненный цикл задания |
Служба BITS автоматически приостанавливает задание после его создания. После активизации задания начинается передача информации. Задание выполняется успешно в случае передачи файлов, но может быть и прервано клиентским приложением.
Приведенной информации вполне достаточно для написания простых приложений, использующих службу BITS для передачи и получения файлов.
Но, безусловно, больший интерес представляет возможность осуществлять обмен информацией с HTTP-сервером. Рассмотрим, как происходит такой обмен, каким образом настраивается сервер для реализации этих возможностей, как реализуются серверные и клиентские приложения.
Для использования возможности загрузки файлов на сервер необходимо создать на сервере виртуальную папку, в которую клиенты будут передавать информацию. Виртуальные каталоги создаются для каждого типа обслуживаемых сервером клиентов. Например, для мобильных клиентов, использующих медленные каналы передачи данных, может потребоваться большее время ожидания, чем для клиентов из локальной сети, или может понадобиться ограничение размера данных, которые пользователи смогут размещать на сервере.
Компоненты службы BITS добавляют свойства в базу метаданных IIS. Для создаваемых виртуальных папок эти свойства используются для определения порядка размещения файлов.
Чтобы использовать службу BITS для передачи данных на сервер, необходимо настроить серверные расширения BITS для IIS и разрешить запись в каталоги. Для этого можно воспользоваться предоставляемыми BITS программными API или произвести настройки вручную, открыв окно настройки свойств виртуального каталога в консоли управления IIS.
В табл. 3 приведены параметры, используемые службой Background Intelligent Transfer Service для расширения возможностей IIS по поддержке функций загрузки файлов. В таблице описаны параметры, добавляемые BITS в базу метаданных IIS, относящиеся к виртуальному каталогу. Служба BITS использует эти параметры для определения правил загрузки файлов. Отметим, что под серверным приложением подразумевается приложение CGI, ASP или ISAPI, которое используется при обмене.
Пример, приведенный в листинге 2, включен в SDK и показывает, как установить свойства расширений IIS, используя Windows Scripting Host. Если виртуальный каталог является ссылкой на удаленный ресурс, то кроме приведенных еще устанавливаются значения свойств UNCUserName и UNCPassword.
Взаимодействие с серверными приложениями
Служба BITS использует приведенные в табл. 4 заголовки запросов HTTP для передачи информации серверным приложениям. BITS с помощью параметра BITSServerNotificationType определяет заголовок (header), который будет использоваться. Если параметр BITSServerNotificationType имеет значение 1, BITS передает местоположение загружаемого файла в заголовке. Если параметр BITSServerNotificationType имеет значение 2, BITS передает тело файла в заголовке запроса.
Передача загружаемого файла в теле запроса позволяет существующим приложениям работать с минимальной модификацией кода. Загружаемый и получаемый файлы передаются соответственно в теле запроса и ответа. В следующем примере показано, как служба BITS передает загружаемый файл на серверное приложение в теле запроса.
и далее следуют 80 000 байт передаваемого файла
А так выглядит ответ серверного приложения:
HTTP/1.1 200 — OK
Content-Length: 100
и далее идут 100 байт возвращаемой информации.
Служба BITS передает расположение загружаемого файла и файла ответа в параметрах. Серверное приложение открывает загружаемый файл, обрабатывает данные и создает файл ответа. Затем BITS удаляет загружаемый файл и файл ответа после получения ответа от серверного приложения. Если серверному приложению требуются эти файлы в дальнейшем, они должны быть скопированы в другое место. В следующем примере запроса показано, как BITS передает адрес загружаемого файла серверному приложению:
POST http://myserver/myvdir/handle_upload.asp?ACCOUNT=873112 HTTP/1.1
Host: myserver
BITS-Original-Request-URL: http://front-end-server/vdir
BITS-Request-DataFile-Name: c:physical-pathBITS-Sessions <5e53c221-f2d6-4bf2-
b994-1dc43ceaca8d> equest
BITS-Response-DataFile-Name: c:physical-pathBITS-Sessions <5e53c221-f2d6-4bf2-
b994-1dc43ceaca8d> esponse
Content-Length: 0
А это текст ответа серверного приложения службе BITS; возвращаемая информация находится в файле, определенном параметром BITS-Response-DataFile-Name запроса.
HTTP/1.1 200 — OK
Content-Length: 0
Заметим, что BITS не может осуществить запись файлов в виртуальную папку, для которой разрешены запуск сценариев и программ. Если попытаться записать файлы в такую папку, будет возвращена ошибка. BITS не требует разрешения на запись в виртуальный каталог; более того, рекомендуется вводить запрет на запись.
Настройки, устанавливаемые по умолчанию, позволяют осуществлять запись файлов на сервер. Для записи файлов на сервер и отправки последующего уведомления о завершении процесса необходимо разрешить BITS уведомлять о событиях и указать URL серверного приложения, которое должно быть вызвано. Как правило, это расширение ISAPI. Служба BITS осуществит передачу данных и оповестит сервер. Для этого она использует запросы и ответы, предусмотренные протоколом HTTP для связи с серверным приложением.
Обмен информацией
Выше рассматривалось простое приложение, позволяющее передать файлы. Теперь можно рассмотреть другие интерфейсы, предоставляемые службой BITS. Размещение файла в очереди заданий происходит одним способом, и он уже был рассмотрен. Но получение информации о ходе передачи может осуществляться не только с помощью опроса состояния задания, как было показано в листинге 2.
Реализация интерфейса IBackgroundCopyCallback позволяет получать уведомления о завершении задания, возникших ошибках или изменении его статуса. Клиентское приложение может использовать это решение вместо опроса состояния очереди. Я написал класс, описание которого можно найти в листинге 3, реализующий необходимый интерфейс. Для получения уведомлений нужно передать указатель на объект этого класса с помощью метода IBackgroundCopyJob::SetNotifyInterface. Служба BITS будет использовать этот указатель в течение всего срока жизни приложения. Когда приложение будет запущено вновь, указатель необходимо восстановить. Гарантирован как минимум один вызов после повторной регистрации. Например, если приложение было завершено до завершения задания, то после его повторного старта, даже если он имел место после выполнения задания, произойдет уведомление о завершении. Необходимо реализовать все методы интерфейса IBackground
CopyCallback. Если метод ничего не делает, он должен возвращать значение S_OK. Чтобы определить, оповещения о каких событиях необходимо доставлять в приложение, используется метод IBackgroundCopyJob:
:SetNotifyFlags, которому передается один параметр, состоящий из одного или нескольких флагов:
BG_NOTIFY_JOB_TRANSFERRED — флаг показывает, что оповещение должно быть передано, когда все файлы в задании успешно переданы.
BG_NOTIFY_JOB_ERROR — оповещение об ошибках.
BG_NOTIFY_DISABLE — это значение запрещает службе BITS передавать уведомления о событиях. Все остальные флаги будут проигнорированы.
BG_NOTIFY_JOB_MODIFICATION — состояние задания изменилось. Например, изменился приоритет задания, статус задания или произошло изменение объема переданной информации. Этот флаг игнорируется, если оповещения передаются внешнему приложению (см. ниже).
В листинге 4 показана простая реализация методов класса, принимающего оповещения о событиях.
На рис. 2 показана диаграмма состояний задания. Заметим, что на диаграмме не отражено состояние CANCELED. Так как в него задание может перейти из любого другого состояния, кроме ACKNOWLEDGED, для наглядности я не стал его изображать.
|
Рисунок 2. Диаграмма состояний задания |
В состояние SUSPENDED задание переходит либо сразу после создания, либо после вызова метода IBackgroundCopyJob::Suspend. В это состояние задание может перейти из любого другого, кроме состояний CANCELED или ACKNOLEDGED.
Если задание переходит в состояние ERROR, то оно может быть перезапущено после устранения ошибки. И наконец, если задание находится в состоянии TRANSIENT ERROR, служба BITS пытается восстановить задание автоматически.
Кроме описанных способов уведомления о событиях, BITS предоставляет еще одну интересную возможность. Можно определить приложение (исполняемый файл), которое будет вызвано при наступлении того или иного события. Для этого используется интерфейс IBackground CopyJob2, указатель на который возвращается вызовом метода IBackgroundCopyJob::ueryInterface (см. листинг 5).
Далее вызовом метода IBackground
CopyJob2::SetNotifyCmdLine указывается приложение, которое должно быть вызвано, и передаваемые ему параметры командной строки. Заметим, что первым параметром должен быть путь к приложению. Вообще говоря, достаточно использовать еще один параметр — идентификатор задания, получаемый при его создании. В отличие от механизма уведомления о событиях, здесь возможно уведомление лишь об ошибках, возникших в процессе выполнения задания, и о завершении задания. Так же как и в предыдущем случае, типы событий, о которых необходимы уведомления, устанавливаются вызовом метода IBackgroundCopyJob:
:SetNotifyFlags. В том случае если ранее был установлен указатель на интерфейс приема информации о событиях, будет возвращена ошибка.
Приложение, которое будет вызвано в случае наступления указанных событий, может восстановить указатель на IBackgroundCopyJob вызовом метода IBackgroundCopyManager:
:GetJob (напомню, что второй параметр командной строки содержит GUID, идентифицирующий задание), примерно так:
hr = CLSIDFromString( argv[1],&JobId );
if( SUCCEEDED(hr) )
<
hr = pManager->GetJob( JobId,&pJob );
.
>
и далее использовать методы этого интерфейса в соответствии с логикой программы.
Интерфейс управления
Для управления свойствами виртуального каталога, отвечающими за взаимодействие с BITS, используется интерфейс IBITSExtensionSetup, который, в частности, позволяет разрешить или запретить запись файлов BITS в виртуальный каталог. Этот интерфейс представляет собой расширение интерфейсов Active Directory, ADSI. Получить указатель на данный интерфейс можно вызовом функции ADsGetObject:
HRESULT hr = IBITSExtensionSetup* pExtensionSetup = NULL;
hr = ADsGetObject( pszPath,__uuidof(IBITSExtensionSetup),&pExtensionSetup );
if( SUCCEEDED(hr) )
<
.
>
Но если этот интерфейс используется из программы, которая также запускает сервер BITS, например из программы установки, необходимо использование метода IBITSExtension
SetupFactory::GetObject для получения указателя на этот интерфейс. В остальных случаях возможно применение любого метода.
Интерфейс предоставляет следующие методы.
EnableBITSUploads — разрешает службе BITS загружать файлы в виртуальный каталог.
DisableBITSUploads — запрещает службе BITS загружать файлы в виртуальный каталог.
GetCleanupTaskName — возвращает имя задания, выполняющего очистку виртуального каталога.
GetCleanupTask — возвращает интерфейс задания, выполняющего очистку виртуального каталога. Это задание удаляет обработанные файлы. Когда создается виртуальный каталог и разрешается запись в него файлов, служба BITS добавляет задание, которое очищает каталог один раз в 12 часов и удаляет задания на передачу файлов, которые в течение этого времени не изменялись. Для определения периода ожидания, в течение которого файлы не будут удалены, необходимо установить свойство BITSSessionTimeout расширений IIS.
В листинге 6 приведен пример функции, разрешающей или запрещающей запись файлов в виртуальный каталог.
Читатели могут спросить, зачем использовать новый сложный API для решения, казалось бы, простых и давно известных задач? Дело в том, что служба BITS позволяет решать совсем не тривиальные задачи. Точнее, ее версия 1.5. Если внимательно просмотреть разделы, описывающие обмен информацией с серверными приложениями, станет понятно, что BITS ориентирована на асинхронный обмен динамическим контентом в среде IIS. Такая возможность, безусловно, стоит изучения нескольких интерфейсов. Кроме того, прямое назначение службы — обмен файлами — может помочь решить огромное количество проблем, возникающих, например, при интеграции распределенных приложений или при передаче больших объемов данных.
Зачем нужна BITS
Использование службы BITS предоставляет следующие преимущества, которые существенно изменяют процесс обмена файлами.
Александр Эпштейн (alex_ep@hotmail.com) — независимый консультант и разработчик программного обеспечения
Поделитесь материалом с коллегами и друзьями