Как мне удобнее всего развернуть библиотеку собственного кода, зависящую от нескольких сотен файлов, в Windows Azure?

#windows #deployment #com #azure #cloud

#Windows #развертывание #com #azure #облако

Вопрос:

В этом руководстве показано, как развернуть COM-объект, состоящий из одного.файл DLL в роли Windows Azure с использованием механизма задач запуска.

Теперь у меня есть COM-объект, который зависит от нескольких сотен других файлов — dll-файлов (я также создаю их сам) и некоторых двоичных данных, необходимых для его работы, которые необходимо развернуть в виде дерева каталогов. Включение этого в проект роли (как это делается для одного файла в руководстве) кажется довольно глупым — эти файлы не относятся к функциональности роли, вместо этого роль просто зависит от COM-объекта.

Как мне удобнее всего развернуть огромное поддерево, содержащее COM-объект и все, от чего он зависит, в Windows Azure?

Ответ №1:

Одним из популярных методов является хранение этих файлов в хранилище больших двоичных объектов. Два способа сделать это:

  1. Создайте контейнер для вашей библиотеки DLL и зависимых файлов и сохраните каждый файл в отдельном большом двоичном объекте.
  2. Создайте zip-файл вашей библиотеки DLL и дерева зависимостей и сохраните этот zip-файл в одном большом двоичном объекте

При выполнении задачи запуска с повышенными правами доступа вы можете скопировать файл (ы) и установить свой COM-компонент.

Вариант # 2, скорее всего, приведет к более быстрой загрузке, поскольку это единственная копия, и на нее потребуется меньше операций хранения. Вам просто нужно объединить zip-приложение (или сохранить его в отдельном большом двоичном объекте.

Нейт Тоттен создал многопользовательскую веб-роль для Windows Azure, и метод, который он использует для развертывания веб-сайта, включает вариант № 2, описанный выше (хотя и не в качестве задачи запуска). Я предлагаю взглянуть на этот проект, чтобы увидеть, как zip-файл копируется в локальное хранилище и разархивируется.

РЕДАКТИРОВАТЬ: Еще один вариант — посмотреть на AzureRunMe, инструмент с открытым исходным кодом для распаковки и запуска приложений в роли Windows Azure.

Ответ №2:

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

Однако, если файлы не будут изменяться независимо от файлов в роли, тогда я бы упаковал файлы в zip-файл, а затем запустил процесс запуска, чтобы разархивировать и установить эти файлы из роли. Одним из преимуществ этого подхода является то, что проект очень прост в развертывании и версии в «devops» — у него нет никаких зависимостей от хранилища больших двоичных объектов.

Последний вариант заключается в том, что вы также можете поместить библиотеки DLL на диск Azure — вы можете смонтировать этот диск и установить COM-объект с этого диска во время запуска роли.