Роль рабочего против веб-работы

Из того, что я понимаю, выполняются небольшие повторяющиеся задачи в облаке.

Какие причины и в каких ситуациях я могу выбрать один из них?

Ответ 1

Основная информация:

WebJobs хороши для легких рабочих элементов, которые не нуждаются в настройке среды, в которой они работают, и не потребляют очень много ресурсов. Они также очень хороши для задач, которые нужно запускать только периодически, по расписанию или запускаться. Они дешевы и просты в настройке/запуске. Они запускаются в контексте вашего веб-сайта, что означает, что вы получаете ту же среду, на которой работает ваш веб-сайт, и любые ресурсы, которые они используют, являются ресурсами, которые ваш веб-сайт не может использовать.

Роли рабочих хороши для более ресурсоемких рабочих нагрузок или если вам нужно изменить среду, в которой они работают (например, конкретная версия .NET framework или что-то, установленное в ОС). Роли рабочих более дороги и немного сложнее настроить и запустить, но они предлагают значительно большую мощность.

В общем, я бы начал с WebJobs, а затем переместился в "Роли рабочих", если вы обнаружите, что ваша рабочая нагрузка требует больше, чем WebJobs может предложить.

Ответ 2

Если мы должны измерить "власть" как вычислительную мощность, то в виртуальной среде это переводит к тому, сколько слоев находится поверх физической машины (металла). Код пользователя на виртуальной машине работает поверх гипервизора, который управляет физической машиной. Это самый толстый слой. По возможности гипервизор пытается просто служить прохождением металла.

В WebJobs есть принципиально небольшие накладные расходы. Он изолирован песочницей, OS поддерживается, и есть службы и модули, чтобы убедиться, что он работает. Но код приложения по существу близок к металу, как и в "Ролях рабочих", поскольку они используют один и тот же гипервизор.

Если то, что вы хотите измерить, является "гибкостью", затем используйте "Роли рабочих", поскольку оно не управляется или изолировано, оно более гибкое. Вы можете использовать больше сокетов, определить свою собственную среду, установить больше пакетов и т.д.

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

Большинство людей хотят сосредоточиться на решении своей проблемы, а не инвестировать время в инфраструктуру. Для этого вы используете WebJobs. Если вы обнаружите, что вам нужна большая гибкость, или изолированная среда безопасности не позволяет вам делать что-то, что не может быть выполнено каким-либо другим способом, перейдите к "Роли рабочих".

Можно даже создавать гибридные решения, где некоторые части выполняются в WebJobs, а другие - в Ролях Рабочих, но это выходит за рамки этого вопроса. (подсказка: SDK WebJobs)

Ответ 3

Признание при выборе использования веб-задания или роли рабочего:

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

  • Роль рабочего будет масштабироваться независимо, веб-задание будет масштабироваться вместе с контейнером веб-приложения.

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