Нужно ли дублировать мой экземпляр веб-задания Azure для повышения гибкости? - PullRequest
0 голосов
/ 19 мая 2019

Я получил веб-задание с несколькими подпрограммами, и для выполнения определенной подпрограммы имя подпрограммы передается в качестве аргумента задания.Все эти подпрограммы должны быть выполнены, и между ними существует зависимость (входные данные подпрограммы могут быть выходными данными другой подпрограммы);поэтому для организации этого я планирую использовать приложение логики , которое на самом деле будет вызывать одно и то же веб-задание, но с передачей других параметров.

Выполнив все вышеперечисленное, я получуодин экземпляр веб-задания, и я буду контролировать поток работ с помощью приложения логики. Но вот мое беспокойство ... давайте предположим, что я хочу выполнить только определенную подпрограмму (которая автономна, не зависит от другой подпрограммы) , потому что она не удалась (или, может быть, я хочу отладить его) , поэтому мне нужно зайти на портал веб-заданий в Azure и скопировать URL-адрес веб-ловушки задания, установить параметры задания в качестве параметров запроса для вызова желаемой подпрограммы изатем вызовите его через HTTP-клиент.Но проблема, с которой я сталкиваюсь, заключается в том, что это не так дружелюбно: мне нужно сделать все эти вещи для вызова рутины конкретной работы.

Чтобы решить мою вышеуказанную проблему, я планировал дублировать экземпляр задания (термин дублирования, используемый здесь, предназначен не для масштабирования, а для гибкости), и жестко закодируйте имя подпрограммы в каждом дублировании задания.Единственные плюсы, которые я вижу, - это запустить определенную процедуру, просто перейдя непосредственно к соответствующему экземпляру задания и нажав кнопку «Выполнить» (портал Azure).Но также и минусы, которые я вижу здесь, заключаются в том, что я дублирую один и тот же исходный код (те же двоичные файлы), но просто передаю другой параметр (в данном случае имя подпрограммы), поэтому с точки зрения удобства сопровождения, это боль, потому что есличто-то меняется в исходном коде задания, я должен повторно развернуть «количество подпрограмм» для согласованности (все задания выполняются с одним и тем же исходным кодом).

Поэтому я должен пожертвовать обслуживаемость кода (повторно использовать один и тот же исходный код и играть с параметрами задания), чтобы получить удобный способ выполнения задания, или нет?Я хотел бы услышать ваше мнение!Если нужно больше информации, пожалуйста, дайте мне знать!

1 Ответ

0 голосов
/ 20 мая 2019

Если вы можете выбрать способ запуска задания, я бы взглянул на использование Service Bus вместо приложений логики для обработки цепочки. Вы можете использовать разные очереди на одной и той же шине для обработки вызовов другой части вашего веб-задания, и параметры, которые вы хотите передать, могут быть заданы в сообщении вместо параметров http. Основным преимуществом здесь является то, что он включает в себя логику повторных попыток. Если задание не выполняется, сообщение возвращается в очередь для повторного запуска. Вы можете настроить его так, чтобы он повторял определенное количество раз (по умолчанию 10), прежде чем сообщение будет перемещено в очередь недоставленных сообщений. Если вы хотите выполнить некоторый поток управления вне веб-задания, вы можете оставить приложение логики в игре: веб-задание => приложение логики => служебная шина => вернуться к веб-заданию.

Если вы хотите, чтобы за один раз работала только одна копия службы, вам нужно придерживаться веб-заданий, но вы можете вместо этого взглянуть на Функции Azure . Они предназначены для выполнения небольших задач такого рода и могут быть объединены внутри, с помощью приложений логики или с помощью служебной шины. Он построен поверх SDK Web Jobs, поэтому в большинстве случаев изменения кода минимальны. Я не могу сказать наверняка, так как я не видел ваш код, но, скорее всего, вы бы разбили каждую работу на отдельные функции вместо использования параметров.

...