Windows Azure рдореЗрдВ рдкрд╣рд▓реА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреА рддреНрд╡рд░рд┐рдд рд╢реБрд░реБрдЖрддред рд╡реЗрдм рд╕рд╛рдЗрдЯреНрд╕ред рдХреНрд▓рд╛рдЙрдб рд╕рд░реНрд╡рд┐рд╕реЗрдЬ рдХреЗ рд▓рд┐рдП рд╡реЗрдмрд╕рд╛рдЗрдЯ рдорд╛рдЗрдЧреНрд░реЗрд╢рди

рд╢реБрдн рджреЛрдкрд╣рд░, рдкреНрд░рд┐рдп рд╕рд╣рдпреЛрдЧрд┐рдпреЛрдВред

рдЪрдХреНрд░ рдХреЗ рдкрд╣рд▓реЗ рдкрд╛рдБрдЪ рднрд╛рдЧ рдпрд╣рд╛рдБ рдЙрдкрд▓рдмреНрдз рд╣реИрдВ ред рд╢реНрд░реГрдВрдЦрд▓рд╛ рдХреЗ рдЗрд╕ рднрд╛рдЧ рдореЗрдВ, рд╣рдо рдПрдХ рд╕рд░рд▓ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЕрдкрдиреА рд╕рд░рд▓ рд╡реЗрдмрд╕рд╛рдЗрдЯ рдХреЛ Cloud Services (рдкреВрд░реНрд╡-рд╣реЛрд╕реНрдЯреЗрдб рд╕реЗрд╡рд╛рдУрдВ) рдореЗрдВ рдорд╛рдЗрдЧреНрд░реЗрдЯ рдХрд░рдиреЗ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВрдЧреЗ рдЬреЛ рдХрд┐ WIndows Azure рд░реЛрд▓ рдореЙрдбрд▓, Windows Azure Service Bus рдФрд░ рднрдВрдбрд╛рд░рдг рд╕реЗрд╡рд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдЧреАред


рдЖрдЗрдП рдирд┐рдореНрди рдкрд░рд┐рджреГрд╢реНрдп рдХреЛ рджреЗрдЦреЗрдВ: рдЖрдкрдиреЗ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЕрдкрдиреА рд╡реЗрдмрд╕рд╛рдЗрдЯ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, ASP.NET MVC 4 рд╡реЗрдмрд╕рд╛рдЗрдЯ, рдЬрд┐рд╕реЗ рдмрд╛рдж рдореЗрдВ рдЪрд░реНрдЪрд╛ рдХреА рдЬрд╛рдПрдЧреА) рдкрд░ Windows Azure рд╡реЗрдм рд╕рд╛рдЗрдЯреНрд╕ рдкрд░ рддреИрдирд╛рдд рдХрд┐рдпрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдХреБрдЫ рд╕рдордп рдмрд╛рдж рдЖрдкрдХреЛ рдкрддрд╛ рдЪрд▓рд╛ рд╣реИ рдХрд┐ рд╡реЗрдмрд╕рд╛рдЗрдЯ рдХреЛ рдЕрддрд┐рд░рд┐рдХреНрдд рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ - рдпрд╣ рдЖрд╡рд╢реНрдпрдХ рд╣реИ рдХрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЖрдкрдХреА рд╡реЗрдмрд╕рд╛рдЗрдЯ рдкрд░ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рдЕрдкрдиреА рдЧреИрд▓рд░реА рдореЗрдВ рдЪрд┐рддреНрд░ рдЕрдкрд▓реЛрдб рдХрд░ рд╕рдХрддрд╛ рд╣реИред рд╣рдо рдПрдХ рд╡реЗрдмрд╕рд╛рдЗрдЯ рдХреА рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреА рдорджрдж рд╕реЗ рдЗрд╕ рддрд░рд╣ рдХреЗ рдкрд░рд┐рджреГрд╢реНрдп рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддреЗ рд╣реИрдВ, рд╣рд╛рд▓рд╛рдВрдХрд┐, рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ рдХреА рд╕реВрдЪреА рдореЗрдВ рдЖрдкрдХреА рд╡реЗрдмрд╕рд╛рдЗрдЯ рдХреА рд▓рдЪреАрд▓реА рдорд╛рдкрдиреАрдпрддрд╛ рдХреЗ рд▓рд┐рдП рдПрдХ рд╢рд░реНрдд рднреА рд╢рд╛рдорд┐рд▓ рд╣реИред рдпрджрд┐ рдЖрдк рдХреЗрд╡рд▓ рд╡рд┐рдВрдбреЛрдЬ рдПрдЬрд╝реНрдпреЛрд░ рд╡реЗрдм рд╕рд╛рдЗрдЯреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рдЕрдкрдиреА рдкреВрд░реА рд╡реЗрдмрд╕рд╛рдЗрдЯ рдХреЛ рдХреЗрд╡рд▓ рд╕реНрдХреЗрд▓ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЬреЛ рдПрдХ рдЕрдХреБрд╢рд▓ рд╕рдорд╛рдзрд╛рди рд╣реИ - рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИ, рдореБрдЦреНрдп рдмреЛрдЭ рд╡реЗрдм рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЗ рдмрдЬрд╛рдп рдЫрд╡рд┐ рдкреНрд░реЛрд╕реЗрд╕рд░ рдкрд░ рд╣реЛрдЧрд╛ред рдПрдХ рд╡реЗрдмрд╕рд╛рдЗрдЯ рдХреЛ рдХреНрд▓рд╛рдЙрдб рд╕реЗрд╡рд╛рдУрдВ рдореЗрдВ рдорд╛рдЗрдЧреНрд░реЗрдЯ рдХрд░рдирд╛ рдФрд░ рд╡рд┐рдВрдбреЛрдЬ рдПрдЬрд╝реНрдпреЛрд░ рдХреНрд▓рд╛рдЙрдб рд╕рд░реНрд╡рд┐рд╕реЗрдЬ рд░реЛрд▓ рдореЙрдбрд▓ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░ рдХреЛ рдкреБрдирд░реНрдЬреАрд╡рд┐рдд рдХрд░рдирд╛, рд╕рд╛рде рд╣реА рд╕рд╛рде рд╡рд┐рдВрдбреЛрдЬ рдПрдЬрд╝реНрдпреЛрд░ рдмреНрд▓реЙрдм рд╕реНрдЯреЛрд░реЗрдЬ рдФрд░ рд╕рд░реНрд╡рд┐рд╕ рдмрд╕ рдХреНрдпреВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛, рдЗрд╕ рдкрд░рд┐рджреГрд╢реНрдп рдХреЗ рдкреНрд░рднрд╛рд╡реА рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЛ рдмрдирд╛рдиреЗ рдореЗрдВ рдорджрдж рдХрд░реЗрдЧрд╛ред рд╢реНрд░реГрдВрдЦрд▓рд╛ рдХреЗ рдЗрд╕ рднрд╛рдЧ рдореЗрдВ, рдЖрдк рдПрдХ рдХреНрд▓рд╛рдЙрдб рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдмрдирд╛рдПрдВрдЧреЗ рдЬрд┐рд╕рдореЗрдВ рджреЛ рдкрд░рддреЗрдВ рд╣реЛрдВрдЧреА:

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

2) рдПрдХ рдЫрд╡рд┐ рдкреНрд░реЛрд╕реЗрд╕рд░ рдХреЛ рдПрдХ рдХрд╛рд░реНрдпрдХрд░реНрддрд╛ рдХреА рднреВрдорд┐рдХрд╛ рдХреЗ рд░реВрдк рдореЗрдВ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЧрдпрд╛ред рдПрдХ рдЕрдВрддрд╣реАрди рд▓реВрдк рдореЗрдВ, рд╣реИрдВрдбрд▓рд░ рд╡реЗрдм рднреВрдорд┐рдХрд╛ рд╕реЗ рд╕рдВрджреЗрд╢реЛрдВ рдХреЗ рд▓рд┐рдП рд╕рд░реНрд╡рд┐рд╕ рдмрд╕ рдХрддрд╛рд░ рдХреЛ рдХреНрд╡реЗрд░реА рдХрд░реЗрдЧрд╛ рдФрд░ рдпрджрд┐ рдХрддрд╛рд░ рдореЗрдВ рдХреЛрдИ рд╕рдВрджреЗрд╢ рд╣реИ, рддреЛ рд╡рд╣ рдЗрд╕реЗ рдЙрдард╛рдПрдЧрд╛, рдЫрд╡рд┐ рдмреНрд▓реЙрдм рдХреЗ рд▓рд┐рдП рдПрдХ рд▓рд┐рдВрдХ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдЧрд╛, рдФрд░ рдлрд┐рд░ рдПрдХ рдирдпрд╛ рдмреВрдБрдж рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рд╕реНрд░реЛрдд рдмреВрдБрдж рддрдВрддреНрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ рдПрдХ рд╣реА рдЫрд╡рд┐ рдФрд░ рдмреВрдБрдж рднрдВрдбрд╛рд░ рдореЗрдВ рдбрд╛рд▓ рджрд┐рдпрд╛ред

Windows Azure рдкрд░ Cloud Services рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░реЗрдВ


рдПрдХ рд╡реЗрдм рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ http://windows.azure.com рдЦреЛрд▓реЗрдВ рдФрд░ рдЕрдкрдиреЗ рд╡рд┐рдВрдбреЛрдЬ рд▓рд╛рдЗрд╡ рдЖрдИрдбреА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд▓реЙрдЧ рдЗрди рдХрд░реЗрдВ, рдЬрд┐рд╕рдореЗрдВ рдЖрдкрдХрд╛ рд╡рд┐рдВрдбреЛрдЬ рдПрдЬрд╝реНрдпреЛрд░ рдЦрд╛рддрд╛ рдЬреБрдбрд╝рд╛ рд╣реБрдЖ рд╣реИред

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

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

рдПрдХ рдХрдВрдкреНрдпреВрдЯрд┐рдВрдЧ рд╕реЗрд╡рд╛ рдмрдирд╛рдПрдВ рдЬреЛ рдЖрдкрдХреЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рдХреЛрдб рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░реЗрдЧреА: рдмрд╛рдПрдВ рдлрд▓рдХ рдореЗрдВ, рд╣реЛрд╕реНрдЯреЗрдб рд╕реЗрд╡рд╛рдУрдВ рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ рдФрд░ рдореЗрдиреВ рдореЗрдВ рд╕реНрдерд┐рдд рдирдИ рд╣реЛрд╕реНрдЯреЗрдб рд╕реЗрд╡рд╛ рдмрдЯрди рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВред рдирдпрд╛ рд╣реЛрд╕реНрдЯреЗрдб рд╕реЗрд╡рд╛ рдмрдирд╛рдПрдБ рд╕рдВрд╡рд╛рдж рдмреЙрдХреНрд╕ рдореЗрдВ, рдЕрдкрдиреА рд╕рджрд╕реНрдпрддрд╛ рдХрд╛ рдЪрдпрди рд╕рджрд╕реНрдпрддрд╛ рдбреНрд░реЙрдк-рдбрд╛рдЙрди рд╕реВрдЪреА рд╕реЗ рдХрд░реЗрдВред рд╕реЗрд╡рд╛ рдирд╛рдо рджрд░реНрдЬ рдХрд░реЗрдВ рдЕрдкрдиреЗ рд╕реЗрд╡рд╛ рдкрд╛рда рдмреЙрдХреНрд╕ рдХреЗ рд▓рд┐рдП рдПрдХ рдирд╛рдо рджрд░реНрдЬ рдХрд░реЗрдВ рдФрд░ рдЙрдЪрд┐рдд рдореВрд▓реНрдп рджрд░реНрдЬ рдХрд░рдХреЗ URL рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░реЗрдВред рдЕрдкрдиреА рд╕реЗрд╡рд╛ рдХреЗ рд▓рд┐рдП рдПрдХ URL рдЙрдкрд╕рд░реНрдЧ рджрд░реНрдЬ рдХрд░реЗрдВ , рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, <yourname> рдЧреИрд▓рд░реА , рдЬрд╣рд╛рдВ < yourname > рдПрдХ рдЕрджреНрд╡рд┐рддреАрдп рдирд╛рдо рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред Windows Azure рдЗрд╕ рдорд╛рди рдХрд╛ рдЙрдкрдпреЛрдЧ рд╕реЗрд╡рд╛ рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐ рдмрд┐рдВрджреБ URL рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд░рддрд╛ рд╣реИред рдПрдХ рдЖрддреНрдореАрдпрддрд╛ рд╕рдореВрд╣ рдбреНрд░реЙрдк-рдбрд╛рдЙрди рд╕реВрдЪреА рдмрдирд╛рдПрдБ рдпрд╛ рдЪреБрдиреЗрдВ , рдЙрд╕ рдЖрддреНрдореАрдпрддрд╛ рд╕рдореВрд╣ рдХрд╛ рдЪрдпрди рдХрд░реЗрдВ рдЬрд┐рд╕реЗ рдЖрдкрдиреЗ рддрд┐рдЬреЛрд░реА рдЦрд╛рддреЗ рдХреЗ рд▓рд┐рдП рдкрд╣рд▓реЗ рдмрдирд╛рдпрд╛ рдерд╛ред рдирд┐рд░реНрджрд┐рд╖реНрдЯ рди рдХрд░реЗрдВ рдкрд░рд┐рдирд┐рдпреЛрдЬрдиред рд╕реЗрд╡рд╛ рдХреЛ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдареАрдХ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ рдФрд░ рдкреНрд░рд╛рд░рдВрдн рд╣реЛрдиреЗ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдкреВрд░реА рд╣реЛрдиреЗ рддрдХ рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░реЗрдВред рд╕рд░реНрд╡рд┐рд╕ рдмрд╕, рдкрд╣реБрдВрдЪ рдирд┐рдпрдВрддреНрд░рдг рдФрд░ рдХреИрд╢рд┐рдВрдЧ рдЯреИрдм рдкрд░ рдЬрд╛рдПрдВ ред рд╕рд░реНрд╡рд┐рд╕ рдмрд╕ рдЯреИрдм рдкрд░ рдЬрд╛рдПрдВ ред рдирдпрд╛ рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВред рдЦреБрд▓рдиреЗ рд╡рд╛рд▓реА рдПрдХ рдирдИ рд╕реЗрд╡рд╛ рдиреЗрдорд╕реНрдкреЗрд╕ рдбрд╛рдпрд▓реЙрдЧ рдмреЙрдХреНрд╕ рдмрдирд╛рдПрдВ , рдЕрдкрдиреЗ рдиреЗрдорд╕реНрдкреЗрд╕ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, mytestservicebus) рдХрд╛ рдирд╛рдо рджрд░реНрдЬ рдХрд░реЗрдВ, рдПрдХ рд╕реНрдерд╛рди рдХреНрд╖реЗрддреНрд░ рдЪреБрдиреЗрдВ, рдФрд░ рдХреНрд░рд┐рдПрдЯ рдиреЗрдорд╕реНрдкреЗрд╕ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВред ред рдмрдирд╛рдП рдЧрдП рдирд╛рдо рд╕реНрдерд╛рди рдХрд╛ рдЪрдпрди рдХрд░реЗрдВ рдФрд░ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдХреБрдВрдЬреА рдлрд╝реАрд▓реНрдб рдореЗрдВ рдЧреБрдг рдкреИрдирд▓ рдкрд░ рджреГрд╢реНрдп рдмрдЯрди рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ ред рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдЬрд╛рд░реАрдХрд░реНрддрд╛ рдФрд░ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдХреБрдВрдЬреА рдорд╛рди рдХреЛ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдХреБрдВрдЬреА рд╕рдВрд╡рд╛рдж рдмреЙрдХреНрд╕ рд╕реЗ рдХреЙрдкреА рдХрд░реЗрдВред

рддреИрдирд╛рддреА рдФрд░ рднрдВрдбрд╛рд░рдг рд╕реЗрд╡рд╛рдУрдВ рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ; рд╕реЗрд╡рд╛ рдмрд╕ рдирд╛рдо рд╕реНрдерд╛рди рдмрдирд╛рдпрд╛ред

ASP.NET MVC 4 рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░реЗрдВ


рд╡реНрдпрд╡рд╕реНрдерд╛рдкрдХ рд╡рд┐рд╢реЗрд╖рд╛рдзрд┐рдХрд╛рд░реЛрдВ рдХреЗ рд╕рд╛рде рд╡рд┐рдЬреБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ 2012 рдЦреЛрд▓реЗрдВред

New Project рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВред рд╡реЗрдм \ ASP.NET MVC 4 рд╡реЗрдм рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдЯреЗрдореНрдкрд▓реЗрдЯ (рдЪрд┐рддреНрд░ 1) рдХрд╛ рдЪрдпрди рдХрд░реЗрдВред рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХрд╛ рдирд╛рдо MVC4Gallery рд╣реИ ред рдЗрдВрдЯрд░рдиреЗрдЯ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХрд╛ рдЪрдпрди рдХрд░реЗрдВ рдФрд░ рдПрдХ рдпреВрдирд┐рдЯ рдЯреЗрд╕реНрдЯ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдмрдирд╛рдПрдВ рд╡рд┐рдХрд▓реНрдк рдХреЛ рдЕрдирдЪреЗрдХ рдХрд░реЗрдВ ред рдУрдХреЗ рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ ред рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдмрдирдиреЗ рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░реЗрдВред

clip_image001[6]

рдЕрдВрдЬреАрд░ред 1. рд╡рд┐рдЬрд╝реБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ 2012 рдореЗрдВ рд╡реЗрдм рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдЯреЗрдореНрдкреНрд▓реЗрдЯ рдХреА рд╕реВрдЪреА

рдореЙрдбрд▓ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдкрд░ рд░рд╛рдЗрдЯ-рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ ред Add => Class рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ ред рдЦреБрд▓рдиреЗ рд╡рд╛рд▓реЗ рд╕рдВрд╡рд╛рдж рдмреЙрдХреНрд╕ рдореЗрдВ, рдЫрд╡рд┐ рджрд░реНрдЬ рдХрд░реЗрдВ ред рд╕реАрдПрд╕ рдФрд░ рдУрдХреЗ рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВред рдЫрд╡рд┐ рдлрд╝рд╛рдЗрд▓ рдХреА рд╕рд╛рдордЧреНрд░реА рдХреЛ рдмрджрд▓реЗрдВ ред рдиреАрдЪреЗ рджрд┐рдП рдЧрдП рдХреЛрдб рдкрд░ рд╕реАрдПрд╕ ред

using System; using System.Collections.Generic; using System.Linq; using System.Web; namespace MVC4Gallery.Models { public class Image { public string Title{ get; set; } public string Link{ get; set; } }} 

рдлрд╝рд╛рдЗрд▓ рджреГрд╢реНрдп \ Home \ Index рдХреЛ рдЦреЛрд▓реЗрдВ ред cshtml рдФрд░ рдЙрд╕рдХреА рд╕рд╛рдордЧреНрд░реА рдХреЛ рдиреАрдЪреЗ рджрд┐рдП рдЧрдП рдХреЛрдб рд╕реЗ рдмрджрд▓реЗрдВред

 <header> <div class="content-wrapper"> <div class="float-left"> <p class="site-title">   - </div> </div> </header> <div id="body"> <section class="featured"> <div class="content-wrapper"> <form action="/Home/Upload" method="post" enctype="multipart/form-data"> <label for="title"> <label for="FileData"> </label> <input type="file" id="FileData" name="FileData" /><br /> <input type="submit" value="" /> </form>    "": @foreach (var image in ViewData.Model) { @image.Title <br /> <img width="100" height="100" src="@image.Link" /><br /> } </div> </section> </div> 

рдирд┐рдпрдВрддреНрд░рдХреЛрдВ \ HomeController рдлрд╝рд╛рдЗрд▓ рдЦреЛрд▓реЗрдВ ред рдиреАрдЪреЗ рджрд┐рдП рдЧрдП рдХреЛрдб рдХреЗ рд╕рд╛рде рдЗрд╕рдХреА рд╕рд╛рдордЧреНрд░реА рдХреЛ cs рдФрд░ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВред рдЕрдЧрд▓реЗ рдкреИрд░рд╛рдЧреНрд░рд╛рдл рдореЗрдВ рдЖрд╡рд╢реНрдпрдХ рдирд┐рд░реНрднрд░рддрд╛ рдФрд░ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдЬреЛрдбрд╝реЗ рдЬрд╛рдПрдВрдЧреЗред

 using System; using System.Collections.Generic; using System.Collections.Specialized; using System.Web; using System.Web.Mvc; using Microsoft.ServiceBus.Messaging; using Microsoft.WindowsAzure; using Microsoft.WindowsAzure.StorageClient; using MVC4Gallery.Models; namespace MvcApplication1.Controllers { public class HomeController : Controller { public ActionResult Index() { List<Image> images = getBlobs("ourgallery"); return View(images); } [HttpPost] [ActionName("Upload")] public ActionResult Upload(string author, string title) { this.SendBlobToStorage(author); return RedirectToAction("Index"); } public void SendBlobToStorage(string author) { try { HttpPostedFileBase file = Request.Files[0]; CloudBlob blob = getBlobContainer("ourgallery").GetBlobReference(file.FileName); NameValueCollection metadata = new NameValueCollection(); metadata["title"] = file.FileName; blob.UploadFromStream(file.InputStream); BrokeredMessage msg = new BrokeredMessage(blob.Uri.AbsoluteUri); SendBrokeredMessageToServiceBusQueue(msg); } catch (StorageClientException e) { Console.WriteLine("      : " + e.Message); System.Environment.Exit(1); }} public List<Image> getBlobs(string author){ CloudBlobContainer container = getBlobContainer(author); List<Image> images = new List<Image>(); foreach (CloudBlob blob in container.ListBlobs()) { blob.FetchAttributes(); Image image = new Image(); image.Link = blob.Uri.AbsoluteUri; image.Title = blob.Metadata["title"]; images.Add(image); } return images; } public static CloudBlobContainer getBlobContainer(string userId) { var account = CloudStorageAccount.FromConfigurationSetting("storageaccount"); CloudBlobContainer container = account.CreateCloudBlobClient().GetContainerReference(userId); container.CreateIfNotExist(); var permissions = container.GetPermissions(); permissions.PublicAccess = BlobContainerPublicAccessType.Container; container.SetPermissions(permissions); return container; } public static void SendBrokeredMessageToServiceBusQueue(BrokeredMessage msg) { QueueDescription qd = new QueueDescription("servicebustest"); qd.MaxSizeInMegabytes = 5120; qd.DefaultMessageTimeToLive = new TimeSpan(0, 1, 0); string connectionString = CloudConfigurationManager.GetSetting("Microsoft.ServiceBus.ConnectionString"); QueueClient Client = QueueClient.CreateFromConnectionString(connectionString, "servicebustest"); Client.Send(msg); }}} 


рд╕рдВрджрд░реНрдн рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдкрд░ рд░рд╛рдЗрдЯ-рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ ред рд╕рдВрджрд░реНрдн рдЬреЛрдбрд╝реЗрдВ рдХрд╛ рдЪрдпрди рдХрд░реЗрдВред рдЦреБрд▓рдиреЗ рд╡рд╛рд▓реЗ рд╕рдВрд╡рд╛рдж рдмреЙрдХреНрд╕ рдореЗрдВ (рдЪрд┐рддреНрд░ 3), рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЕрд╕реЗрдВрдмрд▓реА рдХрд╛ рдЪрдпрди рдХрд░реЗрдВ:

Microsoft.WindowsAzure.StorageClient 1.7.0.0
Microsoft.WindowsAzure.Configuration 1.7.0.0
Microsoft.WindowsAzure.ServiceRuntime 1.7.0.0
Microsoft.ServiceBus 1.7.0.0
System.Runtime.Serialization 4.0.0.0

clip_image003[4]
рдЕрдВрдЬреАрд░ред 3. рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рд▓рд┐рдП рд╡рд┐рдзрд╛рдирд╕рднрд╛рдУрдВ рдХрд╛ рд╡рд┐рдХрд▓реНрдкред

рдЧреНрд▓реЛрдмрд▓ рдлрд╝рд╛рдЗрд▓ рдЦреЛрд▓реЗрдВ ред asax рдФрд░ рдЕрдиреБрдкреНрд░рдпреЛрдЧ _ рдкреНрд░рд╛рд░рдВрдн () рд╡рд┐рдзрд┐ рдХреЗ рдиреАрдЪреЗ рдХреЛрдб рдЬреЛрдбрд╝реЗрдВред

 CloudStorageAccount.SetConfigurationSettingPublisher((configName, configSettingPublisher) => { var connectionString = RoleEnvironment.GetConfigurationSettingValue(configName); configSettingPublisher(connectionString); }); 


рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдкрд░ рд░рд╛рдЗрдЯ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ ред Add Windows Azure Cloud Service Project (рдЪрд┐рддреНрд░ 4) рдХрд╛ рдЪрдпрди рдХрд░реЗрдВред

clip_image005[4]
рдЕрдВрдЬреАрд░ред 4. рд╕рдорд╛рдзрд╛рди рдХреЗ рд▓рд┐рдП рдПрдХ рдХреНрд▓рд╛рдЙрдб рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдЬреЛрдбрд╝рдирд╛

MVC 4 рдЧреИрд▓рд░реА рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ рд░реЛрд▓реНрд╕ рдкрд░ рд░рд╛рдЗрдЯ-рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ ред Azureред рдЬреЛрдбрд╝реЗрдВ рдЪреБрдиреЗрдВред рдиреНрдпреВ рд╡рд░реНрдХрд░ рд░реЛрд▓ рдкреНрд░реЛрдЬреЗрдХреНрдЯ (рдЪрд┐рддреНрд░ 5) рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВред

clip_image006[4]
рдЕрдВрдЬреАрд░ред 5. рд╕рдорд╛рдзрд╛рди рдХреЗ рд▓рд┐рдП рдХрд╛рд░реНрдпрдХрд░реНрддрд╛ рдХреА рднреВрдорд┐рдХрд╛ рдХреЗ рд▓рд┐рдП рдПрдХ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдЬреЛрдбрд╝рдирд╛

Windows Azure Tools 1.7 рдореЗрдВ , рдПрдХ рдирдпрд╛ рд╡рд░реНрдХрд░ рд░реЛрд▓ рдЯреЗрдореНрдкреНрд▓реЗрдЯ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛ рд╣реИ рдЬреЛ рд╕рд░реНрд╡рд┐рд╕ рдмрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ ред рдирдИ рднреВрдорд┐рдХрд╛ рдЬреЛрдбрд╝реЗрдВ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд╡рд┐рдВрдбреЛ рдореЗрдВ, рд╕реЗрд╡рд╛ рдмрд╕ рдХрддрд╛рд░ рдХреЗ рд╕рд╛рде рдХрд╛рд░реНрдпрдХрд░реНрддрд╛ рднреВрдорд┐рдХрд╛ рдХрд╛ рдЪрдпрди рдХрд░реЗрдВ рдФрд░ рдЬреЛрдбрд╝реЗрдВ (рдЪрд┐рддреНрд░ 6) рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВред

clip_image008[4]
рдЕрдВрдЬреАрд░ред 6. рд╕реЗрд╡рд╛ рдмрд╕ рдХрддрд╛рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдПрдХ рд╢реНрд░рдорд┐рдХ рднреВрдорд┐рдХрд╛ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЛ рдЬреЛрдбрд╝рдирд╛

WorkerRole.cs рдлрд╝рд╛рдЗрд▓ рдЦреЛрд▓реЗрдВ рдФрд░ рдиреАрдЪреЗ рджрд┐рдП рдЧрдП рдХреЛрдб рдХреЗ рд╕рд╛рде рдЗрд╕рдХреА рд╕рд╛рдордЧреНрд░реА рдХреЛ рдмрджрд▓реЗрдВред

 using System; using System.Collections.Specialized; using System.Diagnostics; using System.Net; using System.Threading; using Microsoft.ServiceBus; using Microsoft.ServiceBus.Messaging; using Microsoft.WindowsAzure; using Microsoft.WindowsAzure.ServiceRuntime; using Microsoft.WindowsAzure.StorageClient; namespace WorkerRoleWithSBQueue1 { public class WorkerRole : RoleEntryPoint { // The name of your queue const string QueueName = "servicebustest"; // QueueClient is thread-safe. Recommended that you cache // rather than recreating it on every request QueueClient Client; bool IsStopped; public override void Run() { while (!IsStopped) { try { //   BrokeredMessage receivedMessage = null; receivedMessage = Client.Receive(); if (receivedMessage != null) { //  .       ,      ,     . GetBlobFromStorage("ourgallery", receivedMessage.GetBody<string>()); receivedMessage.Complete(); }} catch (MessagingException e) { if (!e.IsTransient) { Trace.WriteLine(e.Message); throw; } Thread.Sleep(10000); } catch (OperationCanceledException e) { if (!IsStopped) { Trace.WriteLine(e.Message); throw; }}}} public override bool OnStart() { CloudStorageAccount.SetConfigurationSettingPublisher((configName, configSettingPublisher) => { var connectionString = RoleEnvironment.GetConfigurationSettingValue(configName); configSettingPublisher(connectionString); }); //      ServicePointManager.DefaultConnectionLimit = 12; //     ,      string sbconnectionString = CloudConfigurationManager.GetSetting("Microsoft.ServiceBus.ConnectionString"); var namespaceManager = NamespaceManager.CreateFromConnectionString(sbconnectionString); if (!namespaceManager.QueueExists(QueueName)) { namespaceManager.CreateQueue(QueueName); } //     Service Bus Client = QueueClient.CreateFromConnectionString(sbconnectionString, QueueName); IsStopped = false; return base.OnStart(); } public override void OnStop() { //     Service Bus IsStopped = true; Client.Close(); base.OnStop(); } public void GetBlobFromStorage(string author, string title) { try { CloudBlob sourceBlob = getBlobContainer("ourgallery").GetBlobReference(title); CloudBlob newBlob = getBlobContainer("ourgallery").GetBlobReference(title + "small_copy"); newBlob.CopyFromBlob(sourceBlob); NameValueCollection metadata = new NameValueCollection(); metadata["title"] = title + "small_copy"; } catch (StorageClientException e) { Console.WriteLine(" : " + e.Message); System.Environment.Exit(1); }} public static CloudBlobContainer getBlobContainer(string userId) { var account = CloudStorageAccount.FromConfigurationSetting("storageaccount"); CloudBlobContainer container = account.CreateCloudBlobClient().GetContainerReference(userId); container.CreateIfNotExist(); return container; }}} 

MVC4Gallery рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЗ рд▓рд┐рдП WebRole.cs рдлрд╝рд╛рдЗрд▓ рдЬреЛрдбрд╝реЗрдВ рдФрд░ рдиреАрдЪреЗ рджрд┐рдП рдЧрдП рдХреЛрдб рдХреЗ рд╕рд╛рде рдЗрд╕рдХреА рд╕рд╛рдордЧреНрд░реА рдХреЛ рдмрджрд▓реЗрдВред

 using System; using System.Collections.Generic; using System.Linq; using Microsoft.WindowsAzure; using Microsoft.WindowsAzure.Diagnostics; using Microsoft.WindowsAzure.ServiceRuntime; using Microsoft.WindowsAzure.StorageClient; namespace MVC4Gallery { public class WebRole : RoleEntryPoint { public override bool OnStart() { RoleEnvironment.Changing += RoleEnvironmentChanging; return base.OnStart(); } private void RoleEnvironmentChanging(object sender, RoleEnvironmentChangingEventArgs e) { if (e.Changes.Any(change => change is RoleEnvironmentConfigurationSettingChange)) { e.Cancel = true; }}}} 

рд╡реЗрдм рднреВрдорд┐рдХрд╛ рдХреЛ рдкреНрд░рд╢рд╛рд╕рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП GUI рдЦреЛрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рд░реЛрд▓реНрд╕ рдХреНрд▓рд╛рдЙрдб рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ MVC 4 рдЧреИрд▓рд░реА рдкрд░ рд░рд╛рдЗрдЯ рдорд╛рдЙрд╕ рдмрдЯрди рдкрд░ рдбрдмрд▓-рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ (рдЪрд┐рддреНрд░ 7)ред

clip_image010[4]
рдЕрдВрдЬреАрд░ред 7. рд╡реЗрдм рднреВрдорд┐рдХрд╛ рдкреНрд░рдмрдВрдзрди рдЧреНрд░рд╛рдлрд┐рдХрд▓ рдЗрдВрдЯрд░рдлрд╝реЗрд╕

рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдЯреИрдм рдкрд░, рдирд┐рджрд╛рди рдирд┐рджрд╛рди рд╕рдХреНрд╖рдо рдХрд░реЗрдВ рдХреЛ рдЕрдирдЪреЗрдХ рдХрд░реЗрдВред рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдЯреИрдм рдкрд░ рдЬрд╛рдПрдВ, рд╕реЗрдЯрд┐рдВрдЧ рдЬреЛрдбрд╝реЗрдВ рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ рдФрд░ рдПрдХ рдирдпрд╛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рд╕реЗрдЯрд┐рдВрдЧ рдмрдирд╛рдПрдВ рдЬрд┐рд╕реЗ storageaccount рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕рдХреЗ рдкреНрд░рдХрд╛рд░ рдХреЛ рдХрдиреЗрдХреНрд╢рди рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЗ рд░реВрдк рдореЗрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░реЗрдВ, рдлрд┐рд░ рджреАрд░реНрдШрд╡реГрддреНрдд рдмрдЯрди рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ рдФрд░ рдХрдиреЗрдХреНрд╢рди рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░реЗрдВред рдЖрд╡рд╢реНрдпрдХ рдбреЗрдЯрд╛ рднрд╛рдЧ 1 рдореЗрдВ рджрд░реНрдЬ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ ред рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ рд╕реЗрдЯрд┐рдВрдЧ рдЬреЛрдбрд╝реЗрдВ рдФрд░ рдирд╛рдо рджрд░реНрдЬ рдХрд░реЗрдВ Microsoft.ServiceBus.ConnectionString (рдкреНрд░рдХрд╛рд░ рд╕реНрдЯреНрд░рд┐рдВрдЧ рд╣реИ) , рдлрд┐рд░ рдирд┐рдореНрди рдлрд╝реАрд▓реНрдб рдХреЛ рдорд╛рди рдлрд╝реАрд▓реНрдб рдореЗрдВ рдбрд╛рд▓реЗрдВ:

рд╕рдорд╛рдкрди рдмрд┐рдВрджреБ = sb: // [namepace] .servicebus.windows.net; SharedSecretIser = owner;

рдПрдВрдбрдкреЙрдЗрдВрдЯ рднрд╛рдЧ рдХреЗ рд▓рд┐рдП рдирд╛рдо рд╕реНрдерд╛рди рдХрд╛ рдирд╛рдо , SharedSecretIssuer рдХреЗ рд▓рд┐рдП рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдЬрд╛рд░реАрдХрд░реНрддрд╛ рдФрд░ SharedSecretValue рдХреЗ рд▓рд┐рдП рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдХреБрдВрдЬреА рд╣реИред рдУрдХреЗ рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ ред рдХрд╛рд░реНрдпрдХрд░реНрддрд╛ рдХреА рднреВрдорд┐рдХрд╛ рдирд┐рднрд╛рдиреЗ рдХреЗ рд▓рд┐рдП GUI рдЦреЛрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рд░реЛрд▓реНрд╕ рдХреНрд▓рд╛рдЙрдб рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ WorkRRoleWithSBQueue 1 рдкрд░ рд░рд╛рдЗрдЯ-рдХреНрд▓рд┐рдХ рдХрд░реЗрдВред

рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдЯреИрдм рдкрд░, рдирд┐рджрд╛рди рдирд┐рджрд╛рди рд╕рдХреНрд╖рдо рдХрд░реЗрдВ рдХреЛ рдЕрдирдЪреЗрдХ рдХрд░реЗрдВред рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдЯреИрдм рдкрд░ рдЬрд╛рдПрдВ, рд╕реЗрдЯрд┐рдВрдЧ рдЬреЛрдбрд╝реЗрдВ рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ рдФрд░ рдПрдХ рдирдпрд╛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рд╕реЗрдЯрд┐рдВрдЧ рдмрдирд╛рдПрдВ рдЬрд┐рд╕реЗ storageaccount рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕рдХреЗ рдкреНрд░рдХрд╛рд░ рдХреЛ рдХрдиреЗрдХреНрд╢рди рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЗ рд░реВрдк рдореЗрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░реЗрдВ, рдлрд┐рд░ рджреАрд░реНрдШрд╡реГрддреНрдд рдмрдЯрди рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ рдФрд░ рдХрдиреЗрдХреНрд╢рди рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░реЗрдВред рдЖрд╡рд╢реНрдпрдХ рдбреЗрдЯрд╛ рднрд╛рдЧ 1 рдореЗрдВ рджрд░реНрдЬ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ ред рдареАрдХ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ ред Microsoft.ServiceBus.ConnectionString рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрдиреЗрдХреНрд╢рди рд╕реНрдЯреНрд░рд┐рдВрдЧ рдореЗрдВ рдЖрд╡рд╢реНрдпрдХ рдорд╛рди рдЪрд┐рдкрдХрд╛рдПрдБ ред рдЖрд╡рд╢реНрдпрдХ рдбреЗрдЯрд╛ рднрд╛рдЧ 1 рдореЗрдВ рджрд░реНрдЬ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ - рдПрдВрдбрдкреЙрдЗрдВрдЯ рднрд╛рдЧ рдХреЗ рд▓рд┐рдП рдирд╛рдо рд╕реНрдерд╛рди , SharedSecretIssuer рдХреЗ рд▓рд┐рдП рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдЬрд╛рд░реАрдХрд░реНрддрд╛ рдФрд░ SharedSecretValue рдХреЗ рд▓рд┐рдП рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдХреБрдВрдЬреА ред рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЛ рд╕рд╣реЗрдЬреЗрдВ рдФрд░ рдХрд╛рд░реНрдпрдХрд░реНрддрд╛ рднреВрдорд┐рдХрд╛ рдкреНрд░рдмрдВрдзрди рдЧреНрд░рд╛рдлрд╝рд┐рдХрд▓ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдмрдВрдж рдХрд░реЗрдВред

F5 рджрдмрд╛рдХрд░ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд╢реБрд░реВ рдХрд░реЗрдВ ред рдпрд╣ рдкрд░рд┐рдпреЛрдЬрдирд╛ рд╕реНрдерд╛рдиреАрдп рдХрдВрдкреНрдпреВрдЯрд┐рдВрдЧ рдПрдореБрд▓реЗрдЯрд░ рдореЗрдВ рд╢реБрд░реВ рд╣реЛрдЧреА рдФрд░ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдХреЛ рд╣реЛрдо / рдЗрдВрдбреЗрдХреНрд╕ рджреГрд╢реНрдп рдХреЗ рд╕рд╛рде рд▓реЙрдиреНрдЪ рдХрд░реЗрдЧреА ред

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

ASP.NET MVC 4 рдХреЛ рд╡рд┐рдЬрд╝реБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ 2012 рд╕реЗ рдХреНрд▓рд╛рдЙрдб рд╕рд░реНрд╡рд┐рд╕реЗрдЬ рдореЗрдВ рд╡рд┐рдВрдбреЛрдЬ рдПрдЬрд╝реНрдпреЛрд░ рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рдкрд░ рд▓рд╛рдЧреВ рдХрд░рдирд╛



Windows Azure рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рдкрд░ рдХреНрд▓рд╛рдЙрдб рд╕реЗрд╡рд╛рдУрдВ рдореЗрдВ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдЙрд╕рдХреЗ рдЕрдиреБрд╕рд╛рд░ Visual Studio 2012 рдореЗрдВ рдкреНрд░рдХрд╛рд╢рди рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред

рдПрдорд╡реАрд╕реА 4 рдЧреИрд▓рд░реА рдХреНрд▓рд╛рдЙрдб рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдкрд░ рд░рд╛рдЗрдЯ-рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ ред Azureред рдкреНрд░рдХрд╛рд╢рд┐рдд рдХрд░реЗрдВ рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ ред рдЦреБрд▓рдиреЗ рд╡рд╛рд▓реЗ рд╕рдВрд╡рд╛рдж рдмреЙрдХреНрд╕ рдореЗрдВ, рдЕрдкрдиреА рд╕рджрд╕реНрдпрддрд╛ рдЪреБрдиреЗрдВ рдХреЗ рддрд╣рдд рд╕реВрдЪреА рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░реЗрдВ рдФрд░ <рдкреНрд░рдмрдВрдзрд┐рдд рдХрд░реЗрдВ ...> (рдЫрд╡рд┐ 12) рдХрд╛ рдЪрдпрди рдХрд░реЗрдВ ред

clip_image012[4]
рдЕрдВрдЬреАрд░ред 12ред

рдкрд░рд┐рдгрд╛рдореА Windows Azure Cloud Service рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдкреНрд░рдмрдВрдзрди рд╕рдВрд╡рд╛рдж рдмреЙрдХреНрд╕ рдореЗрдВ, рдирдпрд╛ рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ ред рдирдП рдкреНрд░рдорд╛рдгрдкрддреНрд░ рдХреЗ рд▓рд┐рдП рдХреЛрдИ рднреА рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдирд╛рдо рджрд░реНрдЬ рдХрд░реЗрдВ рдЬрд┐рд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рддреИрдирд╛рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдареАрдХ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ рдкреВрд░реНрдг рдкрде рд▓рд┐рдВрдХ рдХреЙрдкреА рдХрд░реЗрдВ рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ ред рд╡рд┐рдВрдбреЛрдЬ рдПрдЬрд╝реНрдпреЛрд░ рдореИрдиреЗрдЬрдореЗрдВрдЯ рдкреЛрд░реНрдЯрд▓ рдкрд░ рдЬрд╛рдПрдВред рд╣реЛрд╕реНрдЯ рдХреА рдЧрдИ рд╕реЗрд╡рд╛рдПрдБ, рд╕рдВрдЧреНрд░рд╣рдг рдЦрд╛рддреЗ рдФрд░ CDN рдЯреИрдм рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ ред ред рдкреНрд░рдмрдВрдзрди рдкреНрд░рдорд╛рдгрдкрддреНрд░ рдЯреИрдм рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ ред ред рдкреНрд░рдмрдВрдзрди рдкреНрд░рдорд╛рдгрдкрддреНрд░ рдЯреИрдм рдкрд░, рдкреНрд░рдорд╛рдгрдкрддреНрд░ рдЬреЛрдбрд╝реЗрдВ рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВред рдЦреБрд▓рдиреЗ рд╡рд╛рд▓реЗ рдирдП рдкреНрд░рдмрдВрдзрди рдкреНрд░рдорд╛рдгрдкрддреНрд░ рдЬреЛрдбрд╝реЗрдВ рд╕рдВрд╡рд╛рдж рдмреЙрдХреНрд╕ рдореЗрдВ, рдлрд╝рд╛рдЗрд▓ рдирд╛рдо рдлрд╝реАрд▓реНрдб рдореЗрдВ рд╡рд┐рдЬрд╝реБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ рд╕реЗ рдХреЙрдкреА рдХрд┐рдП рдЧрдП рдкреНрд░рдорд╛рдгрдкрддреНрд░ рдкрде рдХреЛ рдмреНрд░рд╛рдЙрдЬрд╝ рдХрд░реЗрдВ рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ ред Open рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ ред Ok рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ ред рд╣реЛрд╕реНрдЯреЗрдб рд╕рд░реНрд╡рд┐рд╕реЗрдЬ рдЯреИрдм рдкрд░ рдЬрд╛рдПрдВ рдФрд░ рдкреНрд░реЙрдкрд░реНрдЯреАрдЬ рдкреИрдирд▓ рд╕реЗ рд╕рдмреНрд╕рдХреНрд░рд┐рдкреНрд╢рди рдЖрдИрдбреА рдХреЛ рдХреЙрдкреА рдХрд░реЗрдВред рд╡рд┐рдЬрд╝реБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ 2012 рдкрд░ рдЬрд╛рдПрдВред рдХреЙрдкреА рдХрд┐рдП рдЧрдП рд╕рдмреНрд╕рдХреНрд░рд┐рдкреНрд╢рди рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рдХреЛ рд╕рдВрдмрдВрдзрд┐рдд рдлрд╝реАрд▓реНрдб (рдЫрд╡рд┐ 13) рдореЗрдВ рдкреЗрд╕реНрдЯ рдХрд░реЗрдВред рдУрдХреЗ рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВред

clip_image014[4]
рдЕрдВрдЬреАрд░ред 13ред

рдмрдВрдж рдХрд░реЗрдВ рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ ред рдЕрдЧрд▓рд╛ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ ред Windows Azure рдкреНрд░рдХрд╛рд╢рд┐рдд рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдкреГрд╖реНрда рдкрд░ , рдЖрдк рдЕрддрд┐рд░рд┐рдХреНрдд рдкрд░рд┐рдирд┐рдпреЛрдЬрди рд╡рд┐рдХрд▓реНрдк рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдкреНрд░рдХрд╛рд╢рд┐рдд рдХрд░реЗрдВ рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВред рдЖрдк Windows Azure рдЧрддрд┐рд╡рд┐рдзрд┐ рд▓реЙрдЧ рджреГрд╢реНрдп (рдЪрд┐рддреНрд░ 14) рдореЗрдВ рдкрд░рд┐рдирд┐рдпреЛрдЬрди рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХрд╛ рдкрд╛рд▓рди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

clip_image016[4]
рдЕрдВрдЬреАрд░ред 14. рд╡рд┐рдВрдбреЛрдЬ рдПрдЬрд╝реНрдпреЛрд░ рдЧрддрд┐рд╡рд┐рдзрд┐ рд▓реЙрдЧ рдХреА рдкреНрд░рд╕реНрддреБрддрд┐

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

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

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


All Articles