В процессе разработки для Directum RX может возникать необходимость использовать одновременно несколько различных версий системы. Однако стандартное решение среды разработки DDS рассчитано на работу только с одним проектом и только на одной версии системы. Известно несколько способов, позволяющих переключаться между различными версиями на одном компьютере, но все они требуют существенных временных затрат прикладного разработчика и чаще всего оказываются неоправданно сложными.
В статье расскажем о подходе, упрощающем переключение между несколькими версиями Directum RX, поделимся парой хитростей, а также по шагам разберем процесс установки.
В каких случаях может потребоваться одновременное использование нескольких версий Directum RX? Перечислим типовые ситуации, с которыми может столкнуться разработчик:
Чаще всего прибегают к 2 традиционным способам, позволяющим работать с несколькими версиями системы:
Развертывание отдельной ВМ для каждой из версий Directum RX. Реализация такого подхода требует существенных серверных ресурсов. Кроме того, возникает необходимость контролировать актуальность установленных ВМ, проводить учет версий системы, установленных на каждой из виртуальных машин. В ситуации, когда необходимо кратковременно переключиться на другой проект, данный способ можно считать нецелесообразным.
Данный подход предполагает переустановку Directum RX с помощью инсталлятора, а также настройку отдельной DDS для каждого проекта. Это довольно трудоемкий и длительный процесс.
Начиная с версии Directum RX 4.2 появилась возможность устанавливать несколько версий системы с помощью штатного инсталлятора, а также быстро переключаться между проектами в рамках одной версии Directum RX.
Тем не менее, следует учитывать, что данный способ хоть и позволяет сэкономить число развернутых ВМ, но всё ещё требует большего объёма дискового пространства для каждой из версий системы, хранения логов и репозиториев для прикладной разработки.
Таким образом, каждый из устоявшихся подходов имеет существенные недостатки и ограничения. Это привело к необходимости разработать инструмент, позволяющий разработчику переключаться между разными несколькими версиями системы на одной виртуальной машине.
Всё это необходимо делать удобно, быстро, надежно и экономя ресурсы машины.
Ранее уже был разработан набор скриптов на Powershell – rx-dds-manage-tools. В дальнейшем на его основе были созданы Manage Applied Tools (тот же набор скриптов, дополненный автоматизацией установки Directum RX) и утилита RXInstanceManager, управляющая каждой установленной системой и позволяющая переключаться между ними.
Предполагалось, что эти инструменты будут закрывать большинство потребностей прикладных разработчиков Directum RX в части работы с несколькими версиями системы на одной ВМ.
На наш взгляд, решение является избыточным и не всегда может идеально подходит для использования по следующим причинам:
Тем не менее, сам подход по установке нескольких версий Directum RX на одной ВМ показался нам интересным. Далее расскажем, как упростить его.
Для того, чтобы запустить две версии системы на одной ВМ, можно использовать совместно RabbitMQ и MongoDB на разных установках Directum RX. У каждого экземпляра системы должен быть свой порт, база данных и сайт IIS, которые настраиваются в конфигурационном файле. При этом в случае с одной ВМ служба DirectumRXServiceRunner также будет в одном экземпляре, что приведет к перезаписи DirectumRXServiceRunner при запуске второй версии системы, и работать будет только один из экземпляров Directum RX.
Избежать этого помогает переменная instance_name, которую необходимо добавить в конфигурационный файл перед установкой Directum RX, а также добавить префикс на сайт IIS и в службу DirectumRXServiceRunner. После чего следующая установка системы будет происходить с другими параметрами и все экземпляры, установленные на одной ВМ, будут работать независимо друг от друга. При этом настройка нового конфигурационного файла для каждого из экземпляров системы может быть достаточно трудоемкой. Для экономии времени, а именно упрощения заполнения параметров конфигурационного файла и добавления в него переменной instance_name мы разработали утилиту CreateFormConfigYAML. Ниже рассмотрим работу с ней подробнее.
Перейдем к пошаговому алгоритму установки нескольких версий Directum RX на одной ВМ:
netstat -an | findstr /i :<номер порта>
Если в консоли ничего не вывелось, или вывелись другие порты, содержащие цифры запрашиваемого порта, – значит, порт свободен.
Интерфейс утилиты формирования файла config.yml
Сформированный файл config.yml
Важно помнить, что сайт располагается на порту, полученном на шаге 6, и он отличается от стандартного 80.
При установке нескольких версий Directum RX на одной ВМ будут запущены и несколько экземпляров службы DirectumRXServiceRunner. Управление экземплярами системы производится через Диспетчер задач, где при необходимости можно остановить неиспользуемые службы для экономии вычислительных мощностей ВМ.
Для удаления одной из установленных версий Directum RX необходимо:
Описанный алгоритм заметно упрощает установку нескольких экземпляров Directum RX на одной виртуальной машине и позволяет работать с различными версиями системы, оперативно переключаясь между ними, а также с экономией ресурсов ВМ и времени, затрачиваемого на развертывание.
Надеемся, наш опыт будет полезен для вас. А мы будем благодарны за фидбэк: комментарии, отзывы, дополнения.
Акелон.
А где можно утилиту CreateFormConfigYAML посмотреть?
Из статьи не очень понял можно ли переключаться в рамках одной версии rx между различными проектами/базами? Если да, то как это можно сделать?
Авторизуйтесь, чтобы написать комментарий