Использование SoftGrid для поддержки использования конфликтующих приложений в среде службы терминалов. Часть 1. Введение в виртуализацию приложений

Опубликовано: 24 Апреля, 2023


Одна из проблем с размещением приложений в среде службы терминалов заключается в том, что не каждое приложение может работать вместе с любым другим приложением. Например, для двух приложений могут потребоваться разные версии одного и того же DLL-файла, а это означает, что вы можете запускать одно приложение или другое, но не оба.


В большинстве случаев приложения хорошо взаимодействуют друг с другом, но конфликты приложений могут быть особенно проблематичными при обновлении одной версии приложения до другой. Например, Microsoft недавно выпустила Office 2007. Office 2007 не может работать в той же системе, что и предыдущая версия, Office 2003. Поэтому, если вы подумываете об обновлении с Office 2003 до Office 2007, вам придется сделать выбор. Одним из вариантов было бы отбросить осторожность на ветер и продолжить обновление, надеясь, что все работает правильно. В большинстве организаций Office считается критически важным приложением, поэтому такая стратегия обновления, вероятно, не рекомендуется. Другой вариант — добавить еще один сервер терминалов в вашу организацию и запустить Office 2007 на новом сервере, в то время как на старом сервере по-прежнему будет работать Office 2003.


Эта стратегия намного безопаснее безрассудного обновления, но она, как правило, обходится дорого. В конце концов, это стоимость нового серверного оборудования, лицензий на программное обеспечение для нового сервера и, конечно же, любые необходимые сверхурочные, которые вы должны заплатить ИТ-персоналу во время установки. После того, как сервер запущен и работает, существуют текущие расходы на техническое обслуживание и поддержку. Я мог бы продолжить, но я думаю, что вы поняли идею. Добавление дополнительного сервера в организацию требует крупных и постоянных финансовых обязательств.


Существует третий вариант, доступный вам, когда вам нужно запустить конфликтующие приложения. Этот вариант предполагает использование несколько «новой» технологии, называемой виртуализацией приложений.


За последние пару лет популярность приобрела еще одна технология виртуализации; виртуализация серверов. Виртуализация приложений и виртуализация серверов — две совершенно разные технологии, работающие по схожим принципам.


Виртуализация серверов


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


Виртуализация серверов определенно имеет место, но она не очень практична, если вам просто нужно запускать конфликтующие приложения. Как я уже объяснял, каждый виртуальный сервер работает под управлением собственной операционной системы. Как вы, без сомнения, знаете, операционные системы Windows потребляют много системных ресурсов. Поскольку сервер загружен своей основной операционной системой, а также операционной системой виртуальной машины, он не работает почти так же хорошо, как если бы он работал под управлением одной операционной системы.


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


Виртуализация приложений


Виртуализация приложений работает аналогично виртуализации серверов, за исключением того, что все приложения работают в общей операционной системе. Это означает, что приложения могут обмениваться данными друг с другом с помощью OLE или копировать и вставлять, как если бы они не были виртуализированы. Фактически, виртуализированное приложение выглядит и ведет себя очень похоже на то, как если бы оно не было виртуализировано.


Чтобы понять, как работает виртуализация приложений, необходимо понять, как приложения обычно работают в среде Windows. Для простоты давайте забудем о службах терминалов до конца этой статьи. Во второй части я расскажу, как виртуализация приложений работает с терминальными службами.


Когда приложение запускается в операционной системе Windows, оно обычно имеет доступ к трем наборам ресурсов; данные, системные службы и информацию о конфигурации.


Данные могут означать много разных вещей, но с точки зрения универсального приложения данные относятся к индивидуальным данным пользователя. В частности, приложение должно иметь доступ к папке профиля пользователя и, конечно же, к папке документов пользователя.


Системные службы относятся ко всем отдельным компонентам операционной системы, без которых приложение абсолютно не может работать. Это относится ко всему, от экранных шрифтов до служб операционной системы. Некоторые другие системные службы включают COM, OLE, DCOM и вырезание и вставку.


Третий набор ресурсов, от которых зависят приложения, — это информация о конфигурации. Информация о конфигурации хранится в реестре Windows, различных файлах.INI и, в некоторых случаях, в файлах DLL.


Вообще говоря, приложения должны иметь возможность записывать данные и считывать данные из этих трех типов ресурсов. Когда приложение виртуализировано, оно поддерживает собственный набор данных, системных служб и информации о конфигурации. Этот набор системных ресурсов создается во время установки приложения. Самое приятное в этом то, что с учетом того, как создаются эти системные ресурсы, приложение не будет вносить никаких изменений в операционную систему компьютера в процессе установки. Например, большинство установщиков создают различные записи реестра по мере установки приложения. Когда используется виртуализация приложений, установщики записывают записи реестра в выделенное место, доступное только для устанавливаемого приложения (эти записи реестра также косвенно доступны для операционной системы). Поскольку реестр Windows остается нетронутым, нет опасности возникновения конфликтующих записей реестра.


Вывод


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


на нашу рассылку обновлений статей в режиме реального времени