Рабочая роль против веб-задания
из того, что я понимаю, оба запускают небольшие повторяющиеся задачи в облаке.
какие причины и в каких ситуациях я могу выбрать один из них?
3 ответа:
основная информация:
WebJobs хороши для легких рабочих элементов, которые не нуждаются в настройке среды, в которой они работают, и не потребляют очень много ресурсов. Они также очень хороши для задач, которые нужно только запускать периодически, по расписанию или запускать. Они дешевы и просты в настройке/запуске. Они работают в контексте вашего сайта, что означает, что вы получаете ту же среду, в которой работает ваш сайт, и любые ресурсы, которые они используют ресурсы, которые ваш сайт не может использовать.
Роли Работника хороши для более интенсивной нагрузки ресурса, или если вам нужно изменить среду, в которой они работают (т. е. конкретная версия .NET framework или что-то, установленное в ОС). Рабочие роли стоят дороже и немного сложнее в настройке и запуске, но они предлагают значительно больше мощности.
В общем, я бы начал с WebJobs, а затем перейти к рабочим ролям, если вы найдете, что ваша рабочая нагрузка требует больше, чем WebJobs может предложить.
Если мы должны измерять "мощность" как вычислительную мощность, то в виртуальной среде это означает, сколько слоев находится поверх физической машины (металла). Код пользователя на виртуальной машине выполняется поверх гипервизора, который управляет физической машиной. Это самый толстый слой. Когда это возможно, гипервизор пытается просто служить проходом к металлу.
существует принципиально мало накладных расходов для WebJobs. Он изолирован, ОС поддерживается, и есть службы и модули, чтобы убедиться, что он работает. Но код приложения по существу так же близок к металлу, как и в рабочих ролях, поскольку они используют один и тот же гипервизор.
Если вы хотите измерить "гибкость", то используйте рабочие роли, так как он не управляется или изолирован, он более гибкий. Вы можете использовать больше сокетов, определять свою собственную среду, устанавливать больше пакетов и т. д.
Если ты хочешь "компоненты", задания есть полный набор особенности. В том числе, виртуальная сеть для ресурсов on-prem, промежуточные среды, удаленная отладка, запуск, планирование, простое подключение к хранилищу и служебной шине и т. д...
большинство людей хотят сосредоточиться на решении своей проблемы, а не инвестировать время в инфраструктуру. Для этого вы используете веб-заданий. Если вы обнаружите, что вам нужна большая гибкость, или песочница безопасности не позволяет вам делать то, что не может быть выполнено каким-либо другим способом, перейдите к рабочим ролям.
можно даже построить гибридные решения, где некоторые части выполняются в WebJobs, а другие-в рабочих ролях, но это выходит за рамки этого вопроса. (подсказка: WebJobs SDK)
Что-то нужно помнить при выборе использования веб-задания или рабочей роли:
рабочая роль размещается самостоятельно на выделенной виртуальной машине, веб-задание размещается в контейнере веб-приложения.
рабочая роль будет масштабироваться независимо, веб-задание будет масштабироваться вместе с контейнером веб-приложения.
веб-задания идеально подходят для опроса RSS-каналов, проверки и обработки сообщений, а также для отправки уведомлений, они легкий и дешевле, чем рабочие роли, но менее мощные.