Можем ли мы иметь две отдельные папки bin в одном приложении Function?

У нас есть два разных проекта приложения-функции Azure, каждый с одной функцией. Мы хотели бы разместить их все под одним приложением-функцией в Azure, и у каждого из них будет своя собственная корзина. Я хотел бы иметь возможность для каждой функции иметь дело со своими версиями внешних ссылок, т.е. function1 может использовать json.net 10.0, а function2 оставайтесь на json.net 9.0.

Создание хоста приложения-функции Azure для каждой функции может стать очень неуправляемым, особенно если нам нужно умножить х3 для каждой среды: dev, staging, prod.

Мы попытались выполнить обычное развертывание двух проектов, но оба они используют один и тот же блок (что привело к проблеме с ссылками):

wwwroot
- bin
- function1
--- function.json (pointing to ../bin/function1.dll)
- function2
--- function.json (pointing to ../bin/function2.dll)
- host.json

Мы также попытались создать каталоги виртуальных приложений и развернуть их, но портал не находит эти функции. Конечная структура:

wwwroot
- function1
--- bin
--- function1
------ function.json
--- host.json
- function2
--- bin
--- function2
------ function.json
--- host.json

перемещая function.json файл каждой функции в корень виртуального каталога и исправление ссылки на DLL устраняет проблему.

Похоже, что виртуальные каталоги могут удовлетворить эту потребность, но портал не поддерживает поиск function.json два уровня глубиной.

Возможно ли то, что мы хотим сделать?

2 ответа

Решение

Отсутствует изоляция процессов между функциями в одном приложении-функции: все они выполняются в одном и том же процессе и в одном домене приложения.

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

Я полагаю, что решение состоит в том, чтобы автоматизировать управление Function App до приемлемого уровня.

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

Частные сборки являются частью контекста данной функции и поддерживают боковую загрузку разных версий. Частные сборки должны быть загружены в папку bin в каталоге функций. Ссылка с использованием имени файла, например #r "MyAssembly.dll".

Другие вопросы по тегам