NuGet / OpenWrap для развертывания и управления зависимостями во время выполнения

#c# #nuget #openwrap

#c# #nuget #openwrap

Вопрос:

Я полностью понимаю, для чего в первую очередь был создан NuGet / OpenWrap и как он был принят и применен с момента его выпуска некоторое время назад.

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

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

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

Лично я не большой поклонник создания установочных пакетов (MSI, Web Installer и т.д.) Для каждого уникального решения, Поскольку это скоро выйдет из-под контроля и не очень хорошо масштабируется.

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

Ответ №1:

Мы успешно это сделали. OpenWrap можно просто вызвать для обновления пакетов в определенных каталогах. Затем развертывание приложения — это просто добавление нового дескриптора к пакетам, которые вы хотите видеть развернутыми, и предоставление openwrap возможности решить проблему за вас.

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

В этом случае развертывание нового приложения — это всего лишь вопрос либо добавления новой папки с соответствующим дескриптором, либо добавления приложения непосредственно в системный репозиторий. Автоматическое обновление может быть реализовано простым запуском инструментов командной строки openwrap в пакетном задании.

Если вы хотите подняться на один уровень выше, вы можете сделать свое приложение составным, используя OpenWrap API и динамически добавляя / удаляя пакеты. У нас есть разрешение сборки во время выполнения.

Комментарии:

1. Спасибо, Себ. Я ценю ваш быстрый ответ и продолжу изучать это!