Использование службы хранилища Azure в веб-приложении Azure для запуска приложений командной строки exe

Я пытаюсь узнать о возможностях, доступных в Azure, для запуска нескольких приложений командной строки в Azure как части веб-приложения Azure. Приложения командной строки, которые я хочу запустить, в основном представляют собой приложения .exe, которым также требуются некоторые файлы зависимостей, которые должны быть там (* .dll) к моменту запуска .exe.

Я хочу написать веб-приложение Azure, и часть логики веб-приложения будет заключаться в том, чтобы запустить .exe и сохранить результат в другом месте (я пока не особо беспокоюсь об этой части). Однако, поискав в Интернете информацию о службе хранилища Azure, подключении / отключении дисков и т. Д., Я полностью запутался.

При этом я изо всех сил пытаюсь понять, как будет выглядеть дизайн моего веб-приложения с использованием технологий Azure:

  1. Какое хранилище Azure рекомендуется в этом случае? (Хранилище файлов? Хранилище BLOB-объектов?)
  2. Чтобы получить доступ к различным файлам .exe и всем их зависимостям, я думаю, мне нужно как-то смонтировать хранилище в веб-приложении во время выполнения, чтобы я мог ссылаться на путь, по которому находится .exe. Возможно ли это даже с использованием веб-приложения Azure, поскольку это платформа как услуга, и мы не контролируем машину, на которой выполняется код?
  3. Кроме того, поскольку у меня есть три разных приложения командной строки .exe (с их файлами зависимостей -dlls-), как лучше всего организовать их в хранилище Azure?

Есть некоторые основы, которых мне не хватает, и я буду рад услышать ваше мнение по этому поводу, поскольку я разработал несколько веб-приложений Azure, но никогда не интегрировал в них службу хранилища Azure.

РЕДАКТИРОВАТЬ: Чтобы уточнить, количество инструментов командной строки, которые я хочу запустить, может варьироваться. В конечном итоге у меня будут разные версии одного и того же инструмента командной строки, и у меня все еще будет возможность запускать любую версию, поэтому я подумал, что каким-то образом потребуется хранилище Azure, в которое я могу загружать свои разные версии.


person user3587624    schedule 19.03.2018    source источник


Ответы (1)


Служба приложений Azure имеет свое собственное хранилище. Здесь вы развертываете свои .exe и .DLL (желательно с Git, но webdeploy / zipdeploy / FTP всегда варианты).

Вы вызываете его так же, как в любом веб-приложении (.NET / PHP / любой стек). Здесь ничего особенного. Напишите %TEMP%, если требуется временное хранилище.

Вам по-прежнему следует использовать Хранилище BLOB-объектов. для вашего вывода, если указанный вывод выглядит как двоичный большой двоичный объект, в противном случае используйте более подходящий механизм хранения (база данных SQL / NoSQL - здесь подходят Azure SQL и Cosmos DB).

Вероятно, вы могли бы отказаться от функции Azure, если не Мне действительно не нужно полноценное веб-приложение.

person evilSnobu    schedule 19.03.2018
comment
Возможно, мне нужно отредактировать свой вопрос и добавить некоторые детали (извиняюсь за это!), Но дело в том, что количество приложений (.exe), которые нам придется запускать, не будет фиксированным. Они будут меняться со временем, и поэтому я думаю, что имеет смысл разместить их в службе хранилища Azure. Это даст мне возможность добавлять новые приложения командной строки (или версии одного и того же приложения), а во время выполнения просто выберите одно из них, смонтируйте его и запустите. Дайте мне знать, стоит ли редактировать мой первоначальный пост, пожалуйста :) - person user3587624; 20.03.2018
comment
Конечно, вы могли бы иметь эти двоичные файлы в хранилище BLOB-объектов и передавать их с параметром запроса или телом POST. Ваш код по-прежнему должен загрузить их где-нибудь в %TEMP%, прежде чем песочница сможет их запустить. Вы не можете запускать двоичные файлы, просто ссылаясь на URL-адрес хранилища BLOB-объектов. Но если вы рассматриваете свой давайте добавим еще один двоичный сценарий как новое развертывание, имеет смысл развернуть вместе с вашим основным веб-приложением / приложением-функцией. - person evilSnobu; 20.03.2018
comment
Будет ли хранилище BLOB-объектов подходящим хранилищем по сравнению с, скажем, хранилищем файлов? В моем случае инструмент содержит файлы .exe, dll, файлы конфигурации. Кроме того, по природе веб-приложения Azure (PaaS) после их загрузки это не означает, что я могу повторно использовать их снова, когда новый запрос попадает в мою службу, верно? В этом случае мне нужно будет снова загрузить приложение командной строки из хранилища. Это верно? - person user3587624; 20.03.2018
comment
После загрузки вы можете многократно ссылаться на них локально. В службе приложений d:\home - это постоянное хранилище, а d:\local - временное хранилище, которое стирается при каждом перезапуске приложения. Подробнее здесь - github.com/projectkudu/kudu / wiki /. Используйте Blob not File, вы не сможете подключить конечную точку хранилища файлов в службе приложений из-за ограничений песочницы - github.com/projectkudu/kudu/wiki/. Также не указывайте пути жестко, используйте соответствующие переменные env, которые вы найдете в Kudu на странице Environment. - person evilSnobu; 20.03.2018
comment
Тогда это звучит довольно круто! Похоже, я мог бы сохранить это местоположение доступным как статическое, а затем иметь столько версий моих различных приложений командной строки, доступных мне, независимо от того, сколько машин вращается. Отмечу ваш ответ как правильный! - person user3587624; 20.03.2018
comment
Вы можете рассматривать d:\local как кеш. Если его там нет, извлеките из хранилища BLOB-объектов, затем вызовите из d:\local. Будь проще. Нет необходимости в специальной логике при запуске. - person evilSnobu; 20.03.2018