Предназначен ли пакет SDK для веб-заданий Azure специально для работы со службой хранилища Azure?

Вся документация (например, http://azure.microsoft.com/en-us/documentation/articles/websites-dotnet-webjobs-sdk-get-started/), а примеры проектов для пакета SDK веб-заданий Azure относятся к перехватчикам и привязкам к хранилищу Azure (таблицы , Блоги и очереди). Я заинтересован в использовании WebJobs для функций, которые не имеют ничего общего с этими механизмами хранения, например, для выполнения вычислений, вызова служб или их использования с другими службами хранения, для которых в SDK WebJobs нет ловушек. Есть ли вообще смысл в использовании SDK WebJobs в этих случаях? У меня сложилось (возможно, неправильное) впечатление, что sdk дал вам ряд других преимуществ для управления выполнением самих заданий, таких как контроль над запуском с блокировкой в ​​одном потоке по сравнению с запуском в фоновом режиме и т. Д., Возможно, операционные хуки, связанные с запуск и остановка заданий, а также некоторые перехватчики в Visual Studio и т. д. Я знаю, что могу загружать автономные EXE-файлы и файлы сценариев и запускать их как веб-задания, но я также предположил, что выполнение таким образом было более непрозрачным и давало вам меньшую видимость задания выполнения, а также дает меньше программных возможностей для управления ими.

Есть ли причина использовать SDK WebJobs вне его привязок к службам хранения таблиц, блогов и очередей Azure? Если да, то где эта документация?


person Emilio    schedule 11.08.2014    source источник
comment
Я переместил свой код WorkerRole почти без изменений. Я не включил SDK WebJobs в свой проект. Нет причин использовать его, если он вам не нужен.   -  person trailmax    schedule 12.08.2014
comment
@trailmax - Вы просто загрузили код вручную через портал или сделали это из Visual Studio?   -  person Emilio    schedule 12.08.2014
comment
У меня есть процедура PowerShell, которая включает веб-задание как часть пакета сайта и развертывает его с помощью команд Azure PowerShell.   -  person trailmax    schedule 12.08.2014


Ответы (3)


Ниже приведены некоторые дополнительные сведения, которые, я надеюсь, ответят на ваш вопрос.

Пакет SDK для веб-заданий имеет систему привязки и триггера, которая работает с большими двоичными объектами хранилища Microsoft Azure, очередями и таблицами, а также со служебной шиной. Система привязки упрощает написание кода, который читает или записывает объекты хранилища Microsoft Azure с использованием типов BCL. Система триггеров вызывает функцию в вашем коде всякий раз, когда какие-либо новые данные поступают в очередь или большой двоичный объект.

SDK также предоставляет обширные возможности диагностики и мониторинга, не требуя от разработчика написания кода диагностики и ведения журнала.

Прямо сейчас у нас есть триггеры для определенных систем, таких как упомянутые выше, но вы можете написать больше триггеров и привязок самостоятельно. Мы будем опираться на этот сценарий и в будущем предоставим богатую историю расширяемости, чтобы вы могли писать триггеры для своей собственной системы / сценария, например SqlServer и других.

Ниже приведен пример случая, когда вам не нужно использовать службу хранилища Azure. Этот прототип показывает FileWatcher, который показывает, как можно запустить функцию при обнаружении нового файла в каталоге. https://github.com/rustd/WebJobsSDKSamples/tree/master/FileWatcher

Вы также можете использовать JobHost.RunOnBackgroundThread или JobHost.Call () для обработки чего-либо в фоновом режиме. SDK даст вам возможность вести журнал, управлять выполнением этих функций, например отменять эти функции, если они выполняются долго и никогда не завершаются, без необходимости убивать процесс. Вскоре мы добавим поддержку асинхронного режима, чтобы ваши функции также могли возвращать Task.

Вы можете использовать SDK в WebJobs. Платформа WebJobs дает вам управление процессами, например запуск / остановку веб-задания, и другие преимущества, такие как масштабирование веб-задания и многое другое.

Как вы упомянули, если вы просто загружаете автономные EXE-файлы, вы не получите столько информации о функциях и журналах.

person pranav rastogi    schedule 12.08.2014
comment
Ваш ответ - именно то разъяснение, которое я искал. Теперь я понимаю, что использование пакета SDK для веб-заданий дает мне возможности, помимо привязок и триггеров для службы хранилища Azure. - person Emilio; 12.08.2014
comment
Привет, @rustd! JobHost.RunOnBackgroundThread должен быть закрытым методом, они представлены в: Microsoft.Azure.WebJobs.Host.dll, v1.0.0.0 off Nuget: public Task StartAsync(CancellationToken cancellationToken = null); public Task StopAsync(); Известно ли вам о каких-либо примерах WebJob с использованием Async? - person OzBob; 04.12.2014

Чтобы использовать функцию веб-заданий на веб-сайтах Azure, вам не нужно использовать SDK для веб-заданий.

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

person Amit Apple    schedule 12.08.2014
comment
Спасибо за ответ - я ценю это. Я видел, как вы давали аналогичные ответы в других сообщениях, однако ваше заявление WebJobs SDK о поддержке очередей хранилища Azure, больших двоичных объектов, таблиц и очередей служебной шины Azure вводит в заблуждение (я говорю это конструктивно). Следует сказать, что пакет SDK для веб-заданий поддерживает очереди хранилища Azure, большие двоичные объекты, таблицы и очереди служебной шины Azure КАК ТРИГГЕРНЫЕ МЕХАНИЗМЫ. Судя по вашему утверждению, человек, не имеющий опыта работы с WebJobs, может подумать, что он даже не может получить доступ к базам данных SQL из WebJobs, что неверно. - person Emilio; 12.08.2014
comment
Я отредактировал ваш ответ, но когда я пошел редактировать свой комментарий к вам, чтобы указать это, он не позволил мне, отсюда и этот новый комментарий. - person Emilio; 12.08.2014
comment
Как упоминает Виктор, SDK WebJobs - это больше, чем просто механизм запуска на основе хранилища / служебной шины Azure, он также поддерживает вывод в хранилище Azure и имеет отличный механизм ведения журнала, мой ответ только о том, нужно ли вам использовать SDK WebJobs < / b> когда не используется хранилище Azure. - person Amit Apple; 13.08.2014
comment
Я просто хочу сказать, что ваше заявление будет вводить в заблуждение многих людей, не имеющих опыта работы с WebJobs. Я думаю, вы близки к этому, поэтому вы, возможно, не учитываете их точку зрения. Я видел множество ответов в Интернете (в ответ на то, что вы сделали такое же заявление в другом месте или от других людей, заявивших то же самое), в которых говорилось: «Итак, я не могу использовать SQL Azure из WebJobs?» Да, я знаю, вы говорите, что SDK поддерживает только хранилище Azure, но большинство людей читают это, поскольку веб-задания поддерживают только хранилище Azure. Просто предлагаю вам немного изменить свой ответ, чтобы прояснить это. - person Emilio; 14.08.2014
comment
Кроме того, здесь stackoverflow.com/questions/21758043/ - это тот случай, когда OP говорит, что этот поток SO указывает, что WebJobs не поддерживает базу данных SQL ... Он отвечает, что Потому что, отвечая на этот вопрос, Виктор говорит, что, к сожалению, SDK WebJobs не поддерживает базы данных SQL. Он поддерживает только хранилище Azure (большие двоичные объекты, очереди и таблицы), что, как указано в вашем ответе, сбило с толку OP. - person Emilio; 14.08.2014
comment
Я понимаю и принимаю ваш комментарий, он довольно запутанный, и я готов изменить свой ответ, просто последний комментарий о том, что только запускающая часть не соответствует действительности, первая строка должна его обобщить Для использования веб-сайтов Azure Функция WebJobs, вам не нужно использовать SDK WebJobs - person Amit Apple; 14.08.2014

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

person Victor Hurdugaci    schedule 12.08.2014