рдХреНрд▓рд╛рдЙрдб рдореЗрдВ CRON: рдирдИ рд╡рд┐рдВрдбреЛрдЬ рдПрдЬрд╝реНрдпреЛрд░ рд╢реЗрдбреНрдпреВрд▓рд░ рдЯрд╛рд╕реНрдХ рд╢реЗрдбреНрдпреВрд▓рд░ рд╕рд░реНрд╡рд┐рд╕ рдХреЗ рд▓рд┐рдП рдПрдХ рдкреВрд░реНрдг рдЧрд╛рдЗрдб

рдЫрд╡рд┐

Windows Azure рдореЗрдВ рд╢реЗрдбреНрдпреВрд▓ рдХрд┐рдП рдЧрдП рдХрд╛рд░реНрдп рд╣рдореЗрд╢рд╛ рдПрдХ рджрд┐рд▓рдЪрд╕реНрдк рд╡рд┐рд╖рдп рд╣реЛрддреЗ рд╣реИрдВ, рдЬрд┐рд╕рдореЗрдВ рдХрдИ рдСрдл-рдж-рд╢реЗрд▓реНрдл рд╕рдорд╛рдзрд╛рди рд╣реЛрддреЗ рд╣реИрдВ, рдЬреЛ рдХрд╛рдо рдХреЛ рд╕рд╣реА рддрд░реАрдХреЗ рд╕реЗ рдкреВрд░рд╛ рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдХрд░рддреЗ рд╣реИрдВ: рдореЛрдмрд╛рдЗрд▓ рд╕реЗрд╡рд╛ рд╢реЗрдбреНрдпреВрд▓рд░, рдХреНрд╡рд╛рд░реНрдЯреНрдЬ рд╢реЗрдбреНрдпреВрд▓рд░, рдлреНрд▓реБрдПрдВрдЯрд╕реБрдХреБрд▓рд░ , рд╡реЗрдмрдмреНрд▓реИрдХрдЧреНрд░реИрдмрд░ , рд╢реЗрдбреНрдпреВрд▓рдбреНрдпреВрдХреНрд╡реЗрдпрдЯрд╛рдЗрдо рдпреВрдЯреАрдХ , рдЖрджрд┐ред рдпрджреНрдпрдкрд┐ рдЖрдк рдЗрди рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХрд╛ рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╡реЗ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдХреНрд▓рд╛рдЙрдб рд╕реЗрд╡рд╛рдУрдВ рдпрд╛ рд╡реЗрдмрд╕рд╛рдЗрдЯреЛрдВ рдХреА рднреВрдорд┐рдХрд╛рдУрдВ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдЖрдкрдХреЗ рд╡рд┐рдВрдбреЛрдЬ рдПрдЬрд╝реНрдпреЛрд░ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдбрд┐рдЬрд╝рд╛рдЗрди рдирд╣реАрдВ рдХрд┐рдП рдЧрдП рдереЗред

рдЗрд╕ рдХрд╛рд░рдг рд╕реЗ, рд▓рдЧрднрдЧ рдПрдХ рд╕рд╛рд▓ рдкрд╣рд▓реЗ, рдЕрджрд┐рддрд┐ рдиреЗ рдЕрдкрдиреА рдирдИ рд╕реЗрд╡рд╛ рдХреА рдШреЛрд╖рдгрд╛ рдХреА - рдПрдХ рд╕реНрдХреЗрд▓реЗрдмрд▓ рдЯрд╛рд╕реНрдХ рд╢реЗрдбреНрдпреВрд▓рд░, рдЬреЛ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рд╡рд┐рдВрдбреЛрдЬ рдПрдЬрд╝реНрдпреЛрд░ рдкрд░ рдЪрд▓рдиреЗ рд╡рд╛рд▓реЗ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреА рдЬрд░реВрд░рддреЛрдВ рдХреЛ рдкреВрд░рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдЕрджрд┐рддрд┐ рд╢реЗрдбреНрдпреВрд▓рд░ рдХреЛ рд░рдпрд╛рди рдбрди рдиреЗ рд╡рд┐рдВрдбреЛрдЬ рдПрдЬрд╝реНрдпреЛрд░ рдЯреАрдо рдХреА рдПрдХ рдХрд┐рдВрд╡рджрдВрддреА рджреНрд╡рд╛рд░рд╛ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рдерд╛, рдХреБрдЫ рдорд╣реАрдиреЗ рдкрд╣рд▓реЗ рд╕реЗрд╡рд╛ рдиреЗ 500,000 рдХрд╛рд░реНрдпреЛрдВ рдХрд╛ рдЬрд╢реНрди рдордирд╛рдпрд╛ рдФрд░ рд╡рд┐рдВрдбреЛрдЬ рдПрдЬрд╝реНрдпреЛрд░ рд╕реНрдЯреЛрд░реЗрдЬ рдХреНрдпреВ рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди рдЬреЛрдбрд╝рд╛ред

рд▓реЗрдХрд┐рди рдорд╛рдЗрдХреНрд░реЛрд╕реЙрдлреНрдЯ рдиреЗ рд╣рд╛рд▓ рд╣реА рдореЗрдВ рдЕрджрд┐рддрд┐ рд╢реЗрдбреНрдпреВрд▓рд░ рдХреЗ рд▓рд┐рдП рдПрдХ рдмрдврд╝рд┐рдпрд╛ рд╡рд┐рдХрд▓реНрдк рдХреА рдШреЛрд╖рдгрд╛ рдХреА, рдирдИ рд╡рд┐рдВрдбреЛрдЬ рдПрдЬрд╝реНрдпреЛрд░ рд╢реЗрдбреНрдпреВрд▓рд░ рд╕реЗрд╡рд╛:

рд╡рд┐рдВрдбреЛрдЬ рдПрдЬрд╝реНрдпреЛрд░ рд╢реЗрдбреНрдпреВрд▓рд░ рдЖрдкрдХреЛ рдПрдХ рд╢реЗрдбреНрдпреВрд▓ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рд╡рд┐рднрд┐рдиреНрди рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреЛ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ, рдЬреИрд╕реЗ рдХрд┐ HTTP / S рдЕрдиреБрд░реЛрдз рдпрд╛ рднрдВрдбрд╛рд░рдг рдХрддрд╛рд░ рдореЗрдВ рд╕рдВрджреЗрд╢ рднреЗрдЬрдирд╛ред рд╢реЗрдбреНрдпреВрд▓рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ, рдЖрдк рдХреНрд▓рд╛рдЙрдб рдореЗрдВ рдХрд╛рд░реНрдп рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рдХреНрд▓рд╛рдЙрдб рдЗрдВрдлреНрд░рд╛рд╕реНрдЯреНрд░рдХреНрдЪрд░ рдХреЗ рдЕрдВрджрд░ рдФрд░ рдЙрд╕рдХреЗ рдмрд╛рд╣рд░ рджреЛрдиреЛрдВ рд╕реЗрд╡рд╛рдУрдВ рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рдХреА рдЧрд╛рд░рдВрдЯреА рд╣реИред рдЖрдк рдЗрди рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдЕрдиреБрд╕реВрдЪреА рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдорд╛рдВрдЧ рдпрд╛ рдирд┐рдпрдорд┐рдд рдЖрдзрд╛рд░ рдкрд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд╕рд╛рде рд╣реА рднрд╡рд┐рд╖реНрдп рдореЗрдВ рдХреБрдЫ рддрд╛рд░реАрдЦреЛрдВ рдХреЗ рд▓рд┐рдП рдирд┐рд╖реНрдкрд╛рджрди рдХрд╛ рд╕рдордп рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рдЖрдЗрдП рдирдИ рд╕реЗрд╡рд╛ рдХреЛ рдмреЗрд╣рддрд░ рддрд░реАрдХреЗ рд╕реЗ рдЬрд╛рдиреЗрдВред

рдкреВрд░реНрд╡рд╛рд╡рд▓реЛрдХрди рд╕реЗрд╡рд╛ рдХреЛ рд╕рдХреНрд░рд┐рдп рдХрд░реЗрдВ


Windows Azure рд╢реЗрдбреНрдпреВрд▓рд░ рд╕реЗрд╡рд╛ рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдкреВрд░реНрд╡рд╛рд╡рд▓реЛрдХрди рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрд▓рдмреНрдз рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЛ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рд╕реЗрд╡рд╛рдУрдВ рдХреЗ рдкреГрд╖реНрда рдкрд░ рдЗрд╕рдХреА рд╕рджрд╕реНрдпрддрд╛ рд▓реЗрдиреА рд╣реЛрдЧреА: http://www.windowsazure.com/en-us/services/preview/ ред



Windows Azure рд╡реНрдпрд╡рд╕реНрдерд╛рдкрди рдкреЛрд░реНрдЯрд▓ рдореЗрдВ рд╕реЗрд╡рд╛ рдкреНрд░рдмрдВрдзрди рдЕрднреА рддрдХ рдЙрдкрд▓рдмреНрдз рдирд╣реАрдВ рд╣реИред рдЕрдиреБрд╕реВрдЪрдХ рдХреЗ рд╕рд╛рде рдмрд╛рддрдЪреАрдд рдХрд░рдиреЗ рдХрд╛ рдПрдХрдорд╛рддреНрд░ рддрд░реАрдХрд╛ рдПрдХ рдЦреБрд▓реЗ рдЖрд░рдПрдПрд╕рдЯреА рдПрдкреАрдЖрдИ рдпрд╛ рдПрдХ рддреИрдпрд╛рд░ рдПрд╕рдбреАрдХреЗ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реИред рд╕рд░реНрд╡рд┐рд╕ API рдХреЛ рд╢реЗрдбреНрдпреВрд▓рд░ REST API рд╕рдВрджрд░реНрдн рдЕрдиреБрднрд╛рдЧ рдореЗрдВ MSDN рдкрд░ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рд╡рд░реНрдгрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред

рдПрд╕рдбреАрдХреЗ рд╕реНрдерд╛рдкрдирд╛


рд╢реЗрдбреНрдпреВрд▓рд░ SDK рдПрдХ NuGet рдкреИрдХреЗрдЬ (рдкрд╣рд▓реЗ рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ) рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрд▓рдмреНрдз рд╣реИ рдФрд░ рдХреБрдЫ рд╕рдордп рдкрд╣рд▓реЗ рдЬрд╛рд░реА рдирдП рд╡рд┐рдВрдбреЛрдЬ рдПрдЬрд╝реНрдпреЛрд░ рдореИрдиреЗрдЬрдореЗрдВрдЯ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рд╣реИред рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ рдЖрдкрдХреЛ рдкреИрдХреЗрдЬ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:
PM> рдЗрдВрд╕реНрдЯрд╛рд▓-рдкреИрдХреЗрдЬ Microsoft.WindowsAzure.Management.Scheduler тАУPre

рд╢реБрд░реБрдЖрдд рд╣реЛ рд░рд╣реА рд╣реИ


рдирдИ рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХрд╛ рд╢реАрдШреНрд░ рдкрд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдореИрдВрдиреЗ Windows Azure Publish Settings рдлрд╝рд╛рдЗрд▓ (рдЬрд┐рд╕реЗ рдЖрдк рдпрд╣рд╛рдБ рд╕реЗ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ ) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ред рдирд┐рдореНрди рд╡рд░реНрдЧ рдПрдХ рдлрд╝рд╛рдЗрд▓ рд╕реЗ рдбреЗрдЯрд╛ рдирд┐рдХрд╛рд▓рддрд╛ рд╣реИ рдФрд░ рдЙрд╕рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдПрдХ рдкреНрд░рдорд╛рдг рдкрддреНрд░CloudCredentials рдСрдмреНрдЬреЗрдХреНрдЯ рдмрдирд╛рддрд╛ рд╣реИ, рдЬрд┐рд╕реЗ рдЖрдк рдкреНрд░рдмрдВрдзрди рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддреЗ рд╕рдордп рдкреНрд░рдорд╛рдгреАрдХрд░рдг рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:

public static class CertificateCloudCredentialsFactory { public static CertificateCloudCredentials FromPublishSettingsFile(string path, string subscriptionName) { var profile = XDocument.Load(path); var subscriptionId = profile.Descendants("Subscription") .First(element => element.Attribute("Name").Value == subscriptionName) .Attribute("Id").Value; var certificate = new X509Certificate2( Convert.FromBase64String(profile.Descendants("PublishProfile").Descendants("Subscription").Single().Attribute("ManagementCertificate").Value)); return new CertificateCloudCredentials(subscriptionId, certificate); } } 

рдЗрд╕ рд╡рд░реНрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдПрдХ рдмрд╣реБрдд рд╣реА рд╕рд░рд▓ рдХрд╛рд░реНрдп рд╣реИ:

 var publishSettingsFilePath = @"D:\\azdem.publishsettings"; var subscriptionName = "Azdem194D92901Y"; var credentials = CertificateCloudCredentialsFactory .FromPublishSettingsFile(publishSettingsFilePath, subscriptionName); 

рдХрд╛рд░реНрдп рд╢реЗрдбреНрдпреВрд▓рд░ рд╕реЗрд╡рд╛ рдХреНрд▓рд╛рдЙрдб рд╕реЗрд╡рд╛ (рдХреНрд▓рд╛рдЙрдб рд╕реЗрд╡рд╛) рдореЗрдВ рдЪрд▓рддреА рд╣реИ, рдпрд╣реА рд╡рдЬрд╣ рд╣реИ рдХрд┐ рд╣рдордиреЗ рдХреНрд▓рд╛рдЙрдб рд╕реЗрд╡рд╛ рдмрдирд╛рдХрд░ рд╢реБрд░реБрдЖрдд рдХреАред рдлрд┐рд▓рд╣рд╛рд▓, рдЖрдкрдХреЛ рдПрдХ рдмрд┐рдВрджреБ рдХреЛ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрдирд╛ рдЪрд╛рд╣рд┐рдП: рдмрдирд╛рдИ рдЧрдИ рдХреНрд▓рд╛рдЙрдб рд╕реЗрд╡рд╛ рдЙрд╕ рдХреНрд╖реЗрддреНрд░ рдореЗрдВ рд╕реНрдерд┐рдд рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдП рдЬрд┐рд╕рдореЗрдВ рд╡рд┐рдВрдбреЛрдЬ рдПрдЬрд╝реНрдпреЛрд░ рд╢реЗрдбреНрдпреВрд▓рд░ рд╕реЗрд╡рд╛ рд╕рдорд░реНрдерд┐рдд рд╣реИ (рдкреВрд░реНрд╡рд╛рд╡рд▓реЛрдХрди рдЪрд░рдг рдореЗрдВ, рд╕рдорд░реНрдерди рдХреЗрд╡рд▓ рдХреБрдЫ рдХреНрд╖реЗрддреНрд░реЛрдВ рддрдХ рд╕реАрдорд┐рдд рд╣реИ, рд▓реЗрдХрд┐рди рдмрд╛рдХреА рдХреЛ рдмрд╛рдж рдореЗрдВ рдЬреЛрдбрд╝рд╛ рдЬрд╛рдПрдЧрд╛ рдЬрдм рд╕реЗрд╡рд╛ рд╡рд╛рдгрд┐рдЬреНрдпрд┐рдХ рд╕рдВрдЪрд╛рд▓рди рдореЗрдВ рдЬрд╛рддреА рд╣реИ)ред

 var cloudServiceClient = new CloudServiceManagementClient(credentials); var result = cloudServiceClient.CloudServices.Create("sandrino-cs1", new CloudServiceCreateParameters() { Description = "sandrino-cs1", GeoRegion = "north europe", Label = "sandrino-cs1" }); Console.WriteLine(result.Status); Console.WriteLine(result.HttpStatusCode); 

рдЯрд╛рд╕реНрдХ рд╢реЗрдбреНрдпреВрд▓рд░ рд░рд┐рд╕реЛрд░реНрд╕ рдкреНрд░реЛрд╡рд╛рдЗрдбрд░ рдХреЛ рдкрдВрдЬреАрдХреГрдд рдХрд░реЗрдВ


рдпрд╣ рдЬреНрдЮрд╛рдд рд╣реИ рдХрд┐ рдХреНрд▓рд╛рдЙрдб рд╕реЗрд╡рд╛ рдореЗрдВ рд╡рд░реНрдЪреБрдЕрд▓ рдорд╢реАрди (IaaS) рдФрд░ рд╡реЗрдм рдпрд╛ рд╡рд░реНрдХ рд░реЛрд▓реНрд╕ (PaaS) рджреЛрдиреЛрдВ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдЕрдм рд╣рдо рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдХреНрд▓рд╛рдЙрдб рд╕реЗрд╡рд╛ рдореЗрдВ "рд╕рдВрд╕рд╛рдзрди рдкреНрд░рджрд╛рддрд╛" рднреА рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдЬреИрд╕реЗ рдХрд┐ рд╡рд┐рдВрдбреЛрдЬ рдПрдЬрд╝реНрдпреЛрд░ рд╢реЗрдбреНрдпреВрд▓рд░ред рдЖрдкрдХреА рдХреНрд▓рд╛рдЙрдб рд╕реЗрд╡рд╛ рдореЗрдВ рд╕рдорд╛рди рд╕рдВрд╕рд╛рдзрди рдкреНрд░рджрд╛рддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ рдЗрд╕реЗ рдЕрдкрдиреЗ рд▓рд┐рдП рд╕рдХреНрд╖рдо рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рд╕рджрд╕реНрдпрддрд╛: рдпрджрд┐ рдЖрдк рдРрд╕рд╛ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рддреНрд░реБрдЯрд┐ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░реЗрдВрдЧреЗ:
Microsoft.WindowsAzure.CloudException рдореЗрдВ 'Microsoft.WindowsAzure.CloudException' рдкреНрд░рдХрд╛рд░ рдХрд╛ рдПрдХ рдЕрдкрд╡рд╛рдж рдирд╣реАрдВ рд╣реИред

рдЕрддрд┐рд░рд┐рдХреНрдд рдЬрд╛рдирдХрд╛рд░реА: ForbiddenError: рд╕рджрд╕реНрдпрддрд╛ рд╕рдВрд╕рд╛рдзрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рд╣рдХрджрд╛рд░ рдирд╣реАрдВ рд╣реИ
рдЕрдм рд╣рдо рдХрд╛рд░реНрдп рдЕрдиреБрд╕реВрдЪрдХ рдкреНрд░рджрд╛рддрд╛ рдХреЛ рдкрдВрдЬреАрдХреГрдд рдХрд░рддреЗ рд╣реИрдВ (рдкрдВрдЬреАрдХрд░рдг рд╕рдВрдкреВрд░реНрдг рд╕рджрд╕реНрдпрддрд╛ рдХреЗ рд▓рд┐рдП рд╡реИрдз рд╣реИ):

 var schedulerServiceClient = new SchedulerManagementClient(credentials); var result = schedulerServiceClient.RegisterResourceProvider(); Console.WriteLine(result.RequestId); Console.WriteLine(result.StatusCode); Console.ReadLine(); 

рд╕рдВрд╕рд╛рдзрди рдкреНрд░рджрд╛рддрд╛ рдХреЛ рдкрдВрдЬреАрдХреГрдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдЗрд╕рдХреЗ рдЧреБрдгреЛрдВ рдХрд╛ рдЕрдиреБрд░реЛрдз рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ:

 var schedulerServiceClient = new SchedulerManagementClient(credentials); var result = schedulerServiceClient.GetResourceProviderProperties(); foreach (var prop in result.Properties) { Console.WriteLine(prop.Key + ": " + prop.Value); } Console.ReadLine(); 

рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрд╣ рдХреЛрдб рд╣рдореЗрдВ рд╕реЗрд╡рд╛ рдХреЗ рд▓рд┐рдП рдЙрдкрд▓рдмреНрдз рдЙрдкрдпреЛрдЧ рдпреЛрдЬрдирд╛рдУрдВ рдФрд░ рдЙрди рдХреНрд╖реЗрддреНрд░реЛрдВ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ рдЬрд┐рдирдореЗрдВ рд╕реЗрд╡рд╛ рд╕рдВрдЪрд╛рд▓рд┐рдд рд╣реЛ рд╕рдХрддреА рд╣реИ:



рдиреМрдХрд░реА рд╕рдВрдЧреНрд░рд╣


рдЕрдЧрд▓рд╛ рдХрджрдо рдПрдХ "рдиреМрдХрд░реА рд╕рдВрдЧреНрд░рд╣" рдмрдирд╛рдирд╛ рд╣реИ, рдЬреЛ рдЖрдкрдХреЗ рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдХрдВрдЯреЗрдирд░ рд╣реИ рдФрд░ рдЙрдиреНрд╣реЗрдВ рд╡рд┐рднрд┐рдиреНрди рдХреЛрдЯрд╛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рддрдВрддреНрд░ рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдпрд╣ рд╡рд╣ рдЬрдЧрд╣ рд╣реИ рдЬрд╣рд╛рдБ рдЖрдкрдХреЛ рд╕реЗрд╡рд╛ рдЙрдкрдпреЛрдЧ рдХреЗ рдореБрдлреНрдд рдпрд╛ рднреБрдЧрддрд╛рди рд╕реНрддрд░ рдЪреБрдирдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ:
рдПрдХ рдХрд╛рд░реНрдп рд╕рдВрдЧреНрд░рд╣ рдореЗрдВ рдХрд╛рд░реНрдпреЛрдВ рдХрд╛ рдПрдХ рд╕рдореВрд╣ рд╣реЛрддрд╛ рд╣реИ рдФрд░ рд╕рдВрдЧреНрд░рд╣ рдореЗрдВ рд╕рднреА рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рд╕реЗрдЯрд┐рдВрдЧреНрд╕, рдХреЛрдЯрд╛ рдФрд░ рдкреНрд░рддрд┐рдмрдВрдзреЛрдВ рдХрд╛ рдкреНрд░рдмрдВрдзрди рдХрд░рддрд╛ рд╣реИред рд╕рджрд╕реНрдпрддрд╛ рдХреЗ рд╕реНрд╡рд╛рдореА рджреНрд╡рд╛рд░рд╛ рдХрд╛рд░реНрдпреЛрдВ рдХрд╛ рдПрдХ рд╕рдВрдЧреНрд░рд╣ рдмрдирд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ; рдпрд╣ рдЙрдкрднреЛрдЧ рдпрд╛ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рд╕реАрдорд╛рдУрдВ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдПрдХ рд╕рд╛рде рдЬреЛрдбрд╝рддрд╛ рд╣реИред рдХрд╛рд░реНрдпреЛрдВ рдХрд╛ рд╕рдВрдЧреНрд░рд╣ рдПрдХ рдХреНрд╖реЗрддреНрд░ рддрдХ рд╕реАрдорд┐рдд рд╣реИред рдпрд╣ рдЖрдкрдХреЛ рд╕рдВрдЧреНрд░рд╣ рдореЗрдВ рд╕рднреА рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рдЙрдкрднреЛрдЧ рдореЗрдЯреНрд░рд┐рдХреНрд╕ рдкрд░ MaxJobs рдФрд░ MaxRecurrence рдХреЛрдЯрд╛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рднреА рджреЗрддрд╛ рд╣реИред
рдЖрдк рдЗрд╕ рд▓рд┐рдВрдХ рдкрд░ рджреЛрдиреЛрдВ рдпреЛрдЬрдирд╛рдУрдВ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛ рд╕рдХрдиреЗ рд╡рд╛рд▓реЗ рдХреЛрдЯрд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзрд┐рдХ рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ: http://msdn.microsoft.com/en-us/library/windowsazure/dn479786.aspx ред

 var schedulerServiceClient = new SchedulerManagementClient(credentials); var result = schedulerServiceClient.JobCollections.Create("sandrino-cs2", "jobcoll001", new JobCollectionCreateParameters() { Label = "jobcoll001", 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(); 

HTTP (рдПрд╕) рдХрд╛рд░реНрдп рдФрд░ рднрдВрдбрд╛рд░рдг рдХрддрд╛рд░


рдЕрдм рдЬрдм рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдХрд╛рд░реНрдпреЛрдВ рдХрд╛ рд╕рдВрдЧреНрд░рд╣ рд╣реИ, рддреЛ рд╣рдо рд╢реЗрдбреНрдпреВрд▓рд░ рдХреЗ рд▓рд┐рдП рдХрд╛рд░реНрдп рдмрдирд╛рдирд╛ рд╢реБрд░реВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдХрд╛рд░реНрдп рд╢реЗрдбреНрдпреВрд▓рд░ рд╡рд░реНрддрдорд╛рди рдореЗрдВ рддреАрди рдкреНрд░рдХрд╛рд░ рдХреЗ рдХрд╛рд░реНрдпреЛрдВ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИ: HTTP, HTTPS рдФрд░ рд╕рдВрдЧреНрд░рд╣рдг рдХрддрд╛рд░ред рдЖрдЗрдП рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ http рд╕рдкреЛрд░реНрдЯ рджреЗрдЦреЗрдВ:

 var schedulerClient = new SchedulerClient(credentials, "sandrino-cs2", "jobcoll001"); var result = schedulerClient.Jobs.Create(new JobCreateParameters() { Action = new JobAction() { Type = JobActionType.Http, Request = new JobHttpRequest() { Body = "customer=sandrino&command=sendnewsletter", Headers = new Dictionary() { { "Content-Type", "application/x-www-form-urlencoded" }, { "x-something", "value123" } }, Method = "POST", Uri = new Uri("http://postcatcher.in/catchers/527af9acfe325802000001cb") } }, StartTime = DateTime.UtcNow, Recurrence = new JobRecurrence() { Frequency = JobRecurrenceFrequency.Minute, Interval = 1, Count = 5 } }); Console.WriteLine(result.RequestId); Console.WriteLine(result.StatusCode); Console.ReadLine(); 

рдпрд╣ рдХрд╛рд░реНрдп рдореЗрд░реЗ рдЯрд╛рд╕реНрдХрдХреЙрд▓001 рдХрд╛рд░реНрдп рд╕рдВрдЧреНрд░рд╣ рдореЗрдВ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рдерд╛, рдпрд╣ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдирд┐рдХрд╛рдп рдХреЗ рд╕рд╛рде рдПрдХ рдкреЛрд╕реНрдЯ рдЕрдиреБрд░реЛрдз рднреЗрдЬреЗрдЧрд╛ рдФрд░ рд╣реЗрдбрд░ рдХрд╛ рдЕрдиреБрд░реЛрдз рдХрд░реЗрдЧрд╛ред рдХреГрдкрдпрд╛ рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдореИрдВ рдЕрдиреБрд░реЛрдз рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рд╛рдордЧреНрд░реА рдХреЗ рдкреНрд░рдХрд╛рд░ рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ HTTP (рдПрд╕) рдЬреИрд╕реЗ рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╣реИред рдЪреВрдВрдХрд┐ рдореИрдВ рд╕рд╢реБрд▓реНрдХ рд╢реЗрдбреНрдпреВрд▓рд░ рдпреЛрдЬрдирд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ, рдЗрд╕рд▓рд┐рдП рдореБрдЭреЗ рд╣рд░ рдорд┐рдирдЯ рдПрдХ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рдХреЗ рд╕рд╛рде рдХрд╛рд░реНрдп рдмрдирд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рд╣реИред рдЗрд╕ рдкреНрд░рджрд░реНрд╢рди рдХреЗ рд▓рд┐рдП, рдореИрдВрдиреЗ рдХрд╛рд░реНрдп рдХреЛ рдкрд╛рдВрдЪ рдирд┐рд╖реНрдкрд╛рджрди рддрдХ рд╕реАрдорд┐рдд рдХрд░ рджрд┐рдпрд╛ред

рдЕрдВрдд рдореЗрдВ, рдпрджрд┐ рдЖрдк рдпреВрдЖрд░рдЖрдИ рдкрд░ рдзреНрдпрд╛рди рджреЗрддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рджреЗрдЦреЗрдВрдЧреЗ рдХрд┐ рдореИрдВ http://postcatcher.in рд╕реЗрд╡рд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВред рдпрд╣ рдПрдХ рдирд┐рд╢реБрд▓реНрдХ рд╕реЗрд╡рд╛ рд╣реИ рдЬреЛ рдЖрдкрдХреЛ POST рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЛ рдбреАрдмрдЧ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреА рд╣реИ, рдЬреЛ рдХрд┐ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдореИрдВ рдХрд░рддрд╛ рд╣реВрдВред рдЖрдЗрдП рджреЗрдЦреЗрдВ рдХрд┐ рдХрд╛рд░реНрдп рдЕрдиреБрд╕реВрдЪрдХ рдХреНрдпрд╛ рдХрд░рддрд╛ рд╣реИ:



рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдЕрдиреБрд╕реВрдЪрдХ рдХреБрдЫ рдЕрдиреНрдп рдбреЗрдЯрд╛ рд╕рд╣рд┐рдд рдЕрдиреБрд░реЛрдз рдирд┐рдХрд╛рдп рдФрд░ рдореЗрд░реЗ рджреНрд╡рд╛рд░рд╛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рд╣реЗрдбрд░ рднреЗрдЬрддрд╛ рд╣реИред рдЕрддрд┐рд░рд┐рдХреНрдд рд╢реАрд░реНрд╖рд▓реЗрдЦреЛрдВ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рд╣реЛрддреА рд╣реИ рдХрд┐ рдХрд╛рд░реНрдп рдХрд╣рд╛рдБ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ рдФрд░ рдХрд╛рд░реНрдп рдХреЗ рдХрд┐рд╕ рд╕рдВрдЧреНрд░рд╣ рдореЗрдВ рдХрд╛рд░реНрдп рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред

 { "connection": "close", "content-length": "40", "content-type": "application/x-www-form-urlencoded", "host": "postcatcher.in", "x-forwarded-for": "137.116.241.137", "x-ms-client-request-id": "988c7a64-55e1-41e4-8cf0-ce1eeca240ac", "x-ms-execution-tag": "0726fa245447c91674c75db3f3564d63", "x-ms-scheduler-execution-region": "North Europe", "x-ms-scheduler-expected-execution-time": "2013-11-07T02:39:27", "x-ms-scheduler-jobcollectionid": "jobcoll001", "x-ms-scheduler-jobid": "7ce6971c-5aa1-4701-b6bd-02f63ee82d17", "x-real-ip": "137.116.241.137", "x-request-start": "1383791968800", "x-something": "value123" } 

рдЕрдм рдХрд╛рд░реНрдп рдХреЗ рдкреНрд░рдХрд╛рд░ рдХреЛ рд╕реНрдЯреЛрд░реЗрдЬ рдХрддрд╛рд░ рдореЗрдВ рдмрджрд▓рддреЗ рд╣реИрдВред

 var storageAccount = new CloudStorageAccount(new StorageCredentials("labdrino", ""), true); var queueClient = storageAccount.CreateCloudQueueClient(); var queue = queueClient.GetQueueReference("scheduled-tasks"); queue.CreateIfNotExists(); var perm = new QueuePermissions(); var policy = new SharedAccessQueuePolicy { SharedAccessExpiryTime = DateTime.MaxValue, Permissions = SharedAccessQueuePermissions.Add }; perm.SharedAccessPolicies.Add("jobcoll001policy", policy); queue.SetPermissions(perm); var sas = queue.GetSharedAccessSignature(new SharedAccessQueuePolicy(), "jobcoll001policy"); var schedulerClient = new SchedulerClient(credentials, "sandrino-cs2", "jobcoll001"); var result = schedulerClient.Jobs.Create(new JobCreateParameters() { Action = new JobAction() { Type = JobActionType.StorageQueue, QueueMessage = new JobQueueMessage() { Message = "hello there!", QueueName = "scheduled-tasks", SasToken = sas, StorageAccountName = "labdrino" } }, StartTime = DateTime.UtcNow, Recurrence = new JobRecurrence() { Frequency = JobRecurrenceFrequency.Minute, Interval = 1, Count = 5 } }); Console.WriteLine(result.RequestId); Console.WriteLine(result.StatusCode); Console.ReadLine(); 

рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдПрдХ рдХрд╛рд░реНрдп рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЬреИрд╕реЗ рдХрд┐ рднрдВрдбрд╛рд░рдг рдХрддрд╛рд░реЗрдВ, рд╣рдореЗрдВ рдереЛрдбрд╝рд╛ рдФрд░ рдХрд╛рдо рдФрд░ рдХреЛрдб рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ рдЖрдкрдХреЛ рдПрдХ рдХрддрд╛рд░ рдмрдирд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рд╕рд╛рде рд╣реА рдЗрд╕реЗ рдЬреЛрдбрд╝рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рдХреЗ рд╕рд╛рде рдиреАрддрд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рднреАред рдЗрд╕ рдиреАрддрд┐ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдПрдХ рд╕рд╛рдЭрд╛ рдкрд╣реБрдБрдЪ рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рдмрдирд╛рдирд╛ рд╣реЛрдЧрд╛, рдЬрд┐рд╕реЗ рдмрд╛рдж рдореЗрдВ рдЕрдиреБрд╕реВрдЪрдХ рджреНрд╡рд╛рд░рд╛ рд╕рдВрджреЗрд╢реЛрдВ рдХреЛ рдХрддрд╛рд░ рдореЗрдВ рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред

рдХреЛрдб рдирд┐рд╖реНрдкрд╛рджрди рдХрд╛ рдкрд░рд┐рдгрд╛рдо рдХрддрд╛рд░ рдореЗрдВ рдПрдХ рд╕рдВрджреЗрд╢ рд╣реЛрдЧрд╛ рдЬрд┐рд╕рдореЗрдВ рд╕рдВрджреЗрд╢ рдХреЗ рдкрд╛рда рдХреЗ рд╕рд╛рде рдХрд╛рд░реНрдп рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рд╢рд╛рдорд┐рд▓ рд╣реИ "рд╣реИрд▓реЛ!":



рдХрд╛рд░реНрдп рдЗрддрд┐рд╣рд╛рд╕


рдЖрдкрдХреЗ рдХрд╛рд░реНрдп рдкреВрд░реНрдг рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж, рдЖрдк рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдЕрдиреБрд╕реВрдЪрдХ рдХреЗ рдкрд░рд┐рдгрд╛рдо рдЬрд╛рдирдирд╛ рдЪрд╛рд╣реЗрдВрдЧреЗред рдпрд╣ рдЧреЗрдЯрд╣рд┐рд╕реНрдЯрд░ рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдЬрд┐рд╕рдХреЗ рд╕рд╛рде рдХрд╛рд░реНрдп рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рдкреИрд░рд╛рдореАрдЯрд░ рдкрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдХрд╛рд░реНрдп рдмрдирд╛рдиреЗ рдХреЗ рдмрд╛рдж, рдХрд╛рд░реНрдп рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рдХреЛ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреЗ рд░реВрдк рдореЗрдВ рд▓реМрдЯрд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЖрдк рд╕реВрдЪреА рд╡рд┐рдзрд┐ рдХреЛ рдХреЙрд▓ рдХрд░рдХреЗ рд╕рдВрдЧреНрд░рд╣ рдХреЗ рд╕рднреА рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рд╕реНрдХреНрд░реЙрд▓ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:

 var schedulerClient = new SchedulerClient(credentials, "sandrino-cs2", "jobcoll001"); foreach (var job in schedulerClient.Jobs.List(new JobListParameters() { State = JobState.Enabled })) { Console.WriteLine("Job: {0} - Action: {1} - State: {2} - Status: {3}", job.Id, job.Action, job.State, job.Status); foreach (var history in schedulerClient.Jobs.GetHistory(job.Id, new JobGetHistoryParameters())) { Console.WriteLine(" > {0} - {1}: {2}", history.StartTime, history.EndTime, history.Message); } } Console.ReadLine(); 

рдЗрд╕ рдХреЛрдб рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рд╕реЗ рдЖрдкрдХреЛ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреЗ рд╕рдорд╛рди рдкрд░рд┐рдгрд╛рдо рдорд┐рд▓реЗрдЧрд╛:
рдиреМрдХрд░реА: 34851054-f576-48b8-8c77-73b62b502022 - рдПрдХреНрд╢рди: Microsoft.WindowsAzure.Scheduler.Models.JobAction - рд░рд╛рдЬреНрдп: рджреЛрд╖рдкреВрд░реНрдг - рд╕реНрдерд┐рддрд┐: Microsoftред WindowsAzure.Scheduler.Models.JobStatus
> 11/11/2013 2:52:18 - 11/11/2013 2:52:19: StorageQueue рдПрдХреНрд╢рди - рдкреНрд░рджрд╛рди рдХреА рдЧрдИ рдХрддрд╛рд░: 'рд╢реЗрдбреНрдпреВрд▓ рдХрд┐рдП рдЧрдП рдХрд╛рд░реНрдп' рдореМрдЬреВрдж рдирд╣реАрдВ рд╣реИрдВ рдпрд╛ рд╕рд╛рд╕ рдЯреЛрдХрди рдХреЛ рд╕рдВрджреЗрд╢ рдЬреЛрдбрд╝рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рдирд╣реАрдВ рд╣реИ рджреА рдЧрдИ рдХрддрд╛рд░ рдореЗрдВ
> 7/11/2013 2:52:48 - 7/11/2013 2:52:50: StorageQueue Action - рдкреНрд░рджрд╛рди рдХреА рдЧрдИ рдХрддрд╛рд░: 'рдЕрдиреБрд╕реВрдЪрд┐рдд-рдХрд╛рд░реНрдп' рдореМрдЬреВрдж рдирд╣реАрдВ рд╣реИ рдпрд╛ рд╕рд╛рд╕ рдЯреЛрдХрди рдХреЛ рд╕рдВрджреЗрд╢ рдЬреЛрдбрд╝рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рдирд╣реАрдВ рд╣реИ рджреА рдЧрдИ рдХрддрд╛рд░ рдореЗрдВ
> 11/11/2013 2:53:19 - 7/11/2013 2:53:19: StorageQueue Action - рдкреНрд░рджрд╛рди рдХреА рдЧрдИ рдХрддрд╛рд░: 'рдЕрдиреБрд╕реВрдЪрд┐рдд-рдХрд╛рд░реНрдп' рдореМрдЬреВрдж рдирд╣реАрдВ рд╣реИ рдпрд╛ рд╕рд╛рд╕ рдЯреЛрдХрди рдХреЛ рд╕рдВрджреЗрд╢ рдЬреЛрдбрд╝рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рдирд╣реАрдВ рд╣реИ рджреА рдЧрдИ рдХрддрд╛рд░ рдореЗрдВ
> 11/11/2013 2:53:48 - 11/11/2013 2:53:50: StorageQueue Action - рдкреНрд░рджрд╛рди рдХреА рдЧрдИ рдХрддрд╛рд░: 'рдЕрдиреБрд╕реВрдЪрд┐рдд-рдХрд╛рд░реНрдп' рдореМрдЬреВрдж рдирд╣реАрдВ рд╣реИ рдпрд╛ рд╕рд╛рд╕ рдЯреЛрдХрди рдХреЛ рд╕рдВрджреЗрд╢ рдЬреЛрдбрд╝рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рдирд╣реАрдВ рд╣реИ рджреА рдЧрдИ рдХрддрд╛рд░ рдореЗрдВ
> 11/11/2013 2:54:20 - 7/11/2013 2:54:20: StorageQueue Action - рдкреНрд░рджрд╛рди рдХреА рдЧрдИ рдХрддрд╛рд░: 'рдЕрдиреБрд╕реВрдЪрд┐рдд-рдХрд╛рд░реНрдп' рдореМрдЬреВрдж рдирд╣реАрдВ рд╣реИ рдпрд╛ рд╕рд╛рд╕ рдЯреЛрдХрди рдХреЛ рд╕рдВрджреЗрд╢ рдЬреЛрдбрд╝рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рдирд╣реАрдВ рд╣реИ рджреА рдЧрдИ рдХрддрд╛рд░ рдореЗрдВ
> 11/11/2013 3:05:19 - 7/11/2013 3:05:19: StorageQueue рдПрдХреНрд╢рди - рдкреНрд░рджрд╛рди рдХреА рдЧрдИ рдХрддрд╛рд░: 'рд╢реЗрдбреНрдпреВрд▓ рдХрд┐рдП рдЧрдП рдХрд╛рд░реНрдп' рдореМрдЬреВрдж рдирд╣реАрдВ рд╣реИрдВ рдпрд╛ рд╕реИрд╕ рдЯреЛрдХрди рдореЗрдВ рд╕рдВрджреЗрд╢ рдЬреЛрдбрд╝рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рдирд╣реАрдВ рд╣реИ рджреА рдЧрдИ рдХрддрд╛рд░ рдореЗрдВ
> 11/11/2013 3:05:49 AM - 7/11/2013 3:05:49 AM: StorageQueue рдПрдХреНрд╢рди - рдкреНрд░рджрд╛рди рдХреА рдЧрдИ рдХрддрд╛рд░: 'рд╢реЗрдбреНрдпреВрд▓ рдХрд┐рдП рдЧрдП рдХрд╛рд░реНрдп' рдореМрдЬреВрдж рдирд╣реАрдВ рд╣реИрдВ рдпрд╛ рд╕рд╛рд╕ рдЯреЛрдХрди рдХреЛ рд╕рдВрджреЗрд╢ рдЬреЛрдбрд╝рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рдирд╣реАрдВ рд╣реИ рджреА рдЧрдИ рдХрддрд╛рд░ рдореЗрдВ
> 11/11/2013 3:06:18 - 11/11/2013 3:06:19: StorageQueue Action - рдкреНрд░рджрд╛рди рдХреА рдЧрдИ рдХрддрд╛рд░: 'рд╢реЗрдбреНрдпреВрд▓ рдХрд┐рдП рдЧрдП рдХрд╛рд░реНрдп' рдореМрдЬреВрдж рдирд╣реАрдВ рд╣реИрдВ рдпрд╛ рд╕рд╛рд╕ рдЯреЛрдХрди рдХреЛ рд╕рдВрджреЗрд╢ рдЬреЛрдбрд╝рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рдирд╣реАрдВ рд╣реИ рджреА рдЧрдИ рдХрддрд╛рд░ рдореЗрдВ

рдиреМрдХрд░реА: 4db6da21-af4a-4703-b988-671cb6d5fd5 - рдХреНрд░рд┐рдпрд╛: Microsoft.WindowsAzure.Scheduler.odels.JobAction - рд╕реНрдерд┐рддрд┐: рдкреВрд░реНрдг: рд╕реНрдерд┐рддрд┐: Microsoft.WindowsAzure.Scheduler.Models.JobStatus
> 11/11/2013 2:32:13 - 11/11/2013 2:32:15: Http рдПрдХреНрд╢рди - рдореЗрдЬрдмрд╛рди рд╕реЗ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ 'postcatcher.in': 'рдирд┐рд░реНрдорд┐рдд' рд░рд┐рд╕реНрдкрд╛рдВрд╕ рд╣реЗрдбрд░: рдХрдиреЗрдХреНрд╢рди: рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП
рдПрдХреНрд╕-рд░реЗрд╕реНрдкреЙрдиреНрд╕-рдЯрд╛рдЗрдо: 6ms
рджрд┐рдирд╛рдВрдХ: рдЧреБрд░реБ, 07 рдирд╡рдВрдмрд░ 2013 02:32:14 GMT
рд╕реЗрдЯ-рдХреБрдХреА: Connect.sid = 8SxhjZXandfZQc158Ng2tiYs.kyW9OSZGymzcIJW1eTJJ2MIACyhSyK6bfHVVqqj2r0E; рдкрде = /; expires = Thu, 07 Nov 2013 06:32:14 GMT; рдХреЗрд╡рд▓ Http
рд╕рд░реНрд╡рд░: nginx
рдПрдХреНрд╕-рдкрд╛рд╡рд░реНрдб-рдмрд╛рдп: рдПрдХреНрд╕рдкреНрд░реЗрд╕
рд╢рд░реАрд░: рдмрдирд╛рдпрд╛ рдЧрдпрд╛
> 11/11/2013 2:33:14 - 11/11/2013 2:33:15: Http рдПрдХреНрд╢рди - рдореЗрдЬрдмрд╛рди рд╕реЗ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ 'postcatcher.in': 'рдмрдирд╛рдпрд╛ рдЧрдпрд╛' рд░рд┐рд╕реНрдкрд╛рдВрд╕ рд╣реЗрдбрд░: рдХрдиреЗрдХреНрд╢рди: рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП
рдПрдХреНрд╕-рд░реЗрд╕реНрдкреЙрдиреНрд╕-рдЯрд╛рдЗрдо: 18ms
рджрд┐рдирд╛рдВрдХ: рдЧреБрд░реБ, реж: рдирд╡рдВрдмрд░ реирежрезрей 02:33:15 GMT
рд╕реЗрдЯ-рдХреБрдХреА: Connect.sid = BJYkjeu3m26wBfr6G2SDgXZl.nhXEo24T3AVHEMYe4xJIm7gjDmhZvd6969Iv4bui% 2Bzs; рдкрде = /; expires = Thu, 07 Nov 2013 06:33:15 GMT; рдХреЗрд╡рд▓ Http
рд╕рд░реНрд╡рд░: nginx
рдПрдХреНрд╕-рдкрд╛рд╡рд░реНрдб-рдмрд╛рдп: рдПрдХреНрд╕рдкреНрд░реЗрд╕
рд╢рд░реАрд░: рдмрдирд╛рдпрд╛ рдЧрдпрд╛
рдЯрд╛рд╕реНрдХ рдЗрддрд┐рд╣рд╛рд╕ рдХрд╛рд░реНрдп рдирд┐рд╖реНрдкрд╛рджрди рдкрд░ рджрд┐рд▓рдЪрд╕реНрдк рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рджрд╛рди рдХрд░ рд╕рдХрддрд╛ рд╣реИред рдпрджрд┐ рдХрд╛рд░реНрдп рдХреЗ рджреМрд░рд╛рди рдХреБрдЫ рдЧрд▓рдд рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдЗрддрд┐рд╣рд╛рд╕ рдкрд╣рд▓реА рдЬрдЧрд╣ рд╣реИ рдЬрд╣рд╛рдВ рдЖрдкрдХреЛ рд╕рдорд╕реНрдпрд╛ рдХреЗ рд╕реНрд░реЛрдд рдХреА рддрд▓рд╛рд╢ рд╢реБрд░реВ рдХрд░рдиреА рдЪрд╛рд╣рд┐рдПред

рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ рджреЛрд╣рд░рд╛рд╡ (рд░рд┐рдЯрд╛рдпрд░)


рдареАрдХ рд╣реИ, рдорд╛рди рд▓реАрдЬрд┐рдП рдХрд┐ рдЖрдк рдЕрдкрдиреА рд╡реЗрдмрд╕рд╛рдЗрдЯ рдкрд░ рдПрдХ HTTP рдЕрдиреБрд░реЛрдз рднреЗрдЬ рд░рд╣реЗ рд╣реИрдВ, рдЬреЛ рдЕрдиреБрдкрд▓рдмреНрдз рд╣реИ (рдмрдЧ, рд╢реЗрдбреНрдпреВрд▓ рдХрд┐рдП рдЧрдП рдХрд╛рд░реНрдп, рдХреЛрдб рдЕрдкрдбреЗрдЯ рдЖрджрд┐)ред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдЖрдк рдХреБрдЫ рд╕реЗрдХрдВрдб рдХреЗ рдмрд╛рдж рдлрд┐рд░ рд╕реЗ рдХрд╛рд░реНрдп рджреЛрд╣рд░рд╛рдирд╛ рдЪрд╛рд╣ рд╕рдХрддреЗ рд╣реИрдВред рдЕрдЪреНрдЫреА рдЦрдмрд░ рдпрд╣ рд╣реИ рдХрд┐ рдЖрдк рдХрд╛рд░реНрдп рдирд┐рд░реНрдорд╛рдг рдХреЗ рджреМрд░рд╛рди рд░рд┐рдЯреНрд░реА рдкреЙрд▓рд┐рд╕реА рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдХреЗ рдРрд╕рд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:

 var schedulerClient = new SchedulerClient(credentials, "sandrino-cs2", "jobcoll001"); 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 = ... }); 

рдЗрд╕ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рдореИрдВ рдЖрдкрдХреЛ рдирд┐рд░реНрджреЗрд╢ рджреЗрддрд╛ рд╣реВрдВ рдХрд┐ рдЖрдк рджреЛрдиреЛрдВ рдХреЗ рдмреАрдЪ рдкреНрд░рддрд┐ рдорд┐рдирдЯ рдХреЗ рдЕрдВрддрд░рд╛рд▓ рдкрд░ рдЕрдзрд┐рдХрддрдо рдкрд╛рдВрдЪ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рдХрд░реЗрдВред

рд╣реИрдВрдбрд▓рд┐рдВрдЧ рдореЗрдВ рддреНрд░реБрдЯрд┐


рдорд╛рдорд▓реЗ рдореЗрдВ рдЬрдм рдХреБрдЫ рдЧрд▓рдд рд╣реБрдЖ, рддреЛ рдЖрдк рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рд╕рдВрдХреЗрдд рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рдЪрд╛рд╣ рд╕рдХрддреЗ рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдХрд┐рд╕реА рдЕрдиреНрдп рдХрддрд╛рд░ (рдпрд╛ рдХрд┐рд╕реА рдЕрдиреНрдп рдбреЗрдЯрд╛ рдХреЗрдВрджреНрд░) рдХреЛ рднреЗрдЬрд╛ рдЧрдпрд╛ рд╕рдВрджреЗрд╢ рдпрд╛ рдХрд┐рд╕реА рдЕрдиреНрдп URL рдкрд░ рдХреЙрд▓ред рдХрд╛рд░реНрдп рдмрдирд╛рддреЗ рд╕рдордп рд╡рд┐рд╢реЗрд╖ рддреНрд░реБрдЯрд┐ рдЕрдиреБрднрд╛рдЧ рдХреЗ рдорд╛рдкрджрдВрдбреЛрдВ рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдХреЗ рдпрд╣ рд╕рдм рд╕рдВрднрд╡ рд╣реИред рдирд┐рдореНрди рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рдореИрдВ StorageQueue рд╕рдВрдЧреНрд░рд╣рдг рдХрддрд╛рд░ рдХреЗ рд▓рд┐рдП рдПрдХ рдХрд╛рд░реНрдп рдмрдирд╛рддрд╛ рд╣реВрдВ, рд▓реЗрдХрд┐рди рдореИрдВ рдПрдХ рдЕрдорд╛рдиреНрдп SAS рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рддрд╛ рд╣реВрдВред рдЗрд╕рд╕реЗ рд╢реЗрдбреНрдпреВрд▓рд░ рдХреЛ рдХрддрд╛рд░ рдореЗрдВ рдПрдХ рд╕рдВрджреЗрд╢ рднреЗрдЬрдиреЗ рдХреЗ рдХрд╛рд░реНрдп рдХреЛ рдкреВрд░рд╛ рдХрд░рдиреЗ рдореЗрдВ рд╡рд┐рдлрд▓ рд╣реЛ рдЬрд╛рдПрдЧрд╛ рдФрд░ ErrorAction рд╕реЗрдХреНрд╢рди рдХреЛ рдХреЙрд▓ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ (рд╡рд╣ рдХреЛрдб рдЬрд┐рд╕рдореЗрдВ рдореЗрд░реЗ рдкреЛрд╕реНрдЯрдХреИрдЪрд░.рдЗрди рдкреЗрдЬ рдкрд░ рдПрдХ рддреНрд░реБрдЯрд┐ рд╕рдВрджреЗрд╢ рднреЗрдЬрддрд╛ рд╣реИ)ред

 var schedulerClient = new SchedulerClient(credentials, "sandrino-cs2", "jobcoll001"); var result = schedulerClient.Jobs.Create(new JobCreateParameters() { Action = new JobAction() { Type = JobActionType.StorageQueue, QueueMessage = new JobQueueMessage() { Message = "hello there!", QueueName = "scheduled-tasks", SasToken = "not working", StorageAccountName = "labdrino" }, ErrorAction = new JobErrorAction() { Type = JobActionType.Http, Request = new JobHttpRequest() { Uri = new Uri("http://postcatcher.in/catchers/527b0b75fe325802000002b6"), Body = "type=somethingiswrong", Headers = new Dictionary() { { "Content-Type", "application/x-www-form-urlencoded" }, { "x-something", "value123" } }, Method = "POST" } } }, StartTime = DateTime.UtcNow, Recurrence = new JobRecurrence() { Frequency = JobRecurrenceFrequency.Minute, Interval = 1, Count = 5 } }); Console.WriteLine(result.RequestId); Console.WriteLine(result.StatusCode); Console.ReadLine(); 

рдЙрд╕рдХреЗ рдмрд╛рдж, рдЖрдк рдкреЛрд╕реНрдЯрдХреИрдЪрд░ рдореЗрдВ рддреНрд░реБрдЯрд┐ рд╕рдВрджреЗрд╢ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ (рд╕рдВрджреЗрд╢ рд╢реАрд░реНрд╖рд▓реЗрдЦ рдореЗрдВ рдЖрдкрдХреЗ рдХрд╛рд░реНрдп рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╕рднреА рдЖрд╡рд╢реНрдпрдХ рдЬрд╛рдирдХрд╛рд░реА рд╢рд╛рдорд┐рд▓ рд╣реИ):



рдХрд┐рд╕реА рдХрд╛рд░реНрдп рдХреА рдЖрд╡рдзрд┐рдХ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐


рд╢реЗрдбреНрдпреВрд▓рд░ рдЖрдкрдХреЛ рдХрд┐рд╕реА рдХрд╛рд░реНрдп рдХреЗ рдХрдИ рдкреНрд░рдХрд╛рд░ рдХреЗ рдЖрд╡рдзрд┐рдХ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╣рд░ рджрд┐рди рдПрдХ рдХрд╛рд░реНрдп рдЪрд▓рд╛рдПрдВ, рд▓реЗрдХрд┐рди рдЕрдзрд┐рдХрддрдо 10 рдмрд╛рд░ (рдЧрдгрдирд╛ рд╕рдВрдкрддреНрддрд┐):

 var schedulerClient = new SchedulerClient(credentials, "sandrino-cs2", "jobcoll001"); var result = schedulerClient.Jobs.Create(new JobCreateParameters() { Action = ..., Recurrence = new JobRecurrence() { Frequency = JobRecurrenceFrequency.Day, Interval = 1, Count = 10 } }); 

рдЖрдк рдпрд╣ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдХрд╛рд░реНрдп рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рддрд┐рдерд┐ рд╕реЗ рдкрд╣рд▓реЗ рд╣рд░ рджрд┐рди рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП:

 var schedulerClient = new SchedulerClient(credentials, "sandrino-cs2", "jobcoll001"); var result = schedulerClient.Jobs.Create(new JobCreateParameters() { Action = ..., Recurrence = new JobRecurrence() { Frequency = JobRecurrenceFrequency.Day, Interval = 1, EndTime = new DateTime(2013, 12, 31) } }); 

рдЗрд╕рдХреЗ рд╕рд╛рде рд╣реА, рдЖрдк рдХрд╛рд░реНрдпреЛрдВ рдХреА рдЖрд╡рдзрд┐рдХ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рдХреЗ рд▓рд┐рдП рдЕрдзрд┐рдХ рдЬрдЯрд┐рд▓ рдкреИрд░рд╛рдореАрдЯрд░ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдПрдХ рдореЗрд▓рд┐рдВрдЧ рд╕реВрдЪреА рдХреЗ рд▓рд┐рдП, рдЖрдк рд╕реЛрдорд╡рд╛рд░ рдХреЛ рдкреВрд░реНрд╡рд╛рд╣реНрди 11:00 рдмрдЬреЗ рд╕рд╛рдкреНрддрд╛рд╣рд┐рдХ рдХрд╛рд░реНрдп рдкреВрд░рд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

 var schedulerClient = new SchedulerClient(credentials, "sandrino-cs2", "jobcoll001"); var result = schedulerClient.Jobs.Create(new JobCreateParameters() { Action = new JobAction() { Type = JobActionType.Http, Request = new JobHttpRequest() { Body = "customers=Europe-West", Headers = new Dictionary() { { "Content-Type", "application/x-www-form-urlencoded" }, }, Method = "POST", Uri = new Uri("http://postcatcher.in/catchers/527af9acfe325802000001cb") } }, 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 } } } }); 

рдиреЛрдЯред рдЖрдЬ, рдирд┐рдпрдВрддреНрд░рдг рдкреБрд╕реНрддрдХрд╛рд▓рдп рдореЗрдВ рдПрдХ рдЫреЛрдЯрд╛ рд╕рд╛ рдмрдЧ рд╣реЛрддрд╛ рд╣реИ рдЬреЛ рдЖрдкрдХреЛ рдлрд╝реНрд░реАрдХреНрд╡реЗрдВрд╕реА рдХреЛ рд╕реЗрдЯ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рдирд╣реАрдВ рджреЗрддрд╛ рд╣реИ (рдпрд╛ рдЕрдиреБрд╕реВрдЪреА)ред рдЗрд╕ рд╡рдЬрд╣ рд╕реЗ, рдЖрдк рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдХреА рдЖрд╡реГрддреНрддрд┐ рдХреЗ рд╕рд╛рде рдХрд╛рд░реНрдп рдирд╣реАрдВ рдмрдирд╛ рдкрд╛рдПрдВрдЧреЗред

рдирд┐рд╖реНрдХрд░реНрд╖


рд╡рд┐рдВрдбреЛрдЬ рдПрдЬрд╝реНрдпреЛрд░ рд╢реЗрдбреНрдпреВрд▓рд░ рдореЗрдВ рдПрдХ рд╕рд╛рдзрд╛рд░рдг рдПрдкреАрдЖрдИ рд╣реИ, рд╕реНрдЯреЛрд░реЗрдЬ рдХрддрд╛рд░реЛрдВ рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди, рд░рд┐рдЯреНрд░реА рдкреЙрд▓рд┐рд╕реА, рддреНрд░реБрдЯрд┐ рд╕реЗ рдирд┐рдкрдЯрдиреЗ рдХреЗ рд▓рд┐рдПред рдпрд╣ рдирдИ рд╕реЗрд╡рд╛ рдХреЛ рдЖрдкрдХреЗ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдкреВрд░рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдорд╣рд╛рди рдЙрдкрдХрд░рдг рдмрдирд╛рддрд╛ рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдирдИ рд╕реЗрд╡рд╛ рдХрдИ рдкреНрд░рдХрд╛рд░ рдХреЗ рдкрд░рд┐рджреГрд╢реНрдпреЛрдВ рдХреЛ рдЦреЛрд▓рддреА рд╣реИ: рдЖрдкрдХреЗ рд╡рд┐рдВрдбреЛрдЬ рдПрдЬрд╝реНрдпреЛрд░ рд╡реЗрдм рд╕рд╛рдЗрдЯ рдХреЗ рд▓рд┐рдП рд╕рдордп-рдирд┐рд░реНрдзрд╛рд░рдг рдХрд╛рд░реНрдп (рдмрд┐рдирд╛ рдХрд╛рдордХрд╛рдЬреА рднреВрдорд┐рдХрд╛рдПрдВ рдмрдврд╝рд╛рдП); рдЕрдкрдиреА рдХрд╛рд░реНрдп рднреВрдорд┐рдХрд╛ рдХреЗ рд▓рд┐рдП рдбреЗрдЯрд╛ рднреЗрдЬрдирд╛; PHP, Node.js, рдЖрджрд┐ рдореЗрдВ рдЕрдкрдиреЗ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдореЗрдВ рдЕрдиреБрд╕реВрдЪрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛; Windows Azure SQL рдбреЗрдЯрд╛рдмреЗрд╕, рдЖрджрд┐ рдХреЗ рд▓рд┐рдП рдЕрдкрдирд╛ рд╕реНрд╡рдпрдВ рдХрд╛ рдПрдЬреЗрдВрдЯ рдмрдирд╛рдирд╛

рдЖрдк рдирд┐рдореНрди рд▓рд┐рдВрдХ рдкрд░ рдЕрдзрд┐рдХ рдЬрд╛рдирдХрд╛рд░реА рдкрд╛ рд╕рдХрддреЗ рд╣реИрдВ:


рдЗрд╕рдХрд╛ рдЖрдирдВрдж рд▓реЗрдВ!

Source: https://habr.com/ru/post/In201840/


All Articles