{"id":201840,"date":"2013-11-13T09:09:03","date_gmt":"2013-11-13T05:09:03","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=201840"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=201840","title":{"rendered":"<span class=\"post_title\">CRON \u0432 \u043e\u0431\u043b\u0430\u043a\u0435: \u043f\u043e\u043b\u043d\u043e\u0435 \u0440\u0443\u043a\u043e\u0432\u043e\u0434\u0441\u0442\u0432\u043e \u043f\u043e \u043d\u043e\u0432\u043e\u043c\u0443 \u0441\u0435\u0440\u0432\u0438\u0441\u0443 \u043f\u043b\u0430\u043d\u0438\u0440\u043e\u0432\u0449\u0438\u043a\u0430 \u0437\u0430\u0434\u0430\u0447 Windows Azure Scheduler<\/span>"},"content":{"rendered":"<div class=\"content html_format\">       <a href=\"http:\/\/www.windowsazure.com\/en-us\/pricing\/free-trial\/?WT.mc_id=A398D1F7B\"><img decoding=\"async\" alt=\"image\" src=\"http:\/\/habr.habrastorage.org\/post_images\/5d6\/f02\/fa8\/5d6f02fa8263beb3e216389a9397974e.jpg\"\/><\/a><\/p>\n<p>  \u0412\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 \u0437\u0430\u0434\u0430\u0447 \u043f\u043e \u0440\u0430\u0441\u043f\u0438\u0441\u0430\u043d\u0438\u044e \u0432 Windows Azure \u0432\u0441\u0435\u0433\u0434\u0430 \u0431\u044b\u043b\u043e \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e\u0439 \u0442\u0435\u043c\u043e\u0439 \u0441 \u0440\u044f\u0434\u043e\u043c \u0433\u043e\u0442\u043e\u0432\u044b\u0445 \u0440\u0435\u0448\u0435\u043d\u0438\u0439, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u043e\u043c\u043e\u0433\u0430\u043b\u0438 \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0440\u0430\u0431\u043e\u0442\u0443 \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e: <a href=\"http:\/\/www.windowsazure.com\/en-us\/develop\/mobile\/tutorials\/schedule-backend-tasks\/\">\u043f\u043b\u0430\u043d\u0438\u0440\u043e\u0432\u0449\u0438\u043a \u043c\u043e\u0431\u0438\u043b\u044c\u043d\u044b\u0445 \u0441\u0435\u0440\u0432\u0438\u0441\u043e\u0432<\/a>, Quartz Scheduler, <a href=\"https:\/\/github.com\/jgeurts\/FluentScheduler\">FluentScheduler<\/a>, <a href=\"https:\/\/github.com\/NuGet\/WebBackgrounder\">WebBackgrounder<\/a>, <a href=\"http:\/\/msdn.microsoft.com\/en-us\/library\/microsoft.servicebus.messaging.brokeredmessage.scheduledenqueuetimeutc.aspx\">ScheduledEnqueueTimeUtc<\/a> \u0438 \u0442.\u0434. \u0425\u043e\u0442\u044f \u0432\u044b \u043c\u043e\u0433\u043b\u0438 \u0443\u0441\u043f\u0435\u0448\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u044d\u0442\u0438 \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u044b, \u043d\u0430 \u0441\u0430\u043c\u043e\u043c \u0434\u0435\u043b\u0435 \u043e\u043d\u0438 \u043d\u0435 \u0431\u044b\u043b\u0438 \u043f\u0440\u0435\u0434\u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u044b \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u043e \u0434\u043b\u044f \u0432\u0430\u0448\u0438\u0445 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439 Windows Azure, \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0449\u0438\u0445 \u043d\u0430 \u0431\u0430\u0437\u0435 \u0440\u043e\u043b\u0435\u0439 \u043e\u0431\u043b\u0430\u0447\u043d\u044b\u0445 \u0441\u0435\u0440\u0432\u0438\u0441\u043e\u0432 \u0438\u043b\u0438 \u0432\u0435\u0431-\u0441\u0430\u0439\u0442\u043e\u0432.<\/p>\n<p>  \u0418\u043c\u0435\u043d\u043d\u043e \u043f\u043e \u044d\u0442\u043e\u0439 \u043f\u0440\u0438\u0447\u0438\u043d\u0435, \u043f\u043e\u0447\u0442\u0438 \u0433\u043e\u0434 \u043d\u0430\u0437\u0430\u0434, \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u044f Aditi \u0430\u043d\u043e\u043d\u0441\u0438\u0440\u043e\u0432\u0430\u043b\u0430 \u0441\u0432\u043e\u0439 \u043d\u043e\u0432\u044b\u0439 \u0441\u0435\u0440\u0432\u0438\u0441 \u2013 \u043c\u0430\u0441\u0448\u0442\u0430\u0431\u0438\u0440\u0443\u0435\u043c\u044b\u0439 \u043f\u043b\u0430\u043d\u0438\u0440\u043e\u0432\u0449\u0438\u043a \u0437\u0430\u0434\u0430\u0447, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0431\u044b\u043b \u043f\u043e\u0441\u0442\u0440\u043e\u0435\u043d \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u043e \u0434\u043b\u044f \u0443\u0434\u043e\u0432\u043b\u0435\u0442\u0432\u043e\u0440\u0435\u043d\u0438\u044f \u043f\u043e\u0442\u0440\u0435\u0431\u043d\u043e\u0441\u0442\u0435\u0439 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439 \u0437\u0430\u043f\u0443\u0449\u0435\u043d\u043d\u044b\u0445 \u0432 Windows Azure. <a href=\"https:\/\/www.windowsazure.com\/en-us\/store\/service\/?id=53765649-ba4b-4fe2-a834-21b334b551e2\">Aditi Scheduler<\/a> \u0431\u044b\u043b \u0441\u043e\u0437\u0434\u0430\u043d <a href=\"http:\/\/dunnry.com\/blog\/2013\/01\/29\/AnatomyOfAScalableTaskScheduler.aspx\">Ryan Dunn<\/a> \u2013 \u043b\u0435\u0433\u0435\u043d\u0434\u043e\u0439 \u0438\u0437 \u043a\u043e\u043c\u0430\u043d\u0434\u044b Windows Azure, <a href=\"http:\/\/blog.aditi.com\/cloud\/scheduler-2-0-celebrating-500000-jobs-with-new-features-plans\/\">\u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043c\u0435\u0441\u044f\u0446\u0435\u0432 \u043d\u0430\u0437\u0430\u0434<\/a> \u0441\u0435\u0440\u0432\u0438\u0441 \u043e\u0442\u043f\u0440\u0430\u0437\u0434\u043d\u043e\u0432\u0430\u043b \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 500000 \u0437\u0430\u0434\u0430\u0447\u0438 \u0438 \u0434\u043e\u0431\u0430\u0432\u0438\u043b \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0443 \u043e\u0447\u0435\u0440\u0435\u0434\u0435\u0439 \u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0430 Windows Azure Storage Queues.<\/p>\n<p>  \u041d\u043e \u043d\u0435\u0434\u0430\u0432\u043d\u043e Microsoft \u0430\u043d\u043e\u043d\u0441\u0438\u0440\u043e\u0432\u0430\u043b\u0430 \u043f\u0440\u0435\u043a\u0440\u0430\u0441\u043d\u0443\u044e \u0430\u043b\u044c\u0442\u0435\u0440\u043d\u0430\u0442\u0438\u0432\u0443 Aditi Scheduler \u2013 \u043d\u043e\u0432\u044b\u0439 \u0441\u0435\u0440\u0432\u0438\u0441 Windows Azure Scheduler:<\/p>\n<blockquote><p><em><strong>Windows Azure Scheduler <\/strong>\u043f\u043e\u0437\u0432\u043e\u043b\u0438\u0442 \u0432\u0430\u043c \u043e\u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043b\u044f\u0442\u044c \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0435 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f, \u0442\u0430\u043a\u0438\u0435 \u043a\u0430\u043a HTTP\/S-\u0437\u0430\u043f\u0440\u043e\u0441\u044b \u0438\u043b\u0438 \u043e\u0442\u043f\u0440\u0430\u0432\u043a\u0430 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0439 \u0432 \u043e\u0447\u0435\u0440\u0435\u0434\u044c \u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0430, \u043f\u043e \u0440\u0430\u0441\u043f\u0438\u0441\u0430\u043d\u0438\u044e. \u0421 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043f\u043b\u0430\u043d\u0438\u0440\u043e\u0432\u0449\u0438\u043a\u0430 \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0442\u044c \u0437\u0430\u0434\u0430\u0447\u0438 \u0432 \u043e\u0431\u043b\u0430\u043a\u0435, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0433\u0430\u0440\u0430\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e \u0432\u044b\u0437\u043e\u0432\u0443\u0442 \u0441\u0435\u0440\u0432\u0438\u0441\u044b \u043a\u0430\u043a \u0432\u043d\u0443\u0442\u0440\u0438 \u043e\u0431\u043b\u0430\u0447\u043d\u043e\u0439 \u0438\u043d\u0444\u0440\u0430\u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b, \u0442\u0430\u043a \u0438 \u0441\u043d\u0430\u0440\u0443\u0436\u0438 \u043d\u0435\u0435. \u0412\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0442\u044c \u044d\u0442\u0438 \u0437\u0430\u0434\u0430\u0447\u0438 \u043f\u043e \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043d\u0438\u044e \u0438\u043b\u0438 \u043d\u0430 \u0440\u0435\u0433\u0443\u043b\u044f\u0440\u043d\u043e\u0439 \u043e\u0441\u043d\u043e\u0432\u0435 \u043f\u043e \u0440\u0430\u0441\u043f\u0438\u0441\u0430\u043d\u0438\u044e, \u0430 \u0442\u0430\u043a \u0436\u0435 \u043d\u0430\u0437\u043d\u0430\u0447\u0438\u0442\u044c \u0438\u0441\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 \u043d\u0430 \u043a\u0430\u043a\u0443\u044e-\u0442\u043e \u0434\u0430\u0442\u0443 \u0432 \u0431\u0443\u0434\u0443\u0449\u0435\u043c.<\/em><\/p><\/blockquote>\n<p>  \u0414\u0430\u0432\u0430\u0439\u0442\u0435 \u043f\u043e\u0437\u043d\u0430\u043a\u043e\u043c\u0438\u043c\u0441\u044f \u0441 \u043d\u043e\u0432\u044b\u043c \u0441\u0435\u0440\u0432\u0438\u0441\u043e\u043c \u043f\u043e\u0431\u043b\u0438\u0436\u0435.<br \/>  <a name=\"habracut\"><\/a>  <\/p>\n<h3>\u0410\u043a\u0442\u0438\u0432\u0430\u0446\u0438\u044f \u043f\u0440\u0435\u0432\u044c\u044e-\u0441\u0435\u0440\u0432\u0438\u0441\u0430<\/h3>\n<p>  \u0421\u0435\u0440\u0432\u0438\u0441 Windows Azure Scheduler \u0432 \u043d\u0430\u0441\u0442\u043e\u044f\u0449\u0438\u0439 \u043c\u043e\u043c\u0435\u043d\u0442 \u0434\u043e\u0441\u0442\u0443\u043f\u0435\u043d \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u043f\u0440\u0435\u0432\u044c\u044e, \u0442\u0430\u043a \u0447\u0442\u043e \u0434\u043b\u044f \u0435\u0433\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u0432\u044b \u0434\u043e\u043b\u0436\u043d\u044b \u043f\u043e\u0434\u043f\u0438\u0441\u0430\u0442\u044c\u0441\u044f \u043d\u0430 \u043d\u0435\u0433\u043e \u043d\u0430 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0435 \u043f\u0440\u0435\u0434\u0432\u0430\u0440\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0445 \u0441\u0435\u0440\u0432\u0438\u0441\u043e\u0432: <a href=\"http:\/\/www.windowsazure.com\/en-us\/services\/preview\/\">http:\/\/www.windowsazure.com\/en-us\/services\/preview\/<\/a>. <\/p>\n<p>  <img decoding=\"async\" title=\"Step1-PreviewFeature\" src=\"http:\/\/habr.habrastorage.org\/post_images\/730\/07c\/59b\/73007c59bc671f9941966ce17e907b2d.png\"\/><\/p>\n<p>  \u0423\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0441\u0435\u0440\u0432\u0438\u0441\u043e\u043c \u043f\u043e\u043a\u0430 \u043d\u0435\u0434\u043e\u0441\u0442\u0443\u043f\u043d\u043e \u0432 \u043f\u043e\u0440\u0442\u0430\u043b\u0435 \u0430\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f Windows Azure. \u0415\u0434\u0438\u043d\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u043c \u0441\u043f\u043e\u0441\u043e\u0431\u043e\u043c \u0432\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f \u0441 \u043f\u043b\u0430\u043d\u0438\u0440\u043e\u0432\u0449\u0438\u043a\u043e\u043c \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043e\u0442\u043a\u0440\u044b\u0442\u044b\u0439 REST API \u0438\u043b\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u0433\u043e\u0442\u043e\u0432\u043e\u0433\u043e SDK. API \u0441\u0435\u0440\u0432\u0438\u0441\u0430 \u0434\u0435\u0442\u0430\u043b\u044c\u043d\u043e \u043e\u043f\u0438\u0441\u0430\u043d\u044b \u043d\u0430 MSDN \u0432 \u0440\u0430\u0437\u0434\u0435\u043b\u0435 <a href=\"http:\/\/msdn.microsoft.com\/en-us\/library\/windowsazure\/dn528946.aspx\">Scheduler REST API Reference<\/a>.<\/p>\n<h3>\u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 SDK<\/h3>\n<p>  Scheduler SDK \u0434\u043e\u0441\u0442\u0443\u043f\u0435\u043d \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 NuGet-\u043f\u0430\u043a\u0435\u0442\u0430 (\u0432 \u043f\u0435\u0440\u0432\u044c\u044e-\u0432\u0435\u0440\u0441\u0438\u0438) \u0438 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0447\u0430\u0441\u0442\u044c\u044e \u043d\u043e\u0432\u044b\u0445 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f <a href=\"http:\/\/blogs.msdn.com\/b\/vyunev\/archive\/2013\/11\/10\/windows-azure-management-libraries-net.aspx\">Windows Azure Management Libraries<\/a>, \u0432\u044b\u043f\u0443\u0449\u0435\u043d\u043d\u044b\u0445 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u0432\u0440\u0435\u043c\u044f \u043d\u0430\u0437\u0430\u0434. \u0414\u043b\u044f \u043d\u0430\u0447\u0430\u043b\u0430 \u0432\u0430\u043c \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u043f\u0430\u043a\u0435\u0442:  <\/p>\n<blockquote><p> <em>PM&gt; Install-Package Microsoft.WindowsAzure.Management.Scheduler \u2013Pre<\/em>  <\/p><\/blockquote>\n<h3>\u041d\u0430\u0447\u0438\u043d\u0430\u0435\u043c \u0440\u0430\u0431\u043e\u0442\u0443<\/h3>\n<p>  \u0414\u043b\u044f \u0442\u043e\u0433\u043e \u0447\u0442\u043e\u0431\u044b \u0431\u044b\u0441\u0442\u0440\u043e \u043f\u0440\u043e\u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043d\u043e\u0432\u044b\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b \u0444\u0430\u0439\u043b \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043a \u043f\u0443\u0431\u043b\u0438\u043a\u0430\u0446\u0438\u0438 Windows Azure (\u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0437\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u044c <a href=\"https:\/\/manage.windowsazure.com\/publishsettings\/index?client=vsserverexplorer&amp;amp;schemaversion=2.0\">\u043e\u0442\u0441\u044e\u0434\u0430<\/a>). \u0421\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 \u043a\u043b\u0430\u0441\u0441 \u0438\u0437\u0432\u043b\u0435\u043a\u0430\u0435\u0442 \u0434\u0430\u043d\u043d\u044b\u0435 \u0438\u0437 \u0444\u0430\u0439\u043b\u0430 \u0438 \u0441\u043e\u0437\u0434\u0430\u0435\u0442 \u043d\u0430 \u0438\u0445 \u0431\u0430\u0437\u0435 \u043e\u0431\u044a\u0435\u043a\u0442 CertificateCloudCredentials, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0434\u043b\u044f \u0430\u0443\u0442\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438 \u043f\u0440\u0438 \u0440\u0430\u0431\u043e\u0442\u0435 \u0441 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u043e\u0439 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f:<\/p>\n<pre><code>public static class CertificateCloudCredentialsFactory  {       public static CertificateCloudCredentials FromPublishSettingsFile(string path, string subscriptionName)       {           var profile = XDocument.Load(path);           var subscriptionId = profile.Descendants(&quot;Subscription&quot;)               .First(element =&gt; element.Attribute(&quot;Name&quot;).Value == subscriptionName)               .Attribute(&quot;Id&quot;).Value;           var certificate = new X509Certificate2(               Convert.FromBase64String(profile.Descendants(&quot;PublishProfile&quot;).Descendants(&quot;Subscription&quot;).Single().Attribute(&quot;ManagementCertificate&quot;).Value));           return new CertificateCloudCredentials(subscriptionId, certificate);       }  }<\/code><\/pre>\n<p>  \u0418\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u044d\u0442\u043e\u0433\u043e \u043a\u043b\u0430\u0441\u0441\u0430 \u2013 \u043e\u0447\u0435\u043d\u044c \u043f\u0440\u043e\u0441\u0442\u0430\u044f \u0437\u0430\u0434\u0430\u0447\u0430:<\/p>\n<pre><code>var publishSettingsFilePath = @&quot;D:\\\\azdem.publishsettings&quot;;  var subscriptionName = &quot;Azdem194D92901Y&quot;;  var credentials = CertificateCloudCredentialsFactory           .FromPublishSettingsFile(publishSettingsFilePath, subscriptionName);<\/code><\/pre>\n<p>  \u0421\u0435\u0440\u0432\u0438\u0441 \u043f\u043b\u0430\u043d\u0438\u0440\u043e\u0432\u0449\u0438\u043a\u0430 \u0437\u0430\u0434\u0430\u0447 \u0438\u0441\u043f\u043e\u043b\u043d\u044f\u0435\u0442\u0441\u044f \u0432 \u043e\u0431\u043b\u0430\u0447\u043d\u043e\u043c \u0441\u0435\u0440\u0432\u0438\u0441\u0435 (Cloud Service), \u0438\u043c\u0435\u043d\u043d\u043e \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043c\u044b \u043d\u0430\u0447\u0430\u043b\u0438 \u0441 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u043e\u0431\u043b\u0430\u0447\u043d\u043e\u0433\u043e \u0441\u0435\u0440\u0432\u0438\u0441\u0430. \u0412 \u043d\u0430\u0441\u0442\u043e\u044f\u0449\u0438\u0439 \u043c\u043e\u043c\u0435\u043d\u0442 \u0432\u044b \u0434\u043e\u043b\u0436\u043d\u044b \u0443\u0447\u0438\u0442\u044b\u0432\u0430\u0442\u044c \u043e\u0434\u0438\u043d \u043c\u043e\u043c\u0435\u043d\u0442: \u0441\u043e\u0437\u0434\u0430\u043d\u043d\u044b\u0439 \u043e\u0431\u043b\u0430\u0447\u043d\u044b\u0439 \u0441\u0435\u0440\u0432\u0438\u0441 \u0434\u043e\u043b\u0436\u0435\u043d \u0440\u0430\u0441\u043f\u043e\u043b\u0430\u0433\u0430\u0442\u044c\u0441\u044f \u0432 \u0440\u0435\u0433\u0438\u043e\u043d\u0435, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u0441\u0435\u0440\u0432\u0438\u0441 Windows Azure Scheduler (\u043d\u0430 \u044d\u0442\u0430\u043f\u0435 \u043f\u0440\u0435\u0432\u044c\u044e \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0430 \u043b\u0438\u0448\u044c \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u043c\u0438 \u0438\u0437 \u0440\u0435\u0433\u0438\u043e\u043d\u043e\u0432, \u043d\u043e \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u044b\u0435 \u0431\u0443\u0434\u0443\u0442 \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u044b \u043f\u043e\u0437\u0434\u043d\u0435\u0435 \u0441 \u0432\u044b\u0445\u043e\u0434\u043e\u043c \u0441\u0435\u0440\u0432\u0438\u0441\u0430 \u0432 \u043a\u043e\u043c\u043c\u0435\u0440\u0447\u0435\u0441\u043a\u0443\u044e \u044d\u043a\u0441\u043f\u043b\u0443\u0430\u0442\u0430\u0446\u0438\u044e).<\/p>\n<pre><code>var cloudServiceClient = new CloudServiceManagementClient(credentials);  var result = cloudServiceClient.CloudServices.Create(&quot;sandrino-cs1&quot;, new CloudServiceCreateParameters()  {       Description = &quot;sandrino-cs1&quot;,       GeoRegion = &quot;north europe&quot;,       Label = &quot;sandrino-cs1&quot;  });     Console.WriteLine(result.Status);  Console.WriteLine(result.HttpStatusCode);<\/code><\/pre>\n<p>  <\/p>\n<h3>\u0420\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u0446\u0438\u044f \u043f\u0440\u043e\u0432\u0430\u0439\u0434\u0435\u0440\u0430 \u0440\u0435\u0441\u0443\u0440\u0441\u043e\u0432 \u043f\u043b\u0430\u043d\u0438\u0440\u043e\u0432\u0449\u0438\u043a\u0430 \u0437\u0430\u0434\u0430\u0447<\/h3>\n<p>  \u0418\u0437\u0432\u0435\u0441\u0442\u043d\u043e, \u0447\u0442\u043e \u043e\u0431\u043b\u0430\u0447\u043d\u044b\u0439 \u0441\u0435\u0440\u0432\u0438\u0441 \u043c\u043e\u0436\u0435\u0442 \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0442\u044c \u0432 \u0441\u0435\u0431\u0435 \u043a\u0430\u043a \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u044b\u0435 \u043c\u0430\u0448\u0438\u043d\u044b (IaaS), \u0442\u0430\u043a \u0438 \u0432\u0435\u0431- \u0438\u043b\u0438 \u0440\u0430\u0431\u043e\u0447\u0438\u0435 \u0440\u043e\u043b\u0438 (PaaS). \u041e\u0434\u043d\u0430\u043a\u043e, \u0441\u0435\u0439\u0447\u0430\u0441 \u043c\u044b \u043c\u043e\u0436\u0435\u043c \u0443\u0431\u0435\u0434\u0438\u0442\u044c\u0441\u044f \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e \u043e\u0431\u043b\u0430\u0447\u043d\u044b\u0439 \u0441\u0435\u0440\u0432\u0438\u0441 \u043c\u043e\u0436\u0435\u0442 \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0442\u044c \u0442\u0430\u043a \u0436\u0435 \u0438 &quot;\u041f\u0440\u043e\u0432\u0430\u0439\u0434\u0435\u0440 \u0420\u0435\u0441\u0443\u0440\u0441\u043e\u0432\u201d (Resource Provider), \u0442\u0430\u043a\u043e\u0439 \u043a\u0430\u043a Windows Azure Scheduler. \u0414\u043b\u044f \u0442\u043e\u0433\u043e \u0447\u0442\u043e\u0431\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043f\u043e\u0434\u043e\u0431\u043d\u044b\u0439 \u043f\u0440\u043e\u0432\u0430\u0439\u0434\u0435\u0440 \u0440\u0435\u0441\u0443\u0440\u0441\u043e\u0432 \u0432 \u0441\u0432\u043e\u0435\u043c \u043e\u0431\u043b\u0430\u0447\u043d\u043e\u043c \u0441\u0435\u0440\u0432\u0438\u0441\u0435 \u0441\u043d\u0430\u0447\u0430\u043b\u0430 \u0432\u0430\u043c \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0440\u0430\u0437\u0440\u0435\u0448\u0438\u0442\u044c \u0435\u0433\u043e \u0434\u043b\u044f \u0441\u0432\u043e\u0435\u0439 \u043f\u043e\u0434\u043f\u0438\u0441\u043a\u0438. \u0415\u0441\u043b\u0438 \u043d\u0435 \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u044d\u0442\u043e\u0433\u043e, \u0442\u043e \u0432\u044b \u0441\u0442\u043e\u043b\u043a\u043d\u0435\u0442\u0435\u0441\u044c \u0441\u043e \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0439 \u043e\u0448\u0438\u0431\u043a\u043e\u0439:  <\/p>\n<blockquote><p> <em>An unhandled exception of type \u2018Microsoft.WindowsAzure.CloudException\u2019 occurred in Microsoft.WindowsAzure.Management.Scheduler.dll<\/em><\/p>\n<p>  <em>Additional information: ForbiddenError: The subscription is not entitled to use the resource<\/em>  <\/p><\/blockquote>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u0434\u0430\u0432\u0430\u0439\u0442\u0435 \u0437\u0430\u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0438\u0440\u0443\u0435\u043c \u043f\u0440\u043e\u0432\u0430\u0439\u0434\u0435\u0440 \u043f\u043b\u0430\u043d\u0438\u0440\u043e\u0432\u0449\u0438\u043a\u0430 \u0437\u0430\u0434\u0430\u0447 (\u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u0446\u0438\u044f \u0434\u0435\u0439\u0441\u0442\u0432\u0443\u0435\u0442 \u0434\u043b\u044f \u0432\u0441\u0435\u0439 \u043f\u043e\u0434\u043f\u0438\u0441\u043a\u0438):<\/p>\n<pre><code>var schedulerServiceClient = new SchedulerManagementClient(credentials);  var result = schedulerServiceClient.RegisterResourceProvider();     Console.WriteLine(result.RequestId);  Console.WriteLine(result.StatusCode);  Console.ReadLine();<\/code><\/pre>\n<p>  \u041f\u043e\u0441\u043b\u0435 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u0446\u0438\u0438 \u043f\u0440\u043e\u0432\u0430\u0439\u0434\u0435\u0440\u0430 \u0440\u0435\u0441\u0443\u0440\u0441\u043e\u0432 \u043f\u043e\u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0437\u0430\u043f\u0440\u0430\u0448\u0438\u0432\u0430\u0442\u044c \u0435\u0433\u043e \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u0430:<\/p>\n<pre><code>var schedulerServiceClient = new SchedulerManagementClient(credentials);  var result = schedulerServiceClient.GetResourceProviderProperties();  foreach (var prop in result.Properties)  {       Console.WriteLine(prop.Key + &quot;: &quot; + prop.Value);  }  Console.ReadLine();<\/code><\/pre>\n<p>  \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0434\u0430\u043d\u043d\u044b\u0439 \u043a\u043e\u0434 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u043d\u0430\u043c \u0443\u0437\u043d\u0430\u0442\u044c \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b\u0435 \u0434\u043b\u044f \u0441\u0435\u0440\u0432\u0438\u0441\u0430 \u043f\u043b\u0430\u043d\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u0438 \u0440\u0435\u0433\u0438\u043e\u043d\u044b, \u0432 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0441\u0435\u0440\u0432\u0438\u0441 \u043c\u043e\u0436\u0435\u0442 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c:<\/p>\n<p>  <img decoding=\"async\" title=\"Step2-Properties\" src=\"http:\/\/habr.habrastorage.org\/post_images\/f13\/ccd\/1f2\/f13ccd1f250ca07ee2ecee4781263d18.png\"\/><\/p>\n<h3>\u041a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u0438 \u0437\u0430\u0434\u0430\u0447 (Job Collections)<\/h3>\n<p>  \u0421\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u043c \u0448\u0430\u0433\u043e\u043c \u0431\u0443\u0434\u0435\u0442 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u201c\u041a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u0438 \u0417\u0430\u0434\u0430\u0447\u201d (Job Collection), \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u043e\u043c \u0434\u043b\u044f \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u0432\u0430\u0448\u0438\u0445 \u0437\u0430\u0434\u0430\u0447 \u0438 \u043c\u0435\u0445\u0430\u043d\u0438\u0437\u043c\u043e\u043c \u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u043a \u043d\u0438\u043c \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0445 \u043a\u0432\u043e\u0442. \u041a\u0440\u043e\u043c\u0435 \u0442\u043e\u0433\u043e, \u044d\u0442\u043e \u0442\u043e \u043c\u0435\u0441\u0442\u043e, \u0433\u0434\u0435 \u0432\u0430\u043c \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0432\u044b\u0431\u0440\u0430\u0442\u044c \u0431\u0435\u0441\u043f\u043b\u0430\u0442\u043d\u044b\u0439 \u0438\u043b\u0438 \u043f\u043b\u0430\u0442\u043d\u044b\u0439 \u0443\u0440\u043e\u0432\u043d\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u0441\u0435\u0440\u0432\u0438\u0441\u0430:  <\/p>\n<blockquote><p> <em>\u041a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u044f \u0437\u0430\u0434\u0430\u0447 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u0433\u0440\u0443\u043f\u043f\u0443 \u0437\u0430\u0434\u0430\u0447 \u0438 \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u0442 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430\u043c\u0438, \u043a\u0432\u043e\u0442\u0430\u043c\u0438 \u0438 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u044f\u043c\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u044f\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u043e\u0431\u0449\u0438\u043c\u0438 \u0434\u043b\u044f \u0432\u0441\u0435\u0445 \u0437\u0430\u0434\u0430\u0447 \u0432 \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u0438. \u041a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u044f \u0437\u0430\u0434\u0430\u0447 \u0441\u043e\u0437\u0434\u0430\u0435\u0442\u0441\u044f \u0432\u043b\u0430\u0434\u0435\u043b\u044c\u0446\u0435\u043c \u043f\u043e\u0434\u043f\u0438\u0441\u043a\u0438, \u043e\u043d\u0430 \u043e\u0431\u044a\u0435\u0434\u0438\u043d\u044f\u0435\u0442 \u0437\u0430\u0434\u0430\u0447\u0438 \u0432\u043c\u0435\u0441\u0442\u0435, \u043e\u0441\u043d\u043e\u0432\u044b\u0432\u0430\u044f\u0441\u044c \u043d\u0430 \u043f\u043e\u0442\u0440\u0435\u0431\u043b\u0435\u043d\u0438\u0438 \u0438\u043b\u0438 \u0433\u0440\u0430\u043d\u0438\u0446\u0430\u0445 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f. \u041a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u044f \u0437\u0430\u0434\u0430\u0447 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0430 \u043f\u0440\u0435\u0434\u0435\u043b\u0430\u043c\u0438 \u043e\u0434\u043d\u043e\u0433\u043e \u0440\u0435\u0433\u0438\u043e\u043d\u0430. \u041e\u043d\u0430 \u0442\u0430\u043a \u0436\u0435 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u043a\u0432\u043e\u0442\u044b MaxJobs \u0438 MaxRecurrence \u043d\u0430 \u043c\u0435\u0442\u0440\u0438\u043a\u0438 \u043f\u043e\u0442\u0440\u0435\u0431\u043b\u0435\u043d\u0438\u044f \u0432\u0441\u0435\u0445 \u0437\u0430\u0434\u0430\u0447 \u0432 \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u0438.<\/em>  <\/p><\/blockquote>\n<p>\u0411\u043e\u043b\u044c\u0448\u0435 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438 \u043e \u043a\u0432\u043e\u0442\u0430\u0445, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043c\u043e\u0433\u0443\u0442 \u0431\u044b\u0442\u044c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u044b \u043d\u0430 \u043e\u0431\u043e\u0438\u0445 \u043f\u043b\u0430\u043d\u0430\u0445, \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043d\u0430\u0439\u0442\u0438 \u043f\u043e \u044d\u0442\u043e\u0439 \u0441\u0441\u044b\u043b\u043a\u0435: <a href=\"http:\/\/msdn.microsoft.com\/en-us\/library\/windowsazure\/dn479786.aspx\">http:\/\/msdn.microsoft.com\/en-us\/library\/windowsazure\/dn479786.aspx<\/a>.<\/p>\n<pre><code>var schedulerServiceClient = new SchedulerManagementClient(credentials);  var result = schedulerServiceClient.JobCollections.Create(&quot;sandrino-cs2&quot;, &quot;jobcoll001&quot;, new JobCollectionCreateParameters()  {       Label =  &quot;jobcoll001&quot;,       IntrinsicSettings = new JobCollectionIntrinsicSettings()       {           Plan = JobCollectionPlan.Standard,           Quota = new JobCollectionQuota()           {               MaxJobCount = 100,               MaxJobOccurrence = 100,               MaxRecurrence = new JobCollectionMaxRecurrence()               {                   Frequency = JobCollectionRecurrenceFrequency.Minute,                   Interval = 1               }           }       }  });     Console.WriteLine(result.RequestId);  Console.WriteLine(result.StatusCode);  Console.ReadLine();<\/code><\/pre>\n<p>  <\/p>\n<h3>\u0417\u0430\u0434\u0430\u0447\u0438 HTTP(S) \u0438 \u043e\u0447\u0435\u0440\u0435\u0434\u0435\u0439 \u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0430<\/h3>\n<p>  \u0422\u0435\u043f\u0435\u0440\u044c, \u043e\u0431\u043b\u0430\u0434\u0430\u044f \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u0435\u0439 \u0437\u0430\u0434\u0430\u0447, \u043c\u044b \u043c\u043e\u0436\u0435\u043c \u043d\u0430\u0447\u0430\u0442\u044c \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0442\u044c \u0437\u0430\u0434\u0430\u0447\u0438 \u0434\u043b\u044f \u043f\u043b\u0430\u043d\u0438\u0440\u043e\u0432\u0449\u0438\u043a\u0430. \u041f\u043b\u0430\u043d\u0438\u0440\u043e\u0432\u0449\u0438\u043a \u0437\u0430\u0434\u0430\u0447 \u0432 \u043d\u0430\u0441\u0442\u043e\u044f\u0449\u0438\u0439 \u043c\u043e\u043c\u0435\u043d\u0442 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442 \u0442\u0440\u0438 \u0442\u0438\u043f\u0430 \u0437\u0430\u0434\u0430\u0447: HTTP, HTTPS \u0438 \u043e\u0447\u0435\u0440\u0435\u0434\u0435\u0439 \u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0430. \u0414\u0430\u0432\u0430\u0439\u0442\u0435 \u0441\u043d\u0430\u0447\u0430\u043b\u0430 \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u043d\u0430 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0443 http:<\/p>\n<pre><code>var schedulerClient = new SchedulerClient(credentials, &quot;sandrino-cs2&quot;, &quot;jobcoll001&quot;);  var result = schedulerClient.Jobs.Create(new JobCreateParameters()  {       Action = new JobAction()       {           Type = JobActionType.Http,           Request = new JobHttpRequest()           {               Body = &quot;customer=sandrino&command=sendnewsletter&quot;,               Headers = new Dictionary()               {                   { &quot;Content-Type&quot;, &quot;application\/x-www-form-urlencoded&quot; },                   { &quot;x-something&quot;, &quot;value123&quot; }               },               Method = &quot;POST&quot;,               Uri = new Uri(&quot;http:\/\/postcatcher.in\/catchers\/527af9acfe325802000001cb&quot;)           }       },       StartTime = DateTime.UtcNow,       Recurrence = new JobRecurrence()      {           Frequency = JobRecurrenceFrequency.Minute,           Interval = 1,           Count = 5       }  });     Console.WriteLine(result.RequestId);  Console.WriteLine(result.StatusCode);  Console.ReadLine();<\/code><\/pre>\n<p>  \u042d\u0442\u0430 \u0437\u0430\u0434\u0430\u0447\u0430 \u0441\u043e\u0437\u0434\u0430\u043d\u0430 \u0432 \u043c\u043e\u0435\u0439 \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u0438 \u0437\u0430\u0434\u0430\u0447 \u201cjobcoll001\u201d, \u043e\u043d\u0430 \u0431\u0443\u0434\u0435\u0442 \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u0442\u044c POST-\u0437\u0430\u043f\u0440\u043e\u0441 \u0441 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u044b\u043c \u0442\u0435\u043b\u043e\u043c \u0438 \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u0430\u043c\u0438 \u0437\u0430\u043f\u0440\u043e\u0441\u0430. \u041e\u0431\u0440\u0430\u0442\u0438\u0442\u0435 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435, \u0447\u0442\u043e \u044f \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u044e \u0442\u0438\u043f \u043a\u043e\u043d\u0442\u0435\u043d\u0442\u0430 \u0434\u043b\u044f \u0437\u0430\u043f\u0440\u043e\u0441\u0430, \u0442\u0430\u043a \u043a\u0430\u043a \u044d\u0442\u043e \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u0434\u043b\u044f \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u0437\u0430\u0434\u0430\u0447 \u0442\u0438\u043f\u0430 HTTP(S). \u0422\u0430\u043a \u043a\u0430\u043a \u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e \u043f\u043b\u0430\u0442\u043d\u044b\u0439 \u043f\u043b\u0430\u043d \u043f\u043b\u0430\u043d\u0438\u0440\u043e\u0432\u0449\u0438\u043a\u0430, \u043c\u043d\u0435 \u043f\u043e\u0437\u0432\u043e\u043b\u0435\u043d\u043e \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0442\u044c \u0437\u0430\u0434\u0430\u0447\u0438 \u0441 \u043f\u043e\u0432\u0442\u043e\u0440\u0435\u043d\u0438\u0435\u043c \u043a\u0430\u0436\u0434\u0443\u044e \u043c\u0438\u043d\u0443\u0442\u0443. \u0414\u043b\u044f \u044d\u0442\u043e\u0439 \u0434\u0435\u043c\u043e\u043d\u0441\u0442\u0440\u0430\u0446\u0438\u0438 \u044f \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0438\u043b \u0437\u0430\u0434\u0430\u0447\u0443 \u043f\u044f\u0442\u044c\u044e \u0438\u0441\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f\u043c\u0438. <\/p>\n<p>  \u041d\u0430\u043a\u043e\u043d\u0435\u0446, \u0435\u0441\u043b\u0438 \u0432\u044b \u043e\u0431\u0440\u0430\u0442\u0438\u0442\u0435 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435 \u043d\u0430 URI, \u0442\u043e \u0437\u0430\u043c\u0435\u0442\u0438\u0442\u0435, \u0447\u0442\u043e \u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e \u0441\u0435\u0440\u0432\u0438\u0441 <a href=\"http:\/\/postcatcher.in\">http:\/\/postcatcher.in<\/a>. \u042d\u0442\u043e \u0431\u0435\u0441\u043f\u043b\u0430\u0442\u043d\u044b\u0439 \u0441\u0435\u0440\u0432\u0438\u0441, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0432\u0430\u043c \u043e\u0442\u043b\u0430\u0436\u0438\u0432\u0430\u0442\u044c POST-\u0437\u0430\u043f\u0440\u043e\u0441\u044b, \u043a\u0430\u043a \u0440\u0430\u0437 \u0438\u043c\u0435\u043d\u043d\u043e \u0442\u043e, \u0447\u0435\u043c \u044f \u0438 \u0437\u0430\u043d\u0438\u043c\u0430\u044e\u0441\u044c. \u0414\u0430\u0432\u0430\u0439\u0442\u0435 \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u043d\u0430 \u0442\u043e, \u0447\u0442\u043e \u0434\u0435\u043b\u0430\u0435\u0442 \u043f\u043b\u0430\u043d\u0438\u0440\u043e\u0432\u0449\u0438\u043a \u0437\u0430\u0434\u0430\u0447:<\/p>\n<p>  <img decoding=\"async\" title=\"Step3-Content\" src=\"http:\/\/habr.habrastorage.org\/post_images\/7b3\/fd0\/89c\/7b3fd089ce2dc758de808b8b63265d23.png\"\/><\/p>\n<p>  \u041a\u0430\u043a \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0443\u0431\u0435\u0434\u0438\u0442\u044c\u0441\u044f, \u043f\u043b\u0430\u043d\u0438\u0440\u043e\u0432\u0449\u0438\u043a \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u0442 \u0442\u0435\u043b\u043e \u0437\u0430\u043f\u0440\u043e\u0441\u0430 \u0438 \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u0438 \u0443\u043a\u0430\u0437\u0430\u043d\u043d\u044b\u0435 \u043c\u043d\u043e\u0439, \u0432\u043a\u043b\u044e\u0447\u0430\u044f \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0434\u0440\u0443\u0433\u0438\u0435 \u0434\u0430\u043d\u043d\u044b\u0435. \u0414\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u0438 \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0442 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e \u043e \u0442\u043e\u043c, \u0433\u0434\u0435 \u0437\u0430\u0434\u0430\u0447\u0430 \u0431\u044b\u043b\u0430 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0430 \u0438 \u0432 \u0440\u0430\u043c\u043a\u0430\u0445 \u043a\u0430\u043a\u043e\u0439 \u0438\u0437 \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u0439 \u0437\u0430\u0434\u0430\u0447 \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u043b\u043e \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435.<\/p>\n<pre><code>{       &quot;connection&quot;: &quot;close&quot;,       &quot;content-length&quot;: &quot;40&quot;,       &quot;content-type&quot;: &quot;application\/x-www-form-urlencoded&quot;,       &quot;host&quot;: &quot;postcatcher.in&quot;,       &quot;x-forwarded-for&quot;: &quot;137.116.241.137&quot;,       &quot;x-ms-client-request-id&quot;: &quot;988c7a64-55e1-41e4-8cf0-ce1eeca240ac&quot;,       &quot;x-ms-execution-tag&quot;: &quot;0726fa245447c91674c75db3f3564d63&quot;,       &quot;x-ms-scheduler-execution-region&quot;: &quot;North Europe&quot;,       &quot;x-ms-scheduler-expected-execution-time&quot;: &quot;2013-11-07T02:39:27&quot;,       &quot;x-ms-scheduler-jobcollectionid&quot;: &quot;jobcoll001&quot;,       &quot;x-ms-scheduler-jobid&quot;: &quot;7ce6971c-5aa1-4701-b6bd-02f63ee82d17&quot;,       &quot;x-real-ip&quot;: &quot;137.116.241.137&quot;,       &quot;x-request-start&quot;: &quot;1383791968800&quot;,       &quot;x-something&quot;: &quot;value123&quot;  }<\/code><\/pre>\n<p>  \u0422\u0435\u043f\u0435\u0440\u044c \u0434\u0430\u0432\u0430\u0439\u0442\u0435 \u0438\u0437\u043c\u0435\u043d\u0438\u043c \u0442\u0438\u043f \u0437\u0430\u0434\u0430\u0447\u0438 \u043d\u0430 \u043e\u0447\u0435\u0440\u0435\u0434\u044c \u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0430.<\/p>\n<pre><code>var storageAccount = new CloudStorageAccount(new StorageCredentials(&quot;labdrino&quot;, &quot;&quot;), true);  var queueClient = storageAccount.CreateCloudQueueClient();  var queue = queueClient.GetQueueReference(&quot;scheduled-tasks&quot;);  queue.CreateIfNotExists();     var perm = new QueuePermissions();  var policy = new SharedAccessQueuePolicy { SharedAccessExpiryTime = DateTime.MaxValue, Permissions = SharedAccessQueuePermissions.Add };  perm.SharedAccessPolicies.Add(&quot;jobcoll001policy&quot;, policy);     queue.SetPermissions(perm);  var sas = queue.GetSharedAccessSignature(new SharedAccessQueuePolicy(), &quot;jobcoll001policy&quot;);     var schedulerClient = new SchedulerClient(credentials, &quot;sandrino-cs2&quot;, &quot;jobcoll001&quot;);  var result = schedulerClient.Jobs.Create(new JobCreateParameters()  {       Action = new JobAction()       {           Type = JobActionType.StorageQueue,           QueueMessage = new JobQueueMessage()           {               Message = &quot;hello there!&quot;,               QueueName = &quot;scheduled-tasks&quot;,               SasToken = sas,               StorageAccountName = &quot;labdrino&quot;           }       },       StartTime = DateTime.UtcNow,       Recurrence = new JobRecurrence()       {           Frequency = JobRecurrenceFrequency.Minute,           Interval = 1,           Count = 5       }  });     Console.WriteLine(result.RequestId);  Console.WriteLine(result.StatusCode);  Console.ReadLine();<\/code><\/pre>\n<p>  \u041a\u0430\u043a \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0432\u0438\u0434\u0435\u0442\u044c, \u0434\u043b\u044f \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u0437\u0430\u0434\u0430\u0447\u0438 \u0442\u0438\u043f\u0430 \u043e\u0447\u0435\u0440\u0435\u0434\u0435\u0439 \u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0430 \u043d\u0430\u043c \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0431\u043e\u043b\u044c\u0448\u0435 \u0440\u0430\u0431\u043e\u0442\u044b \u0438 \u043a\u043e\u0434\u0430. \u0421\u043d\u0430\u0447\u0430\u043b\u0430 \u0432\u0430\u043c \u043f\u043e\u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u043e\u0447\u0435\u0440\u0435\u0434\u044c, \u0430 \u0442\u0430\u043a \u0436\u0435 \u043f\u043e\u043b\u0438\u0442\u0438\u043a\u0438 \u0434\u043b\u044f \u043d\u0435\u0435 \u0441 \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u0435\u043c \u043d\u0430 \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u0435. \u0414\u043b\u044f \u044d\u0442\u043e\u0439 \u043f\u043e\u043b\u0438\u0442\u0438\u043a\u0438 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u0441\u0438\u0433\u043d\u0430\u0442\u0443\u0440\u0443 Shared Access Signature, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0432 \u0434\u0430\u043b\u044c\u043d\u0435\u0439\u0448\u0435\u043c \u0431\u0443\u0434\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u043f\u043b\u0430\u043d\u0438\u0440\u043e\u0432\u0449\u0438\u043a\u043e\u043c \u0434\u043b\u044f \u043e\u043f\u0440\u0430\u0432\u043a\u0438 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0439 \u0432 \u043e\u0447\u0435\u0440\u0435\u0434\u044c.<\/p>\n<p>  \u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u043e\u043c \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u043a\u043e\u0434\u0430 \u0431\u0443\u0434\u0435\u0442 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435 \u0432 \u043e\u0447\u0435\u0440\u0435\u0434\u0438, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e \u043e \u0437\u0430\u0434\u0430\u0447\u0435 \u0432\u043c\u0435\u0441\u0442\u0435 \u0441 \u0442\u0435\u043a\u0441\u0442\u043e\u043c \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f \u201chello there!\u201d:<\/p>\n<p>  <img decoding=\"async\" title=\"Step4-Queues\" src=\"http:\/\/habr.habrastorage.org\/post_images\/0e8\/41b\/5bc\/0e841b5bc39129aeacc116b17f6f38cb.png\"\/><\/p>\n<h3>\u0418\u0441\u0442\u043e\u0440\u0438\u044f \u0437\u0430\u0434\u0430\u0447<\/h3>\n<p>  \u041f\u043e\u0441\u043b\u0435 \u0442\u043e\u0433\u043e, \u043a\u0430\u043a \u0432\u0430\u0448\u0438 \u0437\u0430\u0434\u0430\u0447\u0438 \u0431\u044b\u043b\u0438 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u044b, \u0432\u0430\u043c \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u043e \u0437\u0430\u0445\u043e\u0447\u0435\u0442\u0441\u044f \u0443\u0437\u043d\u0430\u0442\u044c \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b \u0440\u0430\u0431\u043e\u0442\u044b \u043f\u043b\u0430\u043d\u0438\u0440\u043e\u0432\u0449\u0438\u043a\u0430. \u042d\u0442\u043e \u043c\u043e\u0436\u043d\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f \u043c\u0435\u0442\u043e\u0434 GetHistory \u0441 \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0435\u0439 \u0435\u043c\u0443 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430 \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440\u0430 \u0437\u0430\u0434\u0430\u0447\u0438. \u041f\u043e\u0441\u043b\u0435 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u0437\u0430\u0434\u0430\u0447\u0438, \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440 \u0437\u0430\u0434\u0430\u0447\u0438 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442\u0441\u044f \u0432 \u0432\u0438\u0434\u0435 \u043e\u0442\u0432\u0435\u0442\u0430. \u0412\u044b \u0442\u0430\u043a \u0436\u0435 \u043c\u043e\u0436\u0435\u0442\u0435 \u043f\u0440\u043e\u043b\u0438\u0441\u0442\u0430\u0442\u044c \u0432\u0441\u0435 \u0437\u0430\u0434\u0430\u0447\u0438 \u0432 \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u0438 \u0432\u044b\u0437\u0432\u0430\u0432 \u043c\u0435\u0442\u043e\u0434 List:<\/p>\n<pre><code>var schedulerClient = new SchedulerClient(credentials, &quot;sandrino-cs2&quot;, &quot;jobcoll001&quot;);     foreach (var job in schedulerClient.Jobs.List(new JobListParameters() { State = JobState.Enabled }))     {         Console.WriteLine(&quot;Job: {0} - Action: {1} - State: {2} - Status: {3}&quot;, job.Id, job.Action, job.State, job.Status);            foreach (var history in schedulerClient.Jobs.GetHistory(job.Id, new JobGetHistoryParameters()))         {             Console.WriteLine(&quot; &gt; {0} - {1}: {2}&quot;, history.StartTime, history.EndTime, history.Message);        }     }        Console.ReadLine();<\/code><\/pre>\n<p>  \u0412\u044b\u043f\u043e\u043b\u043d\u0438\u0432 \u044d\u0442\u043e\u0442 \u043a\u043e\u0434 \u0432\u044b \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u0435 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u043f\u043e\u0445\u043e\u0436\u0438\u0439 \u043d\u0430 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439:  <\/p>\n<blockquote><p>Job: 34851054-f576-48b8-8c77-73b62b502022 \u2013 Action: Microsoft.WindowsAzure.Scheduler.Models.JobAction \u2013 State: Faulted \u2013 Status: Microsoft.WindowsAzure.Scheduler.Models.JobStatus <br \/>  &gt; 7\/11\/2013 2:52:18 \u2013 7\/11\/2013 2:52:19: StorageQueue Action \u2013 The provided queue: \u2018scheduled-tasks\u2019 does not exist or the Sas Token does not have permission to add a message to the given queue <br \/>  &gt; 7\/11\/2013 2:52:48 \u2013 7\/11\/2013 2:52:50: StorageQueue Action \u2013 The provided queue: \u2018scheduled-tasks\u2019 does not exist or the Sas Token does not have permission to add a message to the given queue <br \/>  &gt; 7\/11\/2013 2:53:19 \u2013 7\/11\/2013 2:53:19: StorageQueue Action \u2013 The provided queue: \u2018scheduled-tasks\u2019 does not exist or the Sas Token does not have permission to add a message to the given queue <br \/>  &gt; 7\/11\/2013 2:53:48 \u2013 7\/11\/2013 2:53:50: StorageQueue Action \u2013 The provided queue: \u2018scheduled-tasks\u2019 does not exist or the Sas Token does not have permission to add a message to the given queue <br \/>  &gt; 7\/11\/2013 2:54:20 \u2013 7\/11\/2013 2:54:20: StorageQueue Action \u2013 The provided queue: \u2018scheduled-tasks\u2019 does not exist or the Sas Token does not have permission to add a message to the given queue <br \/>  &gt; 7\/11\/2013 3:05:19 \u2013 7\/11\/2013 3:05:19: StorageQueue Action \u2013 The provided queue: \u2018scheduled-tasks\u2019 does not exist or the Sas Token does not have permission to add a message to the given queue <br \/>  &gt; 7\/11\/2013 3:05:49 \u2013 7\/11\/2013 3:05:49: StorageQueue Action \u2013 The provided queue: \u2018scheduled-tasks\u2019 does not exist or the Sas Token does not have permission to add a message to the given queue <br \/>  &gt; 7\/11\/2013 3:06:18 \u2013 7\/11\/2013 3:06:19: StorageQueue Action \u2013 The provided queue: \u2018scheduled-tasks\u2019 does not exist or the Sas Token does not have permission to add a message to the given queue<\/p>\n<p>  Job: 4db6da21-af4a-4703-b988-671cbb6d5fd5 \u2013 Action: Microsoft.WindowsAzure.Scheduler.Models.JobAction \u2013 State: Completed \u2013 Status: Microsoft.WindowsAzure.Scheduler.Models.JobStatus <br \/>  &gt; 7\/11\/2013 2:32:13 \u2013 7\/11\/2013 2:32:15: Http Action \u2013 Response from host \u2018postcatcher.in\u2019: \u2018Created\u2019 Response Headers: Connection: keep-alive <br \/>  X-Response-Time: 6ms <br \/>  Date: Thu, 07 Nov 2013 02:32:14 GMT <br \/>  Set-Cookie: connect.sid=8SxhjZXandfZQc158Ng2tiYs.kyW9OSZGymzcIJW1eTJJ2MIACyhSyK6mfHVVqqj2r0E; path=\/; expires=Thu, 07 Nov 2013 06:32:14 GMT; httpOnly <br \/>  Server: nginx <br \/>  X-Powered-By: Express <br \/>  Body: Created <br \/>  &gt; 7\/11\/2013 2:33:14 \u2013 7\/11\/2013 2:33:15: Http Action \u2013 Response from host \u2018postcatcher.in\u2019: \u2018Created\u2019 Response Headers: Connection: keep-alive <br \/>  X-Response-Time: 18ms <br \/>  Date: Thu, 07 Nov 2013 02:33:15 GMT <br \/>  Set-Cookie: connect.sid=BJYkjeu3m26wBfr6G2SDgXZl.nhXEo24T3AVHEMYe4xJIm7gjDmhZvj69edIv4bui%2Bzs; path=\/; expires=Thu, 07 Nov 2013 06:33:15 GMT; httpOnly <br \/>  Server: nginx <br \/>  X-Powered-By: Express <br \/>  Body: Created<\/p><\/blockquote>\n<p>\u0418\u0441\u0442\u043e\u0440\u0438\u044f \u0437\u0430\u0434\u0430\u0447 \u043c\u043e\u0436\u0435\u0442 \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u0443\u044e \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e \u043e \u0438\u0441\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0438 \u0437\u0430\u0434\u0430\u0447. \u0415\u0441\u043b\u0438 \u0447\u0442\u043e-\u0442\u043e \u043f\u043e\u0439\u0434\u0435\u0442 \u043d\u0435 \u0442\u0430\u043a \u0432\u043e \u0432\u0440\u0435\u043c\u044f \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u0437\u0430\u0434\u0430\u0447\u0438, \u0438\u0441\u0442\u043e\u0440\u0438\u044f \u2013 \u044d\u0442\u043e \u043f\u0435\u0440\u0432\u043e\u0435 \u043c\u0435\u0441\u0442\u043e \u043e\u0442\u043a\u0443\u0434\u0430 \u0432\u044b \u0434\u043e\u043b\u0436\u043d\u044b \u043d\u0430\u0447\u0430\u0442\u044c \u0438\u0441\u043a\u0430\u0442\u044c \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b.<\/p>\n<h3>\u041f\u043e\u0432\u0442\u043e\u0440\u0435\u043d\u0438\u044f \u0432 \u0441\u043b\u0443\u0447\u0430\u0435 \u043e\u0448\u0438\u0431\u043e\u043a (Retries)<\/h3>\n<p>  \u041e\u043a, \u043f\u0440\u0435\u0434\u043f\u043e\u043b\u043e\u0436\u0438\u043c, \u0432\u044b \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u0442\u0435 HTTP-\u0437\u0430\u043f\u0440\u043e\u0441 \u043a \u0441\u0432\u043e\u0435\u043c\u0443 \u0432\u0435\u0431-\u0441\u0430\u0439\u0442\u0443, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u043d\u0435\u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b\u043c (\u0431\u0430\u0433, \u0437\u0430\u043f\u043b\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u0440\u0430\u0431\u043e\u0442\u044b, \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435 \u043a\u043e\u0434\u0430 \u0438 \u0442.\u0434.). \u0412 \u044d\u0442\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0437\u0430\u0445\u043e\u0442\u0435\u0442\u044c \u043f\u043e\u0432\u0442\u043e\u0440\u0438\u0442\u044c \u0437\u0430\u0434\u0430\u0447\u0443 \u0435\u0449\u0435 \u0440\u0430\u0437 \u0447\u0435\u0440\u0435\u0437 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0441\u0435\u043a\u0443\u043d\u0434. \u0425\u043e\u0440\u043e\u0448\u0430\u044f \u043d\u043e\u0432\u043e\u0441\u0442\u044c \u0437\u0430\u043a\u043b\u044e\u0447\u0430\u0435\u0442\u0441\u044f \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u044d\u0442\u043e \u0443\u043a\u0430\u0437\u0430\u0432 \u043f\u043e\u043b\u0438\u0442\u0438\u043a\u0443 \u043f\u043e\u0432\u0442\u043e\u0440\u0430 \u0432\u043e \u0432\u0440\u0435\u043c\u044f \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u0437\u0430\u0434\u0430\u0447\u0438:<\/p>\n<pre><code>var schedulerClient = new SchedulerClient(credentials, &quot;sandrino-cs2&quot;, &quot;jobcoll001&quot;);  var result = schedulerClient.Jobs.Create(new JobCreateParameters()  {       Action = new JobAction()       {           Type = JobActionType.Http,           Request = ...,           RetryPolicy = new RetryPolicy()           {               RetryCount = 5,               RetryInterval = TimeSpan.FromMinutes(1),               RetryType = RetryType.Fixed           }       },       StartTime = DateTime.UtcNow,       Recurrence = ...  });<\/code><\/pre>\n<p>  \u0412 \u044d\u0442\u043e\u043c \u043f\u0440\u0438\u043c\u0435\u0440\u0435 \u044f \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u044e \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0442\u044c \u043c\u0430\u043a\u0441\u0438\u043c\u0443\u043c \u043f\u044f\u0442\u044c \u043f\u043e\u0432\u0442\u043e\u0440\u043e\u0432 \u0441 \u043f\u0435\u0440\u0438\u043e\u0434\u0438\u0447\u043d\u043e\u0441\u0442\u044c\u044e \u0440\u0430\u0437 \u0432 \u043c\u0438\u043d\u0443\u0442\u0443 \u043c\u0435\u0436\u0434\u0443 \u043d\u0438\u043c\u0438.<\/p>\n<h3>\u041e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0430 \u043e\u0448\u0438\u0431\u043e\u043a<\/h3>\n<p>  \u0412 \u0441\u043b\u0443\u0447\u0430\u0435 \u043a\u043e\u0433\u0434\u0430 \u0447\u0442\u043e-\u0442\u043e \u043f\u043e\u0448\u043b\u043e \u043d\u0435 \u0442\u0430\u043a, \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0437\u0430\u0445\u043e\u0442\u0435\u0442\u044c \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u043d\u0435\u043a\u0438\u0439 \u0441\u0438\u0433\u043d\u0430\u043b, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435 \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u043d\u043e\u0435 \u0432 \u0434\u0440\u0443\u0433\u0443\u044e \u043e\u0447\u0435\u0440\u0435\u0434\u044c (\u043b\u0438\u0431\u043e \u0432 \u0434\u0440\u0443\u0433\u043e\u0439 \u0434\u0430\u0442\u0430\u0446\u0435\u043d\u0442\u0440) \u0438\u043b\u0438 \u0432\u044b\u0437\u043e\u0432 \u0434\u0440\u0443\u0433\u043e\u0433\u043e URL. \u0412\u0441\u0435 \u044d\u0442\u043e \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0443\u043a\u0430\u0437\u0430\u043d\u0438\u044f \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432 \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u043e\u0439 \u0441\u0435\u043a\u0446\u0438\u0438 Error \u043f\u0440\u0438 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0438 \u0437\u0430\u0434\u0430\u0447\u0438. \u0412 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u043c \u043f\u0440\u0438\u043c\u0435\u0440\u0435 \u044f \u0441\u043e\u0437\u0434\u0430\u044e \u0437\u0430\u0434\u0430\u0447\u0443 \u0434\u043b\u044f \u043e\u0447\u0435\u0440\u0435\u0434\u0438 \u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0430 StorageQueue, \u043d\u043e \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u044e \u043e\u0448\u0438\u0431\u043e\u0447\u043d\u0443\u044e \u0441\u0438\u0433\u043d\u0430\u0442\u0443\u0440\u0443 SAS. \u042d\u0442\u043e \u043f\u0440\u0438\u0432\u0435\u0434\u0435\u0442 \u043a \u0442\u043e\u043c\u0443, \u0447\u0442\u043e \u043f\u043b\u0430\u043d\u0438\u0440\u043e\u0432\u0449\u0438\u043a \u043d\u0435 \u0441\u043c\u043e\u0436\u0435\u0442 \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u0437\u0430\u0434\u0430\u0447\u0443 \u043e\u0442\u043f\u0440\u0430\u0432\u043a\u0438 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f \u0432 \u043e\u0447\u0435\u0440\u0435\u0434\u044c \u0438 \u0431\u0443\u0434\u0435\u0442 \u0432\u044b\u0437\u0432\u0430\u043d\u0430 \u0441\u0435\u043a\u0446\u0438\u044f ErrorAction (\u043a\u043e\u0434 \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u0442 \u043d\u0430 \u043c\u043e\u044e \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443 \u0432 postcatcher.in \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435 \u043e\u0431 \u043e\u0448\u0438\u0431\u043a\u0435).<\/p>\n<pre><code>var schedulerClient = new SchedulerClient(credentials, &quot;sandrino-cs2&quot;, &quot;jobcoll001&quot;);  var result = schedulerClient.Jobs.Create(new JobCreateParameters()  {       Action = new JobAction()       {           Type = JobActionType.StorageQueue,           QueueMessage = new JobQueueMessage()           {               Message = &quot;hello there!&quot;,               QueueName = &quot;scheduled-tasks&quot;,               SasToken = &quot;not working&quot;,               StorageAccountName = &quot;labdrino&quot;          },           ErrorAction = new JobErrorAction()           {              Type = JobActionType.Http,               Request = new JobHttpRequest()               {                   Uri = new Uri(&quot;http:\/\/postcatcher.in\/catchers\/527b0b75fe325802000002b6&quot;),                   Body = &quot;type=somethingiswrong&quot;,                   Headers = new Dictionary()                   {                       { &quot;Content-Type&quot;, &quot;application\/x-www-form-urlencoded&quot; },                       { &quot;x-something&quot;, &quot;value123&quot; }                   },                   Method = &quot;POST&quot;               }           }       },       StartTime = DateTime.UtcNow,       Recurrence = new JobRecurrence()       {           Frequency = JobRecurrenceFrequency.Minute,           Interval = 1,           Count = 5       }  });     Console.WriteLine(result.RequestId);  Console.WriteLine(result.StatusCode);  Console.ReadLine();<\/code><\/pre>\n<p>  \u041f\u043e\u0441\u043b\u0435 \u044d\u0442\u043e\u0433\u043e \u0432\u044b \u0441\u043c\u043e\u0436\u0435\u0442\u0435 \u043d\u0430\u0431\u043b\u044e\u0434\u0430\u0442\u044c \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435 \u043e\u0431 \u043e\u0448\u0438\u0431\u043a\u0435 \u0432 postcatcher (\u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u0432\u0441\u044e \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u0443\u044e \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e \u043e\u0442\u043d\u043e\u0441\u044f\u0449\u0443\u044e\u0441\u044f \u043a \u0432\u0430\u0448\u0435\u0439 \u0437\u0430\u0434\u0430\u0447\u0435):<\/p>\n<p>  <img decoding=\"async\" title=\"Step5-Error\" src=\"http:\/\/habr.habrastorage.org\/post_images\/f08\/c13\/6d0\/f08c136d011e4b3f251e80eaddff50c7.png\"\/><\/p>\n<h3>\u041f\u0435\u0440\u0438\u043e\u0434\u0438\u0447\u0435\u0441\u043a\u043e\u0435 \u043f\u043e\u0432\u0442\u043e\u0440\u0435\u043d\u0438\u0435 \u0437\u0430\u0434\u0430\u0447\u0438<\/h3>\n<p>  \u041f\u043b\u0430\u043d\u0438\u0440\u043e\u0432\u0449\u0438\u043a \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0432\u0430\u043c \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0442\u0438\u043f\u043e\u0432 \u043f\u0435\u0440\u0438\u043e\u0434\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u043f\u043e\u0432\u0442\u043e\u0440\u0435\u043d\u0438\u044f \u0437\u0430\u0434\u0430\u0447\u0438, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0442\u044c \u0437\u0430\u0434\u0430\u0447\u0443 \u043a\u0430\u0436\u0434\u044b\u0439 \u0434\u0435\u043d\u044c, \u043d\u043e \u043c\u0430\u043a\u0441\u0438\u043c\u0443\u043c 10 \u0440\u0430\u0437 (\u0441\u0432\u043e\u0439\u0441\u0442\u0432\u043e Count):<\/p>\n<pre><code>var schedulerClient = new SchedulerClient(credentials, &quot;sandrino-cs2&quot;, &quot;jobcoll001&quot;);  var result = schedulerClient.Jobs.Create(new JobCreateParameters()  {       Action = ...,       Recurrence = new JobRecurrence()       {           Frequency = JobRecurrenceFrequency.Day,           Interval = 1,           Count = 10       }  });<\/code><\/pre>\n<p>  \u0412\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0443\u043a\u0430\u0437\u0430\u0442\u044c, \u0447\u0442\u043e \u0437\u0430\u0434\u0430\u0447\u0430 \u0434\u043e\u043b\u0436\u043d\u0430 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0442\u044c\u0441\u044f \u043a\u0430\u0436\u0434\u044b\u0439 \u0434\u0435\u043d\u044c \u0434\u043e \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u043e\u0439 \u0434\u0430\u0442\u044b:<\/p>\n<pre><code>var schedulerClient = new SchedulerClient(credentials, &quot;sandrino-cs2&quot;, &quot;jobcoll001&quot;);  var result = schedulerClient.Jobs.Create(new JobCreateParameters()  {       Action = ...,       Recurrence = new JobRecurrence()       {           Frequency = JobRecurrenceFrequency.Day,           Interval = 1,           EndTime = new DateTime(2013, 12, 31)       }  });<\/code><\/pre>\n<p>  \u0412\u043c\u0435\u0441\u0442\u0435 \u0441 \u044d\u0442\u0438\u043c \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0442\u044c \u0438 \u0431\u043e\u043b\u0435\u0435 \u0441\u043b\u043e\u0436\u043d\u044b\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u043f\u0435\u0440\u0438\u043e\u0434\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u043f\u043e\u0432\u0442\u043e\u0440\u0435\u043d\u0438\u044f \u0437\u0430\u0434\u0430\u0447. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0434\u043b\u044f \u043f\u043e\u0447\u0442\u043e\u0432\u043e\u0439 \u0440\u0430\u0441\u0441\u044b\u043b\u043a\u0438, \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0443\u043a\u0430\u0437\u0430\u0442\u044c \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 \u0437\u0430\u0434\u0430\u0447\u0438 \u0435\u0436\u0435\u043d\u0435\u0434\u0435\u043b\u044c\u043d\u043e \u0432 \u043f\u043e\u043d\u0435\u0434\u0435\u043b\u044c\u043d\u0438\u043a \u0432 11:00 \u0443\u0442\u0440\u0430.<\/p>\n<pre><code>var schedulerClient = new SchedulerClient(credentials, &quot;sandrino-cs2&quot;, &quot;jobcoll001&quot;);  var result = schedulerClient.Jobs.Create(new JobCreateParameters()  {       Action = new JobAction()       {           Type = JobActionType.Http,           Request = new JobHttpRequest()           {               Body = &quot;customers=Europe-West&quot;,               Headers = new Dictionary()               {                   { &quot;Content-Type&quot;, &quot;application\/x-www-form-urlencoded&quot; },              },               Method = &quot;POST&quot;,               Uri = new Uri(&quot;http:\/\/postcatcher.in\/catchers\/527af9acfe325802000001cb&quot;)           }       },       StartTime = DateTime.UtcNow,       Recurrence = new JobRecurrence()       {           \/\/ Frequency = JobRecurrenceFrequency.None,           Schedule = new JobRecurrenceSchedule()           {               Days = new List() { JobScheduleDay.Monday },               Hours = new List() {  9 },               Minutes =  new List() { 11 }           }       }  });<\/code><\/pre>\n<p>  <strong>\u041f\u0440\u0438\u043c\u0435\u0447\u0430\u043d\u0438\u0435. <\/strong>\u041d\u0430 \u0441\u0435\u0433\u043e\u0434\u043d\u044f\u0448\u043d\u0438\u0439 \u0434\u0435\u043d\u044c \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u043e\u0439 \u0431\u0430\u0433, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043d\u0435 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0432\u0430\u043c \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u0447\u0430\u0441\u0442\u043e\u0442\u0443 (Frequency) \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 None (\u0438\u043b\u0438 Schedule). \u0418\u0437-\u0437\u0430 \u044d\u0442\u043e\u0433\u043e, \u0443 \u0432\u0430\u0441 \u043d\u0435 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u0441\u044f \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u0437\u0430\u0434\u0430\u0447\u0438 \u0441 \u0442\u0430\u043a\u0438\u043c \u0442\u0438\u043f\u043e\u043c \u0447\u0430\u0441\u0442\u043e\u0442\u044b. <\/p>\n<h3>\u0417\u0430\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435<\/h3>\n<p>  Windows Azure Scheduler \u043e\u0431\u043b\u0430\u0434\u0430\u0435\u0442 \u043f\u0440\u043e\u0441\u0442\u044b\u043c API, \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u043e\u0439 \u043e\u0447\u0435\u0440\u0435\u0434\u0435\u0439 \u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0430, \u043f\u043e\u043b\u0438\u0442\u0438\u043a \u043f\u043e\u0432\u0442\u043e\u0440\u0430, \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u043e\u0448\u0438\u0431\u043e\u043a. \u042d\u0442\u043e \u0434\u0435\u043b\u0430\u0435\u0442 \u043d\u043e\u0432\u044b\u0439 \u0441\u0435\u0440\u0432\u0438\u0441 \u043f\u0440\u0435\u043a\u0440\u0430\u0441\u043d\u044b\u043c \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u043c \u0434\u043b\u044f \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u0432\u0430\u0448\u0438\u0445 \u0437\u0430\u0434\u0430\u0447 \u043f\u043e \u0440\u0430\u0441\u043f\u0438\u0441\u0430\u043d\u0438\u044e. \u041a\u0440\u043e\u043c\u0435 \u0442\u043e\u0433\u043e, \u043d\u043e\u0432\u044b\u0439 \u0441\u0435\u0440\u0432\u0438\u0441, \u043e\u0442\u043a\u0440\u044b\u0432\u0430\u0435\u0442 \u043c\u0430\u0441\u0441\u0443 \u0441\u0446\u0435\u043d\u0430\u0440\u0438\u0435\u0432: \u043f\u043b\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0437\u0430\u0434\u0430\u0447 \u0434\u043b\u044f \u0432\u0430\u0448\u0435\u0433\u043e \u0432\u0435\u0431-\u0441\u0430\u0439\u0442\u0430 Windows Azure Web Site (\u0431\u0435\u0437 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u0438 \u043f\u043e\u0434\u043d\u0438\u043c\u0430\u0442\u044c \u0440\u0430\u0431\u043e\u0447\u0438\u0435 \u0440\u043e\u043b\u0438); \u043e\u0442\u043f\u0440\u0430\u0432\u043a\u0430 \u0434\u0430\u043d\u043d\u044b\u0445 \u0432 \u0432\u0430\u0448\u0443 \u0440\u0430\u0431\u043e\u0447\u0443\u044e \u0440\u043e\u043b\u044c; \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u043f\u043b\u0430\u043d\u0438\u0440\u043e\u0432\u0449\u0438\u043a\u0430 \u0432 \u0432\u0430\u0448\u0438\u0445 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f\u0445 \u043d\u0430 PHP, Node.js \u0438 \u0442.\u0434.; \u043f\u043e\u0441\u0442\u0440\u043e\u0435\u043d\u0438\u0435 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0433\u043e \u0430\u0433\u0435\u043d\u0442\u0430 \u0434\u043b\u044f \u0431\u0430\u0437 \u0434\u0430\u043d\u043d\u044b\u0445 Windows Azure SQL Database \u0438 \u0442.\u0434.<\/p>\n<p>  \u0411\u043e\u043b\u044c\u0448\u0435 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438 \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043d\u0430\u0439\u0442\u0438 \u043f\u043e \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u043c \u0441\u0441\u044b\u043b\u043a\u0430\u043c:<\/p>\n<ul>\n<li>\u0414\u043e\u043c\u0430\u0448\u043d\u044f\u044f \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430 \u0441\u0435\u0440\u0432\u0438\u0441\u0430 Windows Azure Scheduler: <a title=\"http:\/\/www.windowsazure.com\/ru-ru\/services\/scheduler\/\" href=\"http:\/\/www.windowsazure.com\/ru-ru\/services\/scheduler\/\">http:\/\/www.windowsazure.com\/ru-ru\/services\/scheduler\/<\/a>;<\/li>\n<li>\u0418\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f \u043e \u0446\u0435\u043d\u0430\u0445: <a title=\"http:\/\/www.windowsazure.com\/ru-ru\/pricing\/details\/scheduler\/\" href=\"http:\/\/www.windowsazure.com\/ru-ru\/pricing\/details\/scheduler\/\">http:\/\/www.windowsazure.com\/ru-ru\/pricing\/details\/scheduler\/<\/a> (\u043d\u0435 \u0437\u0430\u0431\u0443\u0434\u044c\u0442\u0435 \u043f\u0440\u043e\u0447\u0438\u0442\u0430\u0442\u044c FAQ);<\/li>\n<li>\u0418\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f \u043e \u043a\u0432\u043e\u0442\u0430\u0445 <a title=\"http:\/\/msdn.microsoft.com\/en-us\/library\/windowsazure\/dn479786.aspx\" href=\"http:\/\/msdn.microsoft.com\/en-us\/library\/windowsazure\/dn479786.aspx\">http:\/\/msdn.microsoft.com\/en-us\/library\/windowsazure\/dn479786.aspx<\/a><\/li>\n<li>\u0418\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f \u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0438 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a Windows Azure Management Libraries <a title=\"http:\/\/blogs.msdn.com\/b\/vyunev\/archive\/2013\/11\/10\/windows-azure-management-libraries-net.aspx\" href=\"http:\/\/blogs.msdn.com\/b\/vyunev\/archive\/2013\/11\/10\/windows-azure-management-libraries-net.aspx\">http:\/\/blogs.msdn.com\/b\/vyunev\/archive\/2013\/11\/10\/windows-azure-management-libraries-net.aspx<\/a><\/li>\n<\/ul>\n<p>  \u041d\u0430\u0441\u043b\u0430\u0436\u0434\u0430\u0439\u0442\u0435\u0441\u044c!   \t<\/p>\n<div class=\"clear\"><\/div>\n<\/p><\/div>\n<p> \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b \u0441\u0442\u0430\u0442\u044c\u0438 <a href=\"http:\/\/habrahabr.ru\/post\/201840\/\"> http:\/\/habrahabr.ru\/post\/201840\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<div class=\"content html_format\">       <a href=\"http:\/\/www.windowsazure.com\/en-us\/pricing\/free-trial\/?WT.mc_id=A398D1F7B\"><img decoding=\"async\" alt=\"image\" src=\"http:\/\/habr.habrastorage.org\/post_images\/5d6\/f02\/fa8\/5d6f02fa8263beb3e216389a9397974e.jpg\"\/><\/a><\/p>\n<p>  \u0412\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 \u0437\u0430\u0434\u0430\u0447 \u043f\u043e \u0440\u0430\u0441\u043f\u0438\u0441\u0430\u043d\u0438\u044e \u0432 Windows Azure \u0432\u0441\u0435\u0433\u0434\u0430 \u0431\u044b\u043b\u043e \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e\u0439 \u0442\u0435\u043c\u043e\u0439 \u0441 \u0440\u044f\u0434\u043e\u043c \u0433\u043e\u0442\u043e\u0432\u044b\u0445 \u0440\u0435\u0448\u0435\u043d\u0438\u0439, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u043e\u043c\u043e\u0433\u0430\u043b\u0438 \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0440\u0430\u0431\u043e\u0442\u0443 \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e: <a href=\"http:\/\/www.windowsazure.com\/en-us\/develop\/mobile\/tutorials\/schedule-backend-tasks\/\">\u043f\u043b\u0430\u043d\u0438\u0440\u043e\u0432\u0449\u0438\u043a \u043c\u043e\u0431\u0438\u043b\u044c\u043d\u044b\u0445 \u0441\u0435\u0440\u0432\u0438\u0441\u043e\u0432<\/a>, Quartz Scheduler, <a href=\"https:\/\/github.com\/jgeurts\/FluentScheduler\">FluentScheduler<\/a>, <a href=\"https:\/\/github.com\/NuGet\/WebBackgrounder\">WebBackgrounder<\/a>, <a href=\"http:\/\/msdn.microsoft.com\/en-us\/library\/microsoft.servicebus.messaging.brokeredmessage.scheduledenqueuetimeutc.aspx\">ScheduledEnqueueTimeUtc<\/a> \u0438 \u0442.\u0434. \u0425\u043e\u0442\u044f \u0432\u044b \u043c\u043e\u0433\u043b\u0438 \u0443\u0441\u043f\u0435\u0448\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u044d\u0442\u0438 \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u044b, \u043d\u0430 \u0441\u0430\u043c\u043e\u043c \u0434\u0435\u043b\u0435 \u043e\u043d\u0438 \u043d\u0435 \u0431\u044b\u043b\u0438 \u043f\u0440\u0435\u0434\u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u044b \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u043e \u0434\u043b\u044f \u0432\u0430\u0448\u0438\u0445 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439 Windows Azure, \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0449\u0438\u0445 \u043d\u0430 \u0431\u0430\u0437\u0435 \u0440\u043e\u043b\u0435\u0439 \u043e\u0431\u043b\u0430\u0447\u043d\u044b\u0445 \u0441\u0435\u0440\u0432\u0438\u0441\u043e\u0432 \u0438\u043b\u0438 \u0432\u0435\u0431-\u0441\u0430\u0439\u0442\u043e\u0432.<\/p>\n<p>  \u0418\u043c\u0435\u043d\u043d\u043e \u043f\u043e \u044d\u0442\u043e\u0439 \u043f\u0440\u0438\u0447\u0438\u043d\u0435, \u043f\u043e\u0447\u0442\u0438 \u0433\u043e\u0434 \u043d\u0430\u0437\u0430\u0434, \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u044f Aditi \u0430\u043d\u043e\u043d\u0441\u0438\u0440\u043e\u0432\u0430\u043b\u0430 \u0441\u0432\u043e\u0439 \u043d\u043e\u0432\u044b\u0439 \u0441\u0435\u0440\u0432\u0438\u0441 \u2013 \u043c\u0430\u0441\u0448\u0442\u0430\u0431\u0438\u0440\u0443\u0435\u043c\u044b\u0439 \u043f\u043b\u0430\u043d\u0438\u0440\u043e\u0432\u0449\u0438\u043a \u0437\u0430\u0434\u0430\u0447, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0431\u044b\u043b \u043f\u043e\u0441\u0442\u0440\u043e\u0435\u043d \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u043e \u0434\u043b\u044f \u0443\u0434\u043e\u0432\u043b\u0435\u0442\u0432\u043e\u0440\u0435\u043d\u0438\u044f \u043f\u043e\u0442\u0440\u0435\u0431\u043d\u043e\u0441\u0442\u0435\u0439 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439 \u0437\u0430\u043f\u0443\u0449\u0435\u043d\u043d\u044b\u0445 \u0432 Windows Azure. <a href=\"https:\/\/www.windowsazure.com\/en-us\/store\/service\/?id=53765649-ba4b-4fe2-a834-21b334b551e2\">Aditi Scheduler<\/a> \u0431\u044b\u043b \u0441\u043e\u0437\u0434\u0430\u043d <a href=\"http:\/\/dunnry.com\/blog\/2013\/01\/29\/AnatomyOfAScalableTaskScheduler.aspx\">Ryan Dunn<\/a> \u2013 \u043b\u0435\u0433\u0435\u043d\u0434\u043e\u0439 \u0438\u0437 \u043a\u043e\u043c\u0430\u043d\u0434\u044b Windows Azure, <a href=\"http:\/\/blog.aditi.com\/cloud\/scheduler-2-0-celebrating-500000-jobs-with-new-features-plans\/\">\u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043c\u0435\u0441\u044f\u0446\u0435\u0432 \u043d\u0430\u0437\u0430\u0434<\/a> \u0441\u0435\u0440\u0432\u0438\u0441 \u043e\u0442\u043f\u0440\u0430\u0437\u0434\u043d\u043e\u0432\u0430\u043b \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 500000 \u0437\u0430\u0434\u0430\u0447\u0438 \u0438 \u0434\u043e\u0431\u0430\u0432\u0438\u043b \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0443 \u043e\u0447\u0435\u0440\u0435\u0434\u0435\u0439 \u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0430 Windows Azure Storage Queues.<\/p>\n<p>  \u041d\u043e \u043d\u0435\u0434\u0430\u0432\u043d\u043e Microsoft \u0430\u043d\u043e\u043d\u0441\u0438\u0440\u043e\u0432\u0430\u043b\u0430 \u043f\u0440\u0435\u043a\u0440\u0430\u0441\u043d\u0443\u044e \u0430\u043b\u044c\u0442\u0435\u0440\u043d\u0430\u0442\u0438\u0432\u0443 Aditi Scheduler \u2013 \u043d\u043e\u0432\u044b\u0439 \u0441\u0435\u0440\u0432\u0438\u0441 Windows Azure Scheduler:<\/p>\n<blockquote><p><em><strong>Windows Azure Scheduler <\/strong>\u043f\u043e\u0437\u0432\u043e\u043b\u0438\u0442 \u0432\u0430\u043c \u043e\u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043b\u044f\u0442\u044c \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0435 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f, \u0442\u0430\u043a\u0438\u0435 \u043a\u0430\u043a HTTP\/S-\u0437\u0430\u043f\u0440\u043e\u0441\u044b \u0438\u043b\u0438 \u043e\u0442\u043f\u0440\u0430\u0432\u043a\u0430 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0439 \u0432 \u043e\u0447\u0435\u0440\u0435\u0434\u044c \u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0430, \u043f\u043e \u0440\u0430\u0441\u043f\u0438\u0441\u0430\u043d\u0438\u044e. \u0421 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043f\u043b\u0430\u043d\u0438\u0440\u043e\u0432\u0449\u0438\u043a\u0430 \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0442\u044c \u0437\u0430\u0434\u0430\u0447\u0438 \u0432 \u043e\u0431\u043b\u0430\u043a\u0435, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0433\u0430\u0440\u0430\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e \u0432\u044b\u0437\u043e\u0432\u0443\u0442 \u0441\u0435\u0440\u0432\u0438\u0441\u044b \u043a\u0430\u043a \u0432\u043d\u0443\u0442\u0440\u0438 \u043e\u0431\u043b\u0430\u0447\u043d\u043e\u0439 \u0438\u043d\u0444\u0440\u0430\u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b, \u0442\u0430\u043a \u0438 \u0441\u043d\u0430\u0440\u0443\u0436\u0438 \u043d\u0435\u0435. \u0412\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0442\u044c \u044d\u0442\u0438 \u0437\u0430\u0434\u0430\u0447\u0438 \u043f\u043e \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043d\u0438\u044e \u0438\u043b\u0438 \u043d\u0430 \u0440\u0435\u0433\u0443\u043b\u044f\u0440\u043d\u043e\u0439 \u043e\u0441\u043d\u043e\u0432\u0435 \u043f\u043e \u0440\u0430\u0441\u043f\u0438\u0441\u0430\u043d\u0438\u044e, \u0430 \u0442\u0430\u043a \u0436\u0435 \u043d\u0430\u0437\u043d\u0430\u0447\u0438\u0442\u044c \u0438\u0441\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 \u043d\u0430 \u043a\u0430\u043a\u0443\u044e-\u0442\u043e \u0434\u0430\u0442\u0443 \u0432 \u0431\u0443\u0434\u0443\u0449\u0435\u043c.<\/em><\/p><\/blockquote>\n<p>  \u0414\u0430\u0432\u0430\u0439\u0442\u0435 \u043f\u043e\u0437\u043d\u0430\u043a\u043e\u043c\u0438\u043c\u0441\u044f \u0441 \u043d\u043e\u0432\u044b\u043c \u0441\u0435\u0440\u0432\u0438\u0441\u043e\u043c \u043f\u043e\u0431\u043b\u0438\u0436\u0435.  <\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[],"tags":[],"class_list":["post-201840","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/201840","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=201840"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/201840\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=201840"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=201840"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=201840"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}