#c# #azure-functions
Вопрос:
Я новичок в функциях Azure и не смог найти хорошего объяснения привязок вывода.
Например, если я хочу загрузить большой двоичный объект в хранилище Azure, когда рекомендуется использовать привязку вывода и когда загружать вручную (каковы преимущества/недостатки в каждом случае)?
И в чем разница между привязкой вывода как параметра в Run
функции и как атрибута?
Параметр:
[FunctionName("MyFunction")]
public static void Run([ServiceBusTrigger("myqeue")] Message message,
[Blob("output-container/{name}", FileAccess.Write)] Stream stream)
{ }
Атрибут:
[FunctionName("MyFunction")]
[return: Blob("output-container/{name}")]
public static string Run([ServiceBusTrigger("myqeue")] Message message, ILogger log)
{ }
Комментарии:
1. Это совершенно субъективно. Это просто вопрос контроля над торговлей для удобства использования. Лично я не люблю период функций из-за уровня абстракции, который они вводят. В результате вы, вероятно, можете догадаться, какой из двух вышеперечисленных я бы использовал :).
Ответ №1:
когда рекомендуется использовать привязку вывода, а когда загружать вручную (каковы преимущества/недостатки в каждом конкретном случае)?
Вот четкий обзор того, когда следует использовать привязки вывода и для какой службы какие функции предоставляются при использовании привязок вывода!
Как мы знаем, привязки не могут сосуществовать без триггеров функций Azure и 2 доступных типов привязок : ввода и вывода.
- Привязка вывода: Привязка вывода-это данные, которые отправляет ваша функция.
Давайте обсудим 2 способа использования привязки вывода: 1) Данные хранимой очереди из контейнера больших двоичных объектов действуют как сценарий привязки вывода
: Функция Azure-Триггер HTTP с использованием ядра EF. После сохранения данных в базу данных Очередь будет использоваться в качестве выходной привязки для сохранения данных в локальное хранилище. Во-вторых, при вставке данных в хранилище очередей будет создана другая функция. Здесь очередь действует как входная привязка, и данные очереди будут храниться в контейнере Blob-объектов в качестве выходной привязки. Контейнер больших двоичных объектов используется в качестве привязки вывода путем указания атрибута большого двоичного объекта для каждого триггера очереди.
Сценарий:
2) Очередь служебной шины из хранилища Azure, действующая в качестве выходной привязки Во-первых, при запуске HTTP-запроса тело HTTP-запроса будет отправлено в качестве запроса в очередь серверной шины с использованием выходной привязки. Во-вторых, после отправки сообщения в очередь шины сервера будет запущена функция, и данные будут записаны в приложении.
Вот статья в блоге, в которой подробно описаны случаи использования и функции каждой службы.
Если вы хотите отправлять каждое сообщение только в одно место назначения или хотите как можно быстрее написать код, очередь хранения может быть лучшим вариантом. В противном случае очереди служебных шин предоставляют гораздо больше возможностей и гибкости.