рд╡рд┐рдВрдбреЛрдЬ рдПрдЬрд╝реНрдпреЛрд░ рдореИрдиреЗрдЬрдореЗрдВрдЯ рд▓рд╛рдЗрдмреНрд░реЗрд░реА - .NET рдПрдкреНрд▓реАрдХреЗрд╢рди рд╕реЗ рдХреНрд▓рд╛рдЙрдб рдЗрдиреНрдлреНрд░рд╛рд╕реНрдЯреНрд░рдХреНрдЪрд░ рдХрд╛ рдкреНрд░рдмрдВрдзрди

рдЫрд╡рд┐

рдпрд╣ рдЖрд▓реЗрдЦ .NET рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рд╕реЗ Windows Azure рдкрд░ рд╣реЛрд╕реНрдЯ рдХрд┐рдП рдЧрдП рдХреНрд▓рд╛рдЙрдб рдЗрдиреНрдлреНрд░рд╛рд╕реНрдЯреНрд░рдХреНрдЪрд░, рд╕реЗрд╡рд╛рдУрдВ рдФрд░ рднрдВрдбрд╛рд░рдг рддрддреНрд╡реЛрдВ рдХреЛ рдкреНрд░рдмрдВрдзрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд┐рдП рдЧрдП рд╣рд╛рд▓ рд╣реА рдореЗрдВ рдЬрд╛рд░реА рдХрд┐рдП рдЧрдП Windows Azure Management рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХрд╛ рд╡рд░реНрдгрди рдХрд░рддрд╛ рд╣реИред рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЛ WPF рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╕реЗ рдХреЛрдб рдирдореВрдиреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╡рд░реНрдгрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

рд╡рд┐рдВрдбреЛрдЬ рдПрдЬрд╝реНрдпреЛрд░ рдореИрдиреЗрдЬрдореЗрдВрдЯ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреНрдпрд╛ рд╣реИ?


рд╡рд┐рдВрдбреЛрдЬ рдПрдЬрд╝реНрдпреЛрд░ рдореИрдиреЗрдЬрдореЗрдВрдЯ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреА рд░рд┐рд▓реАрдЬрд╝ рдХреЗ рд╕рд╛рде, рд╡рд┐рдВрдбреЛрдЬрд╝ рдПрдЬрд╝реНрдпреЛрд░ рдХреНрд▓рд╛рдЙрдб рдЗрдВрдлреНрд░рд╛рд╕реНрдЯреНрд░рдХреНрдЪрд░ рдХреЗ рдПрдХ рдмрдбрд╝реЗ рд╣рд┐рд╕реНрд╕реЗ рдХреЛ .NET рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рд╕реЗ рдПрдХреНрд╕реЗрд╕ рдФрд░ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдпреЗ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдЦреБрд▓реЗ REST API рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рдХреЗ рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд╢реАрд░реНрд╖ рдкрд░ рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдЙрдирдХреА рд░рд┐рд▓реАрдЬрд╝ рдХрд╛ рдЙрджреНрджреЗрд╢реНрдп рдХреНрд▓рд╛рдЙрдб рдЗрдиреНрдлреНрд░рд╛рд╕реНрдЯреНрд░рдХреНрдЪрд░ рдХреЗ рд╕рд╛рде рдбреЗрд╡рд▓рдкрд░ рдХреЗ рд╡рд┐рдХрд╛рд╕ рдХреЛ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдмрдирд╛рдирд╛ рд╣реИред

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

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


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

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


рдХрд┐рд╕реА рднреА рдЕрдиреНрдп рдПрд╕рдбреАрдХреЗ рдХреЗ рд╕рд╛рде рдХреЗ рд░реВрдк рдореЗрдВ, рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рд╣рдо рдЗрд╕рдХреЗ рд╕рд╛рде рдХреИрд╕реЗ рдХрд╛рдо рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдереЛрдбрд╝рд╛ рдХреЛрдб рд╕реАрдЦрдирд╛ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рд╣реИред рдХрд┐рд╕реА рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЛрдИ рдХреЛрдб рдирд╣реАрдВ рд▓рд┐рдЦрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдЬреЛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдореМрдЬреВрдж рдирд╣реАрдВ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЖрдЗрдП рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ рдмрддрд╛рдПрдВ рдХрд┐ рд╡рд┐рдВрдбреЛрдЬ рдПрдЬрд╝реНрдпреЛрд░ рдореИрдиреЗрдЬрдореЗрдВрдЯ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХрд┐рд╕ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рдорд╛рдзрд╛рди рдХрд░рддреА рд╣реИ:
рдореЗрд░реЗ рдкрд╛рд╕ рдПрдХ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╣реИ рдЬрд┐рд╕реЗ рдореИрдВ рдПрдХ рд╡рд░реНрдХрд░ рд░реЛрд▓ рдХреЗ рд░реВрдк рдореЗрдВ рд╡рд┐рдВрдбреЛрдЬ рдПрдЬрд╝реНрдпреЛрд░ рдкрд░ рдЪрд▓рд╛рддрд╛ рд╣реВрдВред рд╕рдм рдХреБрдЫ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдкреНрд░рдХреНрд░рд┐рдпрд╛, рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рд╕рдкреНрддрд╛рд╣ рдореЗрдВ рдХреЗрд╡рд▓ рдХреБрдЫ рд╣реА рдмрд╛рд░ рдЪрд▓рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдПрдХ рдирдИ рд╕реЗрд╡рд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдирд╛ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛, рдЗрд╕рдореЗрдВ рдореЗрд░рд╛ рдХреЛрдб рдбрд╛рд▓реЗрдВ рдФрд░ рдлрд┐рд░ рдЗрд╕рдХрд╛ рдирд┐рд╖реНрдкрд╛рджрди рд╢реБрд░реВ рдХрд░реЗрдВред рдпрд╣ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ рдпрджрд┐, рд╕реЗрд╡рд╛ рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдХреЛрдб рдиреЗ рдЗрд╕реЗ рд╡рд╛рдкрд╕ рд░рд┐рдкреЛрд░реНрдЯ рдХрд┐рдпрд╛, рддрд╛рдХрд┐ рд╣рдо рдЗрд╕реЗ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рд╣рдЯрд╛ рд╕рдХреЗрдВред рдХрднреА-рдХрднреА, рдореИрдВ рдЗрд╕ рд╕реЗрд╡рд╛ рдХреЛ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рдмрдВрдж рдХрд░рдирд╛ рднреВрд▓ рдЬрд╛рддрд╛ рд╣реВрдВ, рддрд╛рдХрд┐ рдХреЛрдб рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рдЙрд╕ рдкрд░ рдЕрддрд┐рд░рд┐рдХреНрдд рдХрдЪрд░рд╛ рд╣реЛред рдпрд╣ рдореЗрд░реА рдЬрд╝рд░реВрд░рдд рдХреЗ рдмреБрдирд┐рдпрд╛рджреА рдврд╛рдВрдЪреЗ рдХреЗ рдирд┐рд░реНрдорд╛рдг рдХреЛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдЧрд╛, рдЗрд╕рдХреЗ рдкреНрд░рдХреНрд╖реЗрдкрдг рдФрд░ рдмрд╛рдж рдореЗрдВ рдЖрддреНрдо-рд╡рд┐рдирд╛рд╢ред
рд╡рд┐рдВрдбреЛрдЬ рдПрдЬрд╝реНрдпреЛрд░ рдореИрдиреЗрдЬрдореЗрдВрдЯ рд▓рд╛рдЗрдмреНрд░реЗрд░реА (WAML рдлреЙрд░ рд╢реЙрд░реНрдЯ, рд╣рд╛рд▓рд╛рдБрдХрд┐ рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рддреМрд░ рдкрд░ рдирд╣реАрдВ) рдХреЗ рдЖрдЧрдорди рд╕реЗ рдкрд╣рд▓реЗ, рд╡рд░реНрдгрд┐рдд рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдирд╛ рдЖрд╕рд╛рди рдХрд╛рдо рдирд╣реАрдВ рдерд╛ред рдпрд╣ рд╕рдЪ рд╣реИ, рд╕рдореБрджрд╛рдп рдореЗрдВ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдХрдИ рдмреЗрд╣рддрд░реАрди рдУрдкрдирд╕реЛрд░реНрд╕ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рд╣реИрдВ рдЬреЛ рд╡рд┐рдВрдбреЛрдЬ рдПрдЬрд╝реНрдпреЛрд░ рд╕реЗрд╡рд╛рдУрдВ рдХреЗ рдкреНрд░рдмрдВрдзрди рдХреЗ рд▓рд┐рдП .NET рд▓реЗрдпрд░ рдХреА рдкреЗрд╢рдХрд╢ рдХрд░рддреА рд╣реИрдВ, рд╣рд╛рд▓рд╛рдВрдХрд┐, рдЙрдирдореЗрдВ рд╕реЗ рдХрд┐рд╕реА рдореЗрдВ рднреА рд╡рд┐рдВрдбреЛрдЬ рдПрдЬрд╝реНрдпреЛрд░ рдореИрдиреЗрдЬрдореЗрдВрдЯ рд░реЗрд╕реНрдЯ рдПрдкреАрдЖрдИ рдлрд╝рдВрдХреНрд╢рдВрд╕ рдХрд╛ рдкреВрд░рд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдпрд╛ C # рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХрд╛ рдкреВрд░реНрдг рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдирд╣реАрдВ рд╣реИред Windows Azure рдХреНрд▓рд╛рдЙрдб рдХреА рд╢рдХреНрддрд┐ рдХреЛ рдкреНрд░рдмрдВрдзрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдкрдиреА рдЦреБрдж рдХреА рдкрд░рдд рдмрдирд╛рддреЗ рд╕рдордп, рдЖрдкрдХреЛ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ REST API рдХреЗ рд╕рд╛рде рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЗ рдЖрджрд╛рди-рдкреНрд░рджрд╛рди рдХреЗ рд▓рд┐рдП рдЕрдкрдирд╛ рдЦреБрдж рдХрд╛ HTTP / XML рдХреЛрдб рд▓рд┐рдЦрдирд╛ рд╣реЛрдЧрд╛ред рдпрд╣ рдЬреАрд╡рди рдореЗрдВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдмрд╕реЗ рджрд┐рд▓рдЪрд╕реНрдк рдмрд╛рдд рдирд╣реАрдВ рд╣реИред рдПрдХ рдЙрдмрд╛рдК рдФрд░ рдЙрдмрд╛рдК рдиреМрдХрд░реА, рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдЖрдкрдХреЗ рд╕реИрдХрдбрд╝реЛрдВ рд╕реИрдХрдбрд╝реЛрдВ рдПрдкреАрдЖрдИ рддрд░реАрдХреЛрдВ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рдмрд╛рджред

рдкреНрд░рдмрдВрдзрди рдкреБрд╕реНрддрдХрд╛рд▓рдп рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдирд╛


рдореИрдВрдиреЗ рдПрдХ рд╕рд░рд▓ WPF рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рд░реВрдк рдореЗрдВ рдХрд╛рд░реНрдп рдХреЛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рдХрд░рдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рд▓рд┐рдпрд╛, рдЬреЛ рдореЗрд░реЗ рдбреЗрд╕реНрдХрдЯреЙрдк рдкрд░ рдЪрд▓реЗрдЧрд╛ред рдЪреВрдВрдХрд┐ рдореЗрд░реЗ рдкрд╛рд╕ рдХреНрд▓рд╛рдЙрдб рдореЗрдВ рдХрд╛рдо рдХрд░рдиреЗ рд╡рд╛рд▓реА рднреВрдорд┐рдХрд╛ рдХреЗ рд╕рд╛рде рдПрдХ рдХреНрд▓рд╛рдЙрдб рд╕реЗрд╡рд╛ рд╣реЛрдЧреА, рдореИрдВрдиреЗ рд╕рднреА рддреАрди рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреЛ рдПрдХ рд╣реА рд╕рдорд╛рдзрд╛рди рдореЗрдВ рд╕рдВрдпреЛрдЬрд┐рдд рдХрд┐рдпрд╛, рдЬрд┐рд╕реЗ рдЖрдк рдиреАрдЪреЗ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ:

a123

рдЖрдкрдиреЗ рд╢рд╛рдпрдж рдзреНрдпрд╛рди рджрд┐рдпрд╛ рдХрд┐ рдореИрдВ рдЕрдкрдиреЗ рдЖрд╡реЗрджрди рдореЗрдВ рдХреБрдЫ рдиреВрдЧреЗрдЯ рдкреИрдХреЗрдЬ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рд╣реЛ рд░рд╣рд╛ рдерд╛ред рдРрд╕рд╛ рдЗрд╕рд▓рд┐рдП рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рд╡рд┐рдВрдбреЛрдЬ рдПрдЬрд╝реНрдпреЛрд░ рдореИрдиреЗрдЬрдореЗрдВрдЯ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЛ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдиреБрдЧреЗрдЯ рдкреИрдХреЗрдЬ рдХреЗ рд░реВрдк рдореЗрдВ рд╡рд┐рддрд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдореИрдВ Microsoft.WindowsAzure.Management.Lbooks рдкреИрдХреЗрдЬ рдХрд╛ рдЪрдпрди рдХрд░рдиреЗ рдЬрд╛ рд░рд╣рд╛ рд╣реВрдВ рдФрд░ рдпрд╣ рдЕрдХреЗрд▓реЗ рдкреНрд░рдмрдВрдзрди рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдореЗрдВ рдЙрдкрд▓рдмреНрдз рд╕рднреА рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЛ рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдЧрд╛ред рдЕрдЧрд░ рдореИрдВ Windows Azure рдХреЗ рдХреЗрд╡рд▓ рдПрдХ рдкрд╣рд▓реВ рдХреЛ рдкреНрд░рдмрдВрдзрд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ, рддреЛ рд╕рднреА рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рдмрдЬрд╛рдп, рдореИрдВ рдХреЗрд╡рд▓ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдкреИрдХреЗрдЬ рд╕реНрдерд╛рдкрд┐рдд рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, Microsoft.WindowsAzure.Management.WebSites , рдЬреЛ рдХреЗрд╡рд▓ Windows Azure рд╡реЗрдм рд╕рд╛рдЗрдЯреНрд╕ рдХреЗ рдмреБрдирд┐рдпрд╛рджреА рдврд╛рдВрдЪреЗ рдХреЗ рдкреНрд░рдмрдВрдзрди рдХреЗ рд▓рд┐рдП рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред

a124

рдкреИрдХреЗрдЬ рдореЗрдВ рдПрдХ рд▓рд┐рдВрдХ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рдмрд╛рдж, рдореЗрд░реЗ рдкрд╛рд╕ рд╕рдм рдХреБрдЫ рд╣реИ рдЬреЛ рдореБрдЭреЗ рдЕрдкрдиреЗ WPF рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдФрд░ Windows Azure REST API рдХреЗ рдмреАрдЪ рдХреНрд▓рд╛рдЗрдВрдЯ рдкреНрд░рдорд╛рдгреАрдХрд░рдг рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред

рдЧреНрд░рд╛рд╣рдХ рдкреНрд░рдорд╛рдгреАрдХрд░рдг


рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдкреНрд░рдорд╛рдгреАрдХрд░рдг рдХрд╛ рдкрд╣рд▓рд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдЬреЛ рд╣рдордиреЗ WAML рдФрд░ Windows Azure рдХреЗ рд▓рд┐рдП рд▓рд┐рдЦрд╛ рдерд╛, X509 рдкреНрд░рдорд╛рдгрдкрддреНрд░ рддрдВрддреНрд░ рдкрд░ рдЖрдзрд╛рд░рд┐рдд рдерд╛ред рд╣рд╛рд▓ рд╣реА рдореЗрдВ, .NET SDK 2.2, Visual Studio рдФрд░ PowerShell рдХреЗ рд▓рд┐рдП Windows Azure рдиреЗ рдмрд┐рд▓реНрдЯ-рдЗрди рдЦрд╛рддрд╛-рдЖрдзрд╛рд░рд┐рдд рдкреНрд░рдорд╛рдгреАрдХрд░рдг рдЬреЛрдбрд╝рд╛ рд╣реИред рд╣рдо рд╡рд░реНрддрдорд╛рди рдореЗрдВ WAML рдореЗрдВ рдЗрд╕рдХреЗ рд╕рдорд░реНрдерди рдкрд░ рдХрд╛рдо рдХрд░ рд░рд╣реЗ рд╣реИрдВред рдЖрдЬ рдЙрдкрд▓рдмреНрдз WAML рдкреНрд░рдорд╛рдгрдкрддреНрд░ рдХреЗрд╡рд▓ рдкреНрд░рдорд╛рдг рдкрддреНрд░ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдкреНрд░рдорд╛рдгреАрдХрд░рдг рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐, рджреЗрдЦрддреЗ рд░рд╣реЗрдВ, рд╣рдо рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдореЗрдВ рдЦрд╛рддреЛрдВ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдкреНрд░рдорд╛рдгреАрдХрд░рдг рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░ рд░рд╣реЗ рд╣реИрдВред

рдореИрдВ рдкреНрд░рдорд╛рдгрдкрддреНрд░-рдЖрдзрд╛рд░рд┐рдд рдкреНрд░рдорд╛рдгреАрдХрд░рдг рдХреЗ рдЙрдкрдпреЛрдЧ рдкрд░ рдЪрд░реНрдЪрд╛ рдХрд░рдиреЗ рдкрд░ рдзреНрдпрд╛рди рдХреЗрдВрджреНрд░рд┐рдд рдирд╣реАрдВ рдХрд░реВрдВрдЧрд╛ред рдЗрд╕рдХреЗ рд╡рд┐рдкрд░реАрдд, рдореИрдВ рдЕрдкрдиреЗ рд▓реЗрдЦ рдореЗрдВ рдХрд╛рд░реНрдпрд╛рддреНрдордХ рдЪреАрдЬреЛрдВ рдХреА рдЪрд░реНрдЪрд╛ рдХреЗ рд▓рд┐рдП рдЬрд┐рддрдиреА рдЬрд▓реНрджреА рд╣реЛ рд╕рдХреЗ рдЖрдЧреЗ рдмрдврд╝рдиреЗ рдХрд╛ рдЗрд░рд╛рджрд╛ рд░рдЦрддрд╛ рд╣реВрдВред Windows Azure REST API рд╕реЗ рдЬреБрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдореБрдЭреЗ рдХреЗрд╡рд▓ рджреЛ рддрддреНрд╡реЛрдВ рдХреА рдЬрд╛рдирдХрд╛рд░реА рдЪрд╛рд╣рд┐рдП:


рдореБрдЭреЗ рдореЗрд░реА рдкреНрд░рдХрд╛рд╢рд┐рдд рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдлрд╝рд╛рдЗрд▓реЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рд╕реЗ рдпреЗ рдорд╛рди рдорд┐рд▓реЗред рдиреАрдЪреЗ рдЖрдк рдРрд╕реА рдлрд╝рд╛рдЗрд▓ рдХреА XML рд╕рд╛рдордЧреНрд░реА рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ:

a125

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

using Microsoft.WindowsAzure; using System; using System.Security.Cryptography.X509Certificates; namespace MyCloudServiceManager { internal class CertificateAuthenticationHelper { internal static SubscriptionCloudCredentials GetCredentials( string subscrtionId, string base64EncodedCert) { return new CertificateCloudCredentials(subscrtionId, new X509Certificate2(Convert.FromBase64String(base64EncodedCert))); } } } 

рдЕрдм, рдореИрдВ рдПрдХ рдирд┐рдпрдВрддреНрд░рдХ рд╡рд░реНрдЧ рд▓рд┐рдЦреВрдВрдЧрд╛ рдЬреЛ WPF рдЖрд╡реЗрджрди рдФрд░ рдкреНрд░рдмрдВрдзрди рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЗ рдмреАрдЪ рдмрд╛рддрдЪреАрдд рдкрд░ рдХрд╛рдо рдХрд░реЗрдЧрд╛ред

рдирд┐рдпрдВрддреНрд░рдг рдкрд░рдд


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

 namespace MyCloudServiceManager { internal class ManagementControllerParameters { internal string Region { get; set; } internal string StorageAccountName { get; set; } internal string CloudServiceName { get; set; } internal string PackageFilePath { get; set; } internal string ConfigurationFilePath { get; set; } public string SubscriptionId { get; set; } public string Base64EncodedCertificate { get; set; } } } 

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

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

 using Microsoft.WindowsAzure; using Microsoft.WindowsAzure.Management.Compute; using Microsoft.WindowsAzure.Management.Storage; using System; namespace MyCloudServiceManager { internal partial class ManagementController : IDisposable { private StorageManagementClient _storageManagementClient; private ManagementControllerParameters _parameters; private ComputeManagementClient _computeManagementClient; internal ManagementController(ManagementControllerParameters parameters) { _parameters = parameters; var credential = CertificateAuthenticationHelper.GetCredentials( parameters.SubscriptionId, parameters.Base64EncodedCertificate); _storageManagementClient = CloudContext.Clients.CreateStorageManagementClient(credential); _computeManagementClient = CloudContext.Clients.CreateComputeManagementClient(credential); } public void Dispose() { if (_storageManagementClient != null) _storageManagementClient.Dispose(); if (_computeManagementClient != null) _computeManagementClient.Dispose(); } } } 

рдЕрдм, рдХреБрдЫ рдХреНрд▓рд╛рдЙрдб рдореИрдиреЗрдЬрдореЗрдВрдЯ рдХреНрд▓рд╛рдЗрдВрдЯ рдмрдирд╛рддреЗ рд╣реИрдВ рдФрд░ рдХреБрдЫ рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВред

рдПрдХ рдирдпрд╛ рд╡реЙрд▓реНрдЯ рдЕрдХрд╛рдЙрдВрдЯ рдмрдирд╛рдПрдВ


рд╣рдорд╛рд░реА рд╕реЗрд╡рд╛ рдХреА рд░рдгрдиреАрддрд┐ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд╣рд▓реА рдЪреАрдЬ рдПрдХ рднрдВрдбрд╛рд░рдг рдЦрд╛рддрд╛ рд╣реИред рд╕реЗрд╡рд╛ рдХреНрд▓рд╛рдЙрдб рд╕реЗрд╡рд╛ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ Visual Studio рдореЗрдВ рдирд┐рд░реНрдорд┐рдд .cspkg рдкреИрдХреЗрдЬ рдлрд╝рд╛рдЗрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдЧреАред рдЗрд╕реЗ рд╡рд┐рдВрдбреЛрдЬ рдПрдЬрд╝реНрдпреЛрд░ рд╕реНрдЯреЛрд░реЗрдЬ рдореЗрдВ рдПрдХ рдмреНрд▓реЙрдм рдХреЗ рд░реВрдк рдореЗрдВ рд░рдЦрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдЗрд╕рд╕реЗ рдкрд╣рд▓реЗ рдХрд┐ рдореИрдВ рдРрд╕рд╛ рдХрд░ рдкрд╛рдКрдВ, рдореБрдЭреЗ рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдореЗрдВ рдПрдХ рдЦрд╛рддрд╛ рдмрдирд╛рдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рдкреИрдХреЗрдЬ рдлрд╛рдЗрд▓ рдбрд╛рдЙрдирд▓реЛрдб рдХреА рдЬрд╛ рд╕рдХреЗред рдиреАрдЪреЗ рджрд┐рдпрд╛ рдЧрдпрд╛ рдХреЛрдб рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХреНрд╖реЗрддреНрд░ рдореЗрдВ рдПрдХ рддрд┐рдЬреЛрд░реА рдЦрд╛рддрд╛ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╣реИ:

 using Microsoft.WindowsAzure.Management.Storage; using Microsoft.WindowsAzure.Management.Storage.Models; using System.Threading.Tasks; namespace MyCloudServiceManager { internal partial class ManagementController { internal async Task CreateStorageAccount() { await _storageManagementClient.StorageAccounts.CreateAsync( new StorageAccountCreateParameters { Location = _parameters.Region, ServiceName = _parameters.StorageAccountName }); } } } 

рддрд┐рдЬреЛрд░реА рдЦрд╛рддрд╛ рдмрдирдиреЗ рдХреЗ рдмрд╛рдж, рдореИрдВ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВред рдореБрдЭреЗ рдЕрдкрдиреЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди (рдФрд░ рдореЗрд░реЗ "рдЬрд▓реНрдж рд╣реА рдмрдирдиреЗ рд╡рд╛рд▓реА" рдХреНрд▓рд╛рдЙрдб рд╕реЗрд╡рд╛) рдХреЛ рд╕реНрдЯреЛрд░реЗрдЬ рд╕реЗ рдХрдиреЗрдХреНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдХрдиреЗрдХреНрд╢рди рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдореИрдВрдиреЗ рдПрдХ рд╡рд┐рдзрд┐ рд▓рд┐рдЦреА рдЬреЛ REST API рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ Windows Azure рд╕реНрдЯреЛрд░реЗрдЬ рдХрдиреЗрдХреНрд╢рди рдХреБрдВрдЬрд┐рдпреЛрдВ рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд┐рдореНрдореЗрджрд╛рд░ рд╣реИред рдлрд┐рд░, рдореИрдВ рдХрдиреЗрдХреНрд╢рди рд╕реНрдЯреНрд░рд┐рдВрдЧ рдмрдирд╛рддрд╛ рд╣реВрдВ рдФрд░ рдЗрд╕реЗ рдХреЙрд▓рд┐рдВрдЧ рдХреЛрдб рдкрд░ рд▓реМрдЯрд╛рддрд╛ рд╣реВрдВред

 using Microsoft.WindowsAzure.Management.Storage; using System.Globalization; using System.Threading.Tasks; namespace MyCloudServiceManager { internal partial class ManagementController { private async Task<string> GetStorageAccountConnectionString() { var keys = await _storageManagementClient.StorageAccounts.GetKeysAsync(_parameters.StorageAccountName); string connectionString = string.Format( CultureInfo.InvariantCulture, "DefaultEndpointsProtocol=https;AccountName={0};AccountKey={1}", _parameters.StorageAccountName, keys.SecondaryKey); return connectionString; } } } 

рдЕрдм, рднрдВрдбрд╛рд░рдг рдЦрд╛рддрд╛ рдмрдирд╛рдиреЗ рдХреЗ рдмрд╛рдж, рдореИрдВ рдХреНрд▓рд╛рдЙрдб рд╕реЗрд╡рд╛ рдмрдирд╛ рд╕рдХрддрд╛ рд╣реВрдВ рдФрд░ Windows Azure рдкрд░ рдЕрдкрдирд╛ рдкреИрдХреЗрдЬ рдкреНрд░рдХрд╛рд╢рд┐рдд рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВред

рдПрдХ рдирдпрд╛ рдХреНрд▓рд╛рдЙрдб рд╕реЗрд╡рд╛ рдмрдирд╛рдПрдВ рдФрд░ рд╣реЛрд╕реНрдЯ рдХрд░реЗрдВ


рдХреНрд▓рд╛рдЙрдб рд╕реЗрд╡рд╛ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рдХреЛрдб рдЖрд╢реНрдЪрд░реНрдпрдЬрдирдХ рд░реВрдк рд╕реЗ рд╕рд░рд▓ рд╣реИред рд╣рдореЗрдВ рдХреЗрд╡рд▓ рдЙрд╕ рд╕реЗрд╡рд╛ рдХреЗ рдирд╛рдо рдФрд░ рдЙрд╕ рдХреНрд╖реЗрддреНрд░ рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░рдирд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдЗрд╕реЗ рдмрдирд╛рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред

 using Microsoft.WindowsAzure.Management.Compute; using Microsoft.WindowsAzure.Management.Compute.Models; using System.Threading.Tasks; namespace MyCloudServiceManager { internal partial class ManagementController { internal async Task CreateCloudService() { await _computeManagementClient.HostedServices.CreateAsync(new HostedServiceCreateParameters { Location = _parameters.Region, ServiceName = _parameters.CloudServiceName }); } } } 

рдЕрдВрдд рдореЗрдВ, рдХреНрд▓рд╛рдЙрдб рд╕реЗрд╡рд╛ рдХреА рдореЗрдЬрдмрд╛рдиреА рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдореЗрд░реЗ рдкрд╛рд╕ рдЬреЛ рдХреБрдЫ рднреА рд╣реИ рд╡рд╣ Visual Studio рдореЗрдВ рдмрдирд╛рдИ рдЧрдИ рд╕рд░реНрд╡рд┐рд╕ рдкреИрдХреЗрдЬ рдлрд╝рд╛рдЗрд▓ рдХреЛ рдмреВрдБрдж рдореЗрдВ рдЕрдкрд▓реЛрдб рдХрд░рдирд╛ рд╣реИ, рдФрд░ рдлрд┐рд░ REST API рдХреЛ рдХреЙрд▓ рдХрд░реЗрдВред рдЗрд╕ рдХреЙрд▓ рдореЗрдВ рдЙрд╕ рдмреНрд▓реЙрдм рдХрд╛ рдкрддрд╛ рд╣реЛрдЧрд╛ рдЬрд┐рд╕рдореЗрдВ рдкреИрдХреЗрдЬ рд╕реНрдерд┐рдд рд╣реИ рдФрд░ рдХреНрд▓рд╛рдЙрдб рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреА рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдлрд╝рд╛рдЗрд▓ рд╕реЗ рдкреНрд░рд╛рдкреНрдд XML рдбреЗрдЯрд╛ред рдпрд╣ рдХреЛрдб Windows Azure Storage SDK рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рдЬреЛ рдХрд┐ NuGet рдкреИрдХреЗрдЬ рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрд▓рдмреНрдз рд╣реИред

 using Microsoft.WindowsAzure.Management.Compute; using Microsoft.WindowsAzure.Management.Compute.Models; using Microsoft.WindowsAzure.Storage; using Microsoft.WindowsAzure.Storage.Blob; using System.IO; using System.Threading.Tasks; namespace MyCloudServiceManager { internal partial class ManagementController { internal async Task DeployCloudService() { var storageConnectionString = await GetStorageAccountConnectionString(); var account = CloudStorageAccount.Parse(storageConnectionString); var blobs = account.CreateCloudBlobClient(); var container = blobs.GetContainerReference("deployments"); await container.CreateIfNotExistsAsync(); await container.SetPermissionsAsync( new BlobContainerPermissions() { PublicAccess = BlobContainerPublicAccessType.Container }); var blob = container.GetBlockBlobReference( Path.GetFileName(_parameters.PackageFilePath)); await blob.UploadFromFileAsync(_parameters.PackageFilePath, FileMode.Open); await _computeManagementClient.Deployments.CreateAsync(_parameters.CloudServiceName, DeploymentSlot.Production, new DeploymentCreateParameters { Label = _parameters.CloudServiceName, Name = _parameters.CloudServiceName + "Prod", PackageUri = blob.Uri, Configuration = File.ReadAllText(_parameters.ConfigurationFilePath), StartDeployment = true }); } } } 

Windows Azure рдореЗрдВ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╕рднреА рдХреЛрдб рдмрдирд╛рдП рдЧрдП рд╣реИрдВред рдЕрдВрдд рдореЗрдВ, рдпрд╣ рдХреНрд▓рд╛рдЙрдб рдореЗрдВ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рдирд╖реНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рдХреЛрдб рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рд░рд╣рддрд╛ рд╣реИред

Windows Azure рдХреНрд▓рд╛рдЙрдб рдореЗрдВ рдЖрдЗрдЯрдо рдирд┐рдХрд╛рд▓рдирд╛


рд╡рд┐рдВрдбреЛрдЬ рдПрдЬрд╝реНрдпреЛрд░ рдореИрдиреЗрдЬрдореЗрдВрдЯ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╡рд┐рдВрдбреЛрдЬ рдПрдЬрд╝реНрдпреЛрд░ рдореЗрдВ рдЖрдЗрдЯрдо рдирд┐рдХрд╛рд▓рдирд╛ рдЙрддрдирд╛ рд╣реА рдЖрд╕рд╛рди рд╣реИ рдЬрд┐рддрдирд╛ рдХрд┐ рдЙрдиреНрд╣реЗрдВ рдмрдирд╛рдирд╛ред рдиреАрдЪреЗ рджрд┐рдпрд╛ рдЧрдпрд╛ рдХреЛрдб рдирд┐рд░реНрдорд┐рдд рд╕рдВрдЧреНрд░рд╣рдг рдХреЛ рд╕рд╛рдл рдХрд░рддрд╛ рд╣реИ, рдлрд┐рд░ рдпрд╣ рдПрдХ рд╕рд╛рде рд╣реЛрд╕реНрдЯ рдХрд┐рдП рдЧрдП рдХреЛрдб рдФрд░ рдХреНрд▓рд╛рдЙрдб рд╕реЗрд╡рд╛ рдХреЛ рд╣рдЯрд╛ рджреЗрддрд╛ рд╣реИред

 using Microsoft.WindowsAzure.Management.Storage; using Microsoft.WindowsAzure.Management.Compute; using Microsoft.WindowsAzure.Management.Compute.Models; namespace MyCloudServiceManager { internal partial class ManagementController { internal void Cleanup() { _computeManagementClient.Deployments.DeleteBySlot(_parameters.CloudServiceName, DeploymentSlot.Production); _computeManagementClient.HostedServices.Delete(_parameters.CloudServiceName); _storageManagementClient.StorageAccounts.Delete(_parameters.StorageAccountName); } } } 

рдкрд┐рдЫрд▓реЗ рдХреЛрдб рдХреЛ рд▓рд┐рдЦрдиреЗ рдХреА рд╕рднреА рд╕реБрд╡рд┐рдзрд╛ рдХреЛ рджреЗрдЦрддреЗ рд╣реБрдП, рдпреВрдЬрд░ рдЗрдВрдЯрд░рдлреЗрд╕ рдХреЗ рд▓рд┐рдП рдХреЛрдб рдЕрдкреЗрдХреНрд╖рд╛рдХреГрдд рд╕рд░рд▓ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред

рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЗрдВрдЯрд░рдлрд╝реЗрд╕


рд╣рдорд╛рд░реЗ рдЖрд╡реЗрджрди рдХреЗ рд▓рд┐рдП рдпреВрдЬрд░ рдЗрдВрдЯрд░рдлреЗрд╕ рдЕрдкреЗрдХреНрд╖рд╛рдХреГрдд рд╕рд░рд▓ рд╣реИред рдореИрдВрдиреЗ рдмрд╕ WPF рдлреЙрд░реНрдо рдкрд░ рдХреБрдЫ рдмрдЯрди рд▓рдЧрд╛рдПред рдкрд╣рд▓реЗ рдЖрдкрдХреЛ рд╡рд┐рдВрдбреЛрдЬ рдПрдЬрд╝реНрдпреЛрд░ рдФрд░ рдЬрдЧрд╣ рдХреЛрдб рдореЗрдВ рдЖрд╡рд╢реНрдпрдХ рддрддреНрд╡ рдмрдирд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рджреВрд╕рд░рд╛ рдмрд╛рджрд▓ рд╕реЗ рдЖрдЗрдЯрдо рдирд┐рдХрд╛рд▓рддрд╛ рд╣реИред рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд XAML рдХреЛрдб рд╣реИ:

 <Window x:Class="MyCloudServiceManager.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Title="Deploy Service" Height="166" Width="308"> <Grid> <Grid.ColumnDefinitions> <ColumnDefinition Width="112*"/> <ColumnDefinition Width="125*"/> </Grid.ColumnDefinitions> <Button x:Name="_createButton" Content="Create" HorizontalAlignment="Left" VerticalAlignment="Top" Width="75" Margin="73,80,0,0" Grid.Column="1" Click="_createButton_Click"/> <Button x:Name="_deleteButton" Content="Delete" HorizontalAlignment="Left" VerticalAlignment="Top" Width="75" Margin="73,105,0,0" Grid.Column="1" Click="_deleteButton_Click"/> </Grid> </Window> 

рдирд┐рдпрдВрддреНрд░рдг рдХреЛрдб рднреА рдмрд╣реБрдд рд╕рд░рд▓ рд╣реИред Create рдмрдЯрди рдХреНрд▓рд┐рдХ рдИрд╡реЗрдВрдЯ рд╣реИрдВрдбрд▓рд░ рдореЗрдВ, рдореИрдВ ManagementController рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдмрдирд╛рддрд╛ рд╣реВрдВ, рд╡рд┐рдВрдбреЛрдЬ рдПрдЬрд╝реНрдпреЛрд░ рдореЗрдВ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдШрдЯрдХреЛрдВ рдХреЛ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕реЗ рд╕рднреА рдЖрд╡рд╢реНрдпрдХ рдкреИрд░рд╛рдореАрдЯрд░ рдкрд╛рд╕ рдХрд░ рд░рд╣рд╛ рд╣реВрдВред рдлрд┐рд░ рдореИрдВ рдХреНрд▓рд╛рдЙрдб рдореЗрдВ рддрддреНрд╡реЛрдВ рдХреЛ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдирд┐рдпрдВрддреНрд░рдХ рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЛ рдХреЙрд▓ рдХрд░рддрд╛ рд╣реВрдВред

рдореИрдВ рдбрд┐рд▓реАрдЯ рдмрдЯрди рджрдмрд╛рдиреЗ , рдХреНрд▓рд╛рдЙрдб рдореЗрдВ рдкрд╣рд▓реЗ рд╕реЗ рдмрдирд╛рдП рдЧрдП рд╕рднреА рддрддреНрд╡реЛрдВ рдХреЛ рд╣рдЯрд╛рдиреЗ рдФрд░ рд╕рд╛рдлрд╝ рдХрд░рдиреЗ рдХреА рдШрдЯрдирд╛ рдХреЛ рднреА рд╕рдВрднрд╛рд▓рддрд╛ рд╣реВрдВред

 using Microsoft.WindowsAzure.Management.Models; using System.IO; using System.Windows; namespace MyCloudServiceManager { public partial class MainWindow : Window { private ManagementController _controller; public MainWindow() { InitializeComponent(); } private async void _createButton_Click(object sender, RoutedEventArgs e) { if (_controller == null) { _controller = new ManagementController( new ManagementControllerParameters { Base64EncodedCertificate = "MIIKXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX", SubscriptionId = "66c15fe5-XXXX-XXXX-XXXX-XXXXXXXXXX", CloudServiceName = "ManagementLibraryDemoSvc01", ConfigurationFilePath = "ServiceConfiguration.Cloud.cscfg", PackageFilePath = "MyCloudService.cspkg", Region = LocationNames.WestUS, StorageAccountName = Path.GetFileNameWithoutExtension(Path.GetRandomFileName()) }); } await _controller.CreateStorageAccount(); await _controller.CreateCloudService(); await _controller.DeployCloudService(); } private void _deleteButton_Click(object sender, RoutedEventArgs e) { _controller.Cleanup(); } } } 

рдХреНрд▓рд╛рдЙрдб рд╕реНрдЯреЛрд░реЗрдЬ рдореЗрдВ рдореИрд╕реЗрдЬ рдХреНрдпреВ рдХреЛ рдХреНрд▓рд╛рдЗрдВрдЯ рд╕рд╛рдЗрдб рдкрд░ рдореЙрдирд┐рдЯрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдк рд╡рд┐рдВрдбреЛрдЬ рд╕реНрдЯреЛрд░реЗрдЬ рдПрд╕рдбреАрдХреЗ рдХреА рдХреНрд╖рдорддрд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕ рдХреЛрдб рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдХреНрд▓рд╛рдЙрдб рд╕реЗрд╡рд╛ рдЕрдкрдирд╛ рдХрд╛рдо рдкреВрд░рд╛ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдпрд╣ рдХреНрд▓рд╛рдЙрдб рдореЗрдВ рдХрддрд╛рд░ рдореЗрдВ рдПрдХ рд╕рдВрджреЗрд╢ рднреЗрдЬреЗрдЧрд╛ред рдЧреНрд░рд╛рд╣рдХ рдХреЛ рд╕рдВрджреЗрд╢ рдкреНрд░рд╛рдкреНрдд рд╣реЛрдЧрд╛, рдЬреЛ рдХреНрд▓реАрдирдЕрдк рдкрджреНрдзрддрд┐ рдХреЛ рдХреЙрд▓ рдХрд░реЗрдЧрд╛ рдФрд░ рдХреНрд▓рд╛рдЙрдб рд╕реЗ рд╕рднреА рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдШрдЯрдХреЛрдВ рдХреЛ рд╣рдЯрд╛ рджреЗрдЧрд╛ред

рдЕрдВрддрд╣реАрди рд╕реНрд╡рдЪрд╛рд▓рди рд╡рд┐рдХрд▓реНрдк


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

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

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


All Articles