Главная Windows, Без рубрики, Новое Сравнение TS Easy Print и традиционной системы печати
  • Сравнение TS Easy Print и традиционной системы печати

    clip_image002В Windows Server 2008 появилась относительно новая технология печати на перенаправленных принтерах из терминальных сессий – TS Easy Print. С её помощью можно избавиться от необходимости установки и использования драйверов для принтеров на терминальных серверах. В результате этого значительно улучшается стабильность службы диспетчера очереди печати и как следствие удобство работы для конечных пользователей. В статье предлагается сравнительный обзор алгоритмов работы традиционной модели системы печати и технологии TS Easy Print. Представленная информация собрана из немногочисленных публичных источников, приведенных в конце статьи. В связи с этим, автор заранее просит прощения в случае неверной интерпретации доступной ему информации.

    Традиционная модель системы печати

    Вначале рассмотрим традиционную модель системы печати.

    Основными компонентами, участвующими в перенаправлении принтеров и печати на них являются:

    · winlogon.exe – процесс, отвечающий за создание и завершение сеанса, а также запуск оболочки пользователя;

    · winsta.dll – библиотека, используемая для настройки терминальной сессии;

    · termsrv.dll – диспетчер удаленных подключений;

    · rdpwsx.dll – компонент, работающий в режиме пользователя и отвечающий за подключение/отключение удаленных соединений по протоколу RDP;

    · rdpdr.sys – драйвер перенаправления RDP-устройств, работающий в режиме ядра;

    · spoolsv.exe – диспетчер очереди печати на терминальном сервере;

    · usbmon.dll – компонент управления динамическими портами принтеров на терминальном сервере;

    · mstscax.dll – компонент терминального сервера, собирающий информацию о принтерах на клиентской рабочей станции (имя, драйвер, настройки и.т.п.);

    · System Event Notification Service (SENS) – служба терминального сервера, отслеживающая такие системные события, как подключение\отключение сессий и создание\завершение сеансов на терминальном сервере, а также передающая информацию о них в приложения.

    Автоматическое перенаправление принтеров клиента в терминальную сессию происходит по следующему алгоритму.

    1) Пользователь при помощи клиента удаленного рабочего стола (mstsc.exe) подключается к терминальному серверу. В сессии пользователя создается процесс winlogon.exe. Компонент winsta.dll настраивает терминальную сессию.

    2) Компонент rdpwsx.dll (при помощи winsta.dll и termsrv.dll) обнаруживает новое соединение и уведомляет об этом драйвер перенаправления устройств (rdpdr.sys).

    3) Драйвер перенаправления устройств посылает запрос на составление списка принтеров для дальнейшего подключения их в сессию пользователя.

    4) Клиент удаленного рабочего стола (mstsc.exe) собирает информацию с рабочей станции и через rdpwsx.dll посылает её драйверу перенаправления устройств. На терминальный сервер передаются следующие данные:

    a) конфигурация принтера (имя принтера, имя драйвера, ориентация бумаги, статус и.т.п.);

    b) имена очередей печати (очередь печати – это представление физического принтера в операционной системе Microsoft Windows) и соответствующих им портов;

    c) очереди печати, находящиеся в разделе реестра HKCU\Software\Microsoft\Terminal Server Client\Default\Add Ins\RDPDR на клиентском компьютере (рис. 1).

    clip_image002

    Рис. 1. Пример реестра

    5) Для каждой очереди печати при помощи драйвера перенаправления устройств создается соответствующий порт. Порты называются TSXXX, где XXX – номер, начинающийся с 001 (рис. 2). При этом учитываются заданные в групповых политиках настройки. Например, проверяется нужно ли перенаправлять все принтеры или только принтер по умолчанию.

    clip_image003

    Рис. 2. Порты перенаправленных принтеров

    6) Драйвер перенаправления устройств через API уведомляет службу диспетчера очереди печати о появлении новых принтеров. Указанная служба с помощью Usbmon.dll добавляет созданные ранее порты в список доступных, а также производит соответствующие обновления в реестре клиентского компьютера.

    7) Процесс winlogon.exe уведомляет службу SENS о создании терминальной сессии. С помощью этой службы удаляются созданные ранее порты при отключении и завершении сеанса.

    8 ) Служба SENS выполняет следующие действия:

    a) убеждается, что для принтера есть соответствующий драйвер на терминальном сервере;

    b) устанавливает принтер по умолчанию на клиентской рабочей станции, принтером по умолчанию на терминальном сервере;

    c) добавляет очередь печати в список устройств;

    d) устанавливает права безопасности по умолчанию на очередь печати для подключившегося пользователя (чтение, запись, печать) и группы администраторов (полный доступ).

    Процесс печати происходит по следующему алгоритму.

    1. Пользователь запускает печать документа из какого-либо приложения.

    2. При помощи интерфейса графического устройства (GDI), создается файл формата EMF (enhanced metafile format). Метафайл данного формата не зависит от устройства печати и содержит в себе инструкции необходимые для вывода изображения на принтер. Также, в зависимости от настроек принтера, файл может создаваться в RAW-формате (в этом случае GDI не используется).

    3. Созданный файл передается в диспетчер печати на терминальном сервере. Он может быть сохранен на диск, если большое число заданий на печать становится в очередь для одного принтера.

    4. Постановленное в очередь задание возвращается в GDI. С помощью драйвера принтера, работающего в режиме пользователя, GDI преобразовывает задание на печать в RAW-формат, который может быть обработан выбранным принтером.

    5. Задание на печать отправляется на перенаправленный порт (определенный как TSXXX).

    6. Диспетчер печати посылает задание на печать на монитор динамического порта (Usbmon.dll).

    7. Монитор динамического порта передает файл компоненту Rdpdr.sys, который посылает данные в готовом для печати растровом формате на соответствующий терминальный клиент и уже затем на нужный принтер.

    Суммируя вышесказанное, следует отметить, что большая часть процесса обработки задания на печать происходит на терминальном сервере. Драйвер должен быть установлен на терминальном сервере (так как GDI форматирует данные в соответствии с выбранным принтером).

    Архитектура TS Easy Print

    Возможности печати на перенаправленных принтерах при подключении к удаленному рабочему столу существенно расширены благодаря универсальному драйверу печати TS Easy Print и Microsoft .NET Framework. С их помощью системные администраторы могут избежать следующих типовых проблем.

    1. Критические сбои в работе терминального сервера из-за драйверов, работающих в режиме ядра.

    2. Сопоставление имен драйверов. Иногда имена драйверов, установленных на рабочих станций, не совпадали с именами драйверов на терминальном сервере. Для работы перенаправленного принтера приходилось вручную делать сопоставление в соответствующем inf-файле.

    3. Распространение драйверов. Необходимо было протестировать драйвер на одном из серверов и лишь затем распространять его на другие терминальные сервера.

    4. Большой объем информации передаваемой по сети при печати на перенаправленный принтер из терминальной сессии.

    Для решения указанных проблем, вместо традиционной системы печати предлагается использовать новую архитектуру, основанную на формате печати XML Paper Specification (XPS). С её помощью при печати на перенаправленном принтере можно использовать драйвера клиентского компьютера, не устанавливая их на терминальный сервер.

    Для функционирования TS Easy Print на клиентском компьютере должны быть установлены клиент удаленного рабочего стола версии 6.1 или старше и .NET Framework 3.0 SP1 или последующих версий. Указанным требованиям удовлетворяют наиболее распространенные версии клиентских операционных систем, такие как Windows XP Sp3, Windows Vista, Windows 7. Следует отметить, что старая система печати также поддерживается и может использоваться параллельно с технологией TS Easy Print для работы с более старыми версиями терминальных клиентов.

    Также как и традиционная система печати, TS Easy Print должна переводить данные в специальный формат и передавать их от терминального сервера к клиенту, на котором находится принтер. Основное отличие заключается в процессах преобразования и обработки заданий на печать.

    При печати по технологии Easy Print создается XML файл, который в точности соответствует печатаемому документу. Основное отличие от формата EMF состоит в том, что данный файл может быть обработан XPS-совместимым драйвером без преобразования в RAW-формат. В связи с этим, большую часть времени файл, содержащий задание на печать гораздо меньше аналогичного EMF файла и как следствие требует меньше вычислительных ресурсов на обработку.

    В основном, процесс обработки задания при использовании Easy Print сводится к получению заданию на печать и передаче его клиенту.

    Печать происходит по следующему алгоритму.

    1. Пользователь запускает задание на печать из какого-либо приложения в удаленной сессии.

    2. В зависимости от типа приложения, задание на печать либо сразу же преобразуется в формат XPS (для приложений класса Windows Presentation Foundation), либо предварительно преобразуется в формат GDI (для Win32-приложений).

    3. XPS-файл отправляется в надстройку клиента удаленного рабочего стола, отвечающую за технологию TS Easy Print.

    4. XPS-файл без изменений передается напрямую драйверу печати на клиентском компьютере.

    5. XPS-файл, предназначенный для GDI принтера, превращается в формат EMF.

    6. Задание на печать уходит на принтер.

    Как видно из алгоритма, TS Easy Print использует универсальный драйвер печати для передачи заданий на печать клиенту. Вследствие этого, уже нет необходимости устанавливать драйвер для принтера на терминальном сервере.

    Кроме того, TS Easy Print использует виртуальные каналы, предоставляя возможность настройки свойств печати непосредственно на клиенте. Когда пользователь входит в предпочтения печати в терминальной сессии, драйвер TS Easy Print на терминальном сервере перехватывает этот запрос и посылает его надстройке TS Easy Print на терминальном клиенте. Клиент опрашивает установленный локально драйвер и локальные настройки принтера. Таким образом, они полностью совпадают как на клиенте, так и на сервере. Дополнительным преимуществом TS Easy Print является то, что при передаче не добавляется информации связанной с драйвером печати.

    Заключение

    В статье рассмотрены две альтернативные технологии печати из терминальной сессии на перенаправленных принтерах. Благодаря своей архитектуре, TS Easy Print в большинстве случаев существенно превосходит традиционную систему печати по таким ключевым параметрам как

    · стабильность службы диспетчера очереди печати;

    · объем передаваемых при печати данных;

    · необходимость установки драйверов для принтеров на терминальные сервера;

    · скорость печати.

    Однако и старая технология печати также имеет права на жизнь, т.к. не всегда удается выполнить условия функционирования TS Easy Print. Особенно это актуально для старых версий тонких терминальных клиентов.

    Статья носит преимущественно теоретический характер. Особенности практического использования технологии TS Easy Print будут представлены в следующей статье.

    Дополнительные ресурсы

    · Windows Server 2008 Terminal Services Resource Kit

    · Terminal Services Printing

    · Процесс печати

    · Printing

    · Terminal Server Plug and Play Device Redirection Framework in Vista and Longhorn: Part 3

Комментарии

  1. С нетерпением жду следующей статьи, т.к. возникли вопросы, но большей частью практического свойства…
    думаю, что после прочтения второй части, они разрешаться сами собой -)

  2. Дим, отличная статья!

  3. спасибо! 🙂

  4. А если смотреть глубже, то иногда сложные таблицы печатает с ошибками. Сильно на это грешит 1С.
    Просить MS это исправить – не того полёта мы птицы…
    Просить 1C’ников, опять же им по… в смысле по барабану, не смотрят они на простых смертных…
    Вот и приходится искать нормальные решения, ScrewDrivers. Но и тут палка с двумя концами, денег просит, и падучесть есть (достаточно большая). Зато печать идеальная…
    Вот кто бы к нам повернулся бы лицом, и исправил такие мелочи, но мешающие нормальному функционированию…

  5. Тогда уж лучше использовать ThinPrint или Citrix. ScrewDrivers не обеспечивает существенного сжатия печати, а для территориально-распределенной сети это очень важный фактор.
    Плюс такие проблемы (сбитые таблицы) насколько я знаю бывают только с 1с, возможно дешевле и уж точно правильнее будет, подправить именно 1с, а не покупать сторонний продукт только для печати

  6. Соглашусь с Алексеем Тараненко.
    Править 1С, своими ручками, можем, и делаем. Но с каждым обновлением, снова правим и снова ручками.
    Можно подумать сами 1С’ники этого не видят и не знают. Пол инета орёт об этом, а им по… ну в смысле по барабану…
    В сети с гигобитом о сжатии пока не приходится говорить, хватает на 600 человек, а дальше посмотрим…

  7. >В сети с гигобитом
    Везет вам, у меня на филиалы каналы в лучшем случае 1Мб, много где еще полгода назад было 256-512, и ничего работали 🙂