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

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

рдЙрдкрд░реНрдпреБрдХреНрдд рдЖрд░реЗрдЦ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╡рд╛рд╕реНрддреБрдХрд▓рд╛ рдХрд╛ рдЙрджрд╛рд╣рд░рдг рджрд┐рдЦрд╛рддрд╛ рд╣реИ рдЬрд┐рд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдмрдбрд╝реЗ рдпрд╛ рдЬрдЯрд┐рд▓ рдХрдВрдкреНрдпреВрдЯрд┐рдВрдЧ рднрд╛рд░ рдХреЛ рдорд╛рдкрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕ рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░ рдореЗрдВ рд▓рд╛рдЧреВ рдХрддрд╛рд░-рдЖрдзрд╛рд░рд┐рдд рдореИрд╕реЗрдЬрд┐рдВрдЧ рдЯреЗрдореНрдкреНрд▓реЗрдЯ рдХрдИ рд╡рд┐рдВрдбреЛрдЬ рдПрдЬрд╝реНрдпреЛрд░ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдФрд░ рд╕реЗрд╡рд╛рдУрдВ рдХреЗ рд▓рд┐рдП рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╣реИ, рдЬрд┐рдиреНрд╣реЗрдВ рдХрддрд╛рд░реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдХ-рджреВрд╕рд░реЗ рдХреЗ рд╕рд╛рде рд╕рдВрд╡рд╛рдж рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рдпрд╣ рдХрддрд╛рд░-рдЖрдзрд╛рд░рд┐рдд рд╕рдВрджреЗрд╢ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рдореБрдЦреНрдп рдШрдЯрдХреЛрдВ рдХреЗ рдЕрдзреНрдпрдпрди рдХреЗ рд▓рд┐рдП рдПрдХ рд╡рд┐рд╣рд┐рдд рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред
рдХрддрд╛рд░рдмрджреНрдз рдореИрд╕реЗрдЬрд┐рдВрдЧ рдХреА рдореВрд▓ рдмрд╛рддреЗрдВ
рдПрдХ рдорд╛рдирдХ рд╕рдВрджреЗрд╢ рд╕рдорд╛рдзрд╛рди рдЬреЛ рд╡рд┐рддрд░рд┐рдд рдШрдЯрдХреЛрдВ рдХреЗ рдмреАрдЪ рдбреЗрдЯрд╛ рдХреЗ рдЖрджрд╛рди-рдкреНрд░рджрд╛рди рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИ, рдореЗрдВ
рдкреНрд░рдХрд╛рд╢рдХ рд╢рд╛рдорд┐рд▓ рд╣реЛрддреЗ рд╣реИрдВ рдЬреЛ рдХрддрд╛рд░ рдореЗрдВ рд╕рдВрджреЗрд╢ рдбрд╛рд▓рддреЗ рд╣реИрдВ, рд╕рд╛рде рд╣реА рд╕рд╛рде рдПрдХ рдпрд╛ рдЕрдзрд┐рдХ
рдЧреНрд░рд╛рд╣рдХ рдЬреЛ рдЗрди рд╕рдВрджреЗрд╢реЛрдВ рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВред рдЬреНрдпрд╛рджрд╛рддрд░ рдорд╛рдорд▓реЛрдВ рдореЗрдВ, рд╕рдмреНрд╕рдХреНрд░рд╛рдЗрдмрд░, рдЬрд┐рдиреНрд╣реЗрдВ рдХрднреА-рдХрднреА
рдХрддрд╛рд░ рд╢реНрд░реЛрддрд╛ рдХрд╣рд╛ рдЬрд╛рддрд╛
рд╣реИ , рдХреЛ рдПрдХрд▓ рдпрд╛ рдмрд╣реБ-рдереНрд░реЗрдбреЗрдб рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЗ рд░реВрдк рдореЗрдВ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬреЛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреА рдЕрдиреБрд╕реВрдЪреА рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдирд┐рд░рдВрддрд░ рдпрд╛ рдорд╛рдВрдЧ рдкрд░ рдЪрд▓рддреЗ рд╣реИрдВред
рдЙрдЪреНрдЪ рд╕реНрддрд░ рдкрд░, рджреЛ рдореБрдЦреНрдп рдкреНрд░реЗрд╖рдг рддрдВрддреНрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬреЛ рдХрддрд╛рд░ рдХреЗ рд╢реНрд░реЛрддрд╛ рдХреЛ рдЗрд╕рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рд╕рдВрджреЗрд╢ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреЗ рд╣реИрдВ:
- рдкреЛрд▓ (рдХреНрд╡реЗрд░реА-рдЖрдзрд╛рд░рд┐рдд рдореЙрдбрд▓ - рдорддрджрд╛рди) : рд╢реНрд░реЛрддрд╛ рдХрддрд╛рд░ рдХреА рдирд┐рдЧрд░рд╛рдиреА рдХрд░рддрд╛ рд╣реИ, рдирд┐рдпрдорд┐рдд рдЕрдВрддрд░рд╛рд▓ рдкрд░ рдЙрд╕рдореЗрдВ рдирдП рд╕рдВрджреЗрд╢реЛрдВ рдХреА рдЬрд╛рдБрдЪ рдХрд░рддрд╛ рд╣реИред рдпрджрд┐ рдХрддрд╛рд░ рдЦрд╛рд▓реА рд╣реИ, рддреЛ рд╢реНрд░реЛрддрд╛ рдХрддрд╛рд░ рдХреЛ рдХреНрд╡реЗрд░реА рдХрд░рдирд╛ рдЬрд╛рд░реА рд░рдЦрддрд╛ рд╣реИ, рд╕рдордп-рд╕рдордп рдкрд░ рд╕реНрд▓реАрдк рдЕрд╡рд╕реНрдерд╛ рдореЗрдВ рдмрджрд▓рддрд╛ рд░рд╣рддрд╛ рд╣реИред
- рд╕реНрд╡рд┐рдЪрд┐рдВрдЧ (рдордЬрдмреВрд░ рдбреЗрдЯрд╛ рднреЗрдЬрдиреЗ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдореЙрдбрд▓ рдХреЛ рдзрдХреНрдХрд╛ рджреЗрдирд╛) : рд╢реНрд░реЛрддрд╛ рдЙрд╕ рдШрдЯрдирд╛ рдХреЗ рд▓рд┐рдП рд╕рджрд╕реНрдпрддрд╛ рд▓реЗрддрд╛ рд╣реИ рдЬреЛ рдЯреНрд░рд┐рдЧрд░ рдХреЗ рд╕рд╛рде рдЬреБрдбрд╝рд╛ рд╣реБрдЖ рд╣реИ (рдкреНрд░рдХрд╛рд╢рдХ рдпрд╛ рдХрддрд╛рд░ рдкреНрд░рдмрдВрдзрдХ рджреНрд╡рд╛рд░рд╛) рдЬрдм рдПрдХ рд╕рдВрджреЗрд╢ рдХрддрд╛рд░ рдореЗрдВ рднреЗрдЬрд╛ рдЬрд╛рддрд╛ рд╣реИ рддреЛ рдЯреНрд░рд┐рдЧрд░ рд╣реЛрддрд╛ рд╣реИред рд╢реНрд░реЛрддрд╛ рд╕рдВрджреЗрд╢ рдХреЗ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдХреА рд╢реБрд░реБрдЖрдд рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЙрд╕реЗ рдирдП рдбреЗрдЯрд╛ рдХреА рдЙрдкрд▓рдмреНрдзрддрд╛ рдХрд╛ рдирд┐рд░реНрдзрд╛рд░рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрддрд╛рд░ рдХреЛ рдлрд┐рд░ рд╕реЗ рдХреНрд╡реЗрд░реА рдирд╣реАрдВ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред
рдпрд╣ рдЬреЛрд░ рджрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рдкреНрд░рддреНрдпреЗрдХ рддрдВрддреНрд░ рдХреЗ рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреА рдЕрдкрдиреА рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдВ рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдорддрджрд╛рди рдпрд╛ рддреЛ рдЕрд╡рд░реБрджреНрдз рдпрд╛ рдЧреИрд░-рдЕрд╡рд░реБрджреНрдз рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдЬрдм рддрдХ рдХреЛрдИ рдирдпрд╛ рд╕рдВрджреЗрд╢ рдХрддрд╛рд░ рдореЗрдВ (рдпрд╛ рд╕рдордп рд╕рдорд╛рдкреНрдд рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ) рдкреНрд░рдХрдЯ рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ, рддрдм рддрдХ рд▓реЙрдХ рдЕрдиреБрд░реЛрдз рдХреЛ рд░реЛрдХ рджреЗрддрд╛ рд╣реИ, рдЬрдмрдХрд┐ рдХрддрд╛рд░ рдЦрд╛рд▓реА рд╣реЛрдиреЗ рдкрд░ рдЧреИрд░-рдЕрд╡рд░реБрджреНрдз рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЛ рддреБрд░рдВрдд рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рд╕реНрд╡рд┐рдЪрд┐рдВрдЧ рдореЙрдбрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдкрд░ рдЬрдм рднреА рдкрд╣рд▓рд╛ рд╕рдВрджреЗрд╢ рдЦрд╛рд▓реА рдХрддрд╛рд░ рдореЗрдВ рдпрд╛ рдХрддрд╛рд░ рдХреА рдЧрд╣рд░рд╛рдИ рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рдореВрд▓реНрдп рддрдХ рдкрд╣реБрдБрдЪрддрд╛ рд╣реИ, рддреЛ рдХрддрд╛рд░ рд╢реНрд░реЛрддрд╛рдУрдВ рдХреЛ рд╕реВрдЪрдирд╛ рднреЗрдЬрдиреЗ рдХреЗ рд▓рд┐рдП рдордЬрдмреВрд░ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рдорд┐рд▓рддреА рд╣реИред
рдиреЛрдЯред Windows Azure рдХрддрд╛рд░ рд╕реЗрд╡рд╛ API рджреНрд╡рд╛рд░рд╛ рд╕рдорд░реНрдерд┐рдд dequeue рдХрд╛рд░реНрд░рд╡рд╛рдИ рдиреЙрди-рдмреНрд▓реЙрдХрд┐рдВрдЧ рд╣реИред рдЗрд╕рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рд╕рдВрджреЗрд╢ рдХрддрд╛рд░ рдЦрд╛рд▓реА рд╣реЛрдиреЗ рдкрд░
рдЧреЗрдЯрдореЗрд╕реЗрдЬ рдпрд╛
рдЧреЗрдЯрдореИрд╕реЗрдЬ рдПрдкреАрдЖрдИ рддрд░реАрдХреЗ рддреБрд░рдВрдд рдмрд╛рд╣рд░ рд╣реЛ рдЬрд╛рдПрдВрдЧреЗред рдЗрд╕рдХреЗ рд╡рд┐рдкрд░реАрдд, Windows Azure рдПрдХреАрдХрд░рдг рдмрд╕ рдЙрдкрдпреЛрдЧ рдЕрд╡рд░реБрджреНрдз рд╕рдВрджреЗрд╢ рдкреБрдирд░реНрдкреНрд░рд╛рдкреНрддрд┐ рд╕рдВрдЪрд╛рд▓рди рджреНрд╡рд╛рд░рд╛ рдкреНрд░рджрд╛рди рдХрд┐рдП рдЧрдП
рдЯрд┐рдХрд╛рдК рд╕рдВрджреЗрд╢ рдмрдлрд╝рд░реНрд╕ (DMBs), рдЬрд┐рд╕рдореЗрдВ рдХреЙрд▓рд┐рдВрдЧ рдереНрд░реЗрдб рдХреЛ рддрдм рддрдХ рдЕрд╡рд░реБрджреНрдз рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬрдм рддрдХ рдХрд┐ рдХреЛрдИ рд╕рдВрджреЗрд╢ DMB рдХрддрд╛рд░ рдореЗрдВ рдпрд╛ рдПрдХ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рд╕рдордп рд╕рдорд╛рдкреНрдд рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред
Windows Azure рдХрддрд╛рд░ рд╢реНрд░реЛрддрд╛рдУрдВ рдХреЗ рд╕реЙрдлрд╝реНрдЯрд╡реЗрдпрд░ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рд▓рд┐рдП рд╕рдмрд╕реЗ рдЖрдо рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреЛ рдкреНрд░рддрд┐рд╖реНрдард┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:
- рд╢реНрд░реЛрддрд╛ рдХреЛ рдПрдХ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдШрдЯрдХ рдХреЗ рд░реВрдк рдореЗрдВ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬрд┐рд╕рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдХрд╛рд░реНрдп рднреВрдорд┐рдХрд╛ рдХреЗ рднрд╛рдЧ рдХреЗ рд░реВрдк рдореЗрдВ рдмрдирд╛рдпрд╛ рдФрд░ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
- рдПрдХ рднреВрдорд┐рдХрд╛ рд╢реНрд░реЛрддрд╛ рдШрдЯрдХ рдХрд╛ рдЬреАрд╡рди рдЪрдХреНрд░ рдЕрдХреНрд╕рд░ рд╣реЛрд╕реНрдЯ рдХреА рдЧрдИ рднреВрдорд┐рдХрд╛ рдХреЗ рдирд┐рд╖реНрдкрд╛рджрди рдХреЗ рд╕рдордп рд╕реЗ рдЬреБрдбрд╝рд╛ рд╣реЛрддрд╛ рд╣реИред
- рдореБрдЦреНрдп рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рддрд░реНрдХ рдПрдХ рд▓реВрдк рд╣реИ рдЬрд┐рд╕рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╕рдВрджреЗрд╢реЛрдВ рдХреЛ рдХрддрд╛рд░реЛрдВ рд╕реЗ рд╣рдЯрд╛ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд▓рд┐рдП рднреЗрдЬрд╛ рдЬрд╛рддрд╛ рд╣реИред
- рдпрджрд┐ рдкреНрд░рд╛рдкреНрдд рд╕рдВрджреЗрд╢реЛрдВ рдХреА рдХрддрд╛рд░ рдЦрд╛рд▓реА рд╣реИ, рддреЛ рд╢реНрд░реЛрддрд╛ рд╕реНрд▓реАрдк рдореЛрдб рдореЗрдВ рдкреНрд░рд╡реЗрд╢ рдХрд░рддрд╛ рд╣реИ, рдЬрд┐рд╕рдХреА рдЕрд╡рдзрд┐ рд╕рд┐рд╕реНрдЯрдо рдХреЛ рд░реЛрдХрдиреЗ рдХреЗ рд▓рд┐рдП рдПрд▓реНрдЧреЛрд░рд┐рджрдо рджреНрд╡рд╛рд░рд╛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХреА рдЬрд╛рддреА рд╣реИ рдФрд░ рдЖрд╡реЗрджрди рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддреА рд╣реИред
- рд╕рдВрджреЗрд╢ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╛рд░реНрдпрдХреНрд░рдо рдЪрдХреНрд░ рдХрд╛ рдкреНрд░рджрд░реНрд╢рди рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ; рдЬрдм рддрдХ рд╢реНрд░реЛрддрд╛ рд▓реВрдк рд╕реЗ рдмрд╛рд╣рд░ рдирд┐рдХрд▓рдиреЗ рдФрд░ рдЕрдкрдирд╛ рдХрд╛рдо рдкреВрд░рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрдзрд┐рд╕реВрдЪрдирд╛ рдкреНрд░рд╛рдкреНрдд рдирд╣реАрдВ рдХрд░рддрд╛ рддрдм рддрдХ рдХрддрд╛рд░ рдореЗрдВ рдкреВрдЫрддрд╛рдЫ рдХреА рдЬрд╛рддреА рд╣реИред
рдирд┐рдореНрди рдлрд╝реНрд▓реЛрдЪрд╛рд░реНрдЯ рдПрдХ рд╡рд┐рдВрдбреЛрдЬ рдПрдЬрд╝реНрдпреЛрд░ рд╡рд╛рддрд╛рд╡рд░рдг рдореЗрдВ рдПрдХ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рдкреЛрд▓рд┐рдВрдЧ рддрдВрддреНрд░ рдХреЗ рд╕рд╛рде рдПрдХ рдХрддрд╛рд░ рд╢реНрд░реЛрддрд╛ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдорд╛рдирдХ рддрд░реНрдХ рдХреЛ рджрд┐рдЦрд╛рддрд╛ рд╣реИред
рдиреЛрдЯред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЕрдзрд┐рдХ рдЬрдЯрд┐рд▓ рдирд┐рд░реНрдгрдп рдкреИрдЯрд░реНрди рдХреА рдЪрд░реНрдЪрд╛, рдПрдХ рдХреЗрдВрджреНрд░реАрдп рдХрддрд╛рд░ рдкреНрд░рдмрдВрдзрдХ (рджрд▓рд╛рд▓) рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рдЗрд╕ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдХреЗ рджрд╛рдпрд░реЗ рд╕реЗ рдкрд░реЗ рд╣реИред
рдПрдХ рдорддрджрд╛рди рдкреНрд░рдгрд╛рд▓реА рдХреЗ рд╕рд╛рде рд╕рдВрдпреЛрдЬрди рдореЗрдВ рдПрдХ рдХреНрд▓рд╛рд╕рд┐рдХ рдХрддрд╛рд░ рд╢реНрд░реЛрддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рд╡рд┐рдХрд▓реНрдк рдирд╣реАрдВ рд╣реИред рд╡рд┐рдВрдбреЛрдЬ рдПрдЬрд╝реНрдпреЛрд░ рдореВрд▓реНрдп рдирд┐рд░реНрдзрд╛рд░рдг рдореЙрдбрд▓ рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдХреЗ рднреАрддрд░ рд▓реЗрдирджреЗрди рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреА рдЧрд┐рдирддреА рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╣реИ, рдЪрд╛рд╣реЗ рдХрддрд╛рд░ рднрд░ рд╣реЛ, рдЪрд╛рд╣реЗ рдЖрд╡реЗрджрди рдЕрдиреБрд░реЛрдзреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреЛ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрддреЗ рд╣реБрдПред рдирд┐рдореНрди рдЕрдиреБрднрд╛рдЧ рдЪрд░реНрдЪрд╛ рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ рдЙрддреНрдкрд╛рджрдХрддрд╛ рдХреИрд╕реЗ рдмрдврд╝рд╛рдИ рдЬрд╛рдП рдФрд░ рд╡рд┐рдВрдбреЛрдЬ рдПрдЬрд╝реНрдпреЛрд░ рдХреНрдпреБрдЗрдВрдЧ рдореИрд╕реЗрдЬрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреА рд▓рд╛рдЧрдд рдХреЛ рдХрдо рдХрд┐рдпрд╛ рдЬрд╛рдПред
рд╕рдорд╛рдзрд╛рди рд▓рд╛рдЧрдд рдХреЛ рдХрдо рдХрд░рдиреЗ, рдкреНрд░рджрд░реНрд╢рди рдФрд░ рдорд╛рдкрдиреАрдпрддрд╛ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рд┐рдлрд╛рд░рд┐рд╢реЗрдВ
рдпрд╣ рдЦрдВрдб рдбрд┐рдЬрд╛рдЗрди рд╡рд┐рдзрд┐рдпреЛрдВ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рддрд╛ рд╣реИ рдЬреЛ рдЙрддреНрдкрд╛рджрдХрддрд╛ рдмрдврд╝рд╛рддрд╛ рд╣реИ рдФрд░ рд╕реНрдХреЗрд▓реЗрдмрд┐рд▓рд┐рдЯреА рдореЗрдВ рд╕реБрдзрд╛рд░ рдХрд░рддрд╛ рд╣реИ, рд╕рд╛рде рд╣реА рдЯрд░реНрдирдХреА рд╕рдорд╛рдзрд╛рди рдХреА рд▓рд╛рдЧрдд рдХреЛ рдХрдо рдХрд░рддрд╛ рд╣реИред
рд╕рд┐рд╕реНрдЯрдо рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдЯреЗрдореНрдкреНрд▓реЗрдЯ рдХреЛ рдПрдХ рдЕрдзрд┐рдХ рдкреНрд░рднрд╛рд╡реА рд╕рдорд╛рдзрд╛рди рдХрд╣рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдпрджрд┐ рдпрд╣ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд▓рдХреНрд╖реНрдпреЛрдВ рдХреА рдЙрдкрд▓рдмреНрдзрд┐ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рддрд╛ рд╣реИ:
- рднрдВрдбрд╛рд░рдг рдХреЗ рд╕рд╛рде рдбреЗрдЯрд╛ рдХреЗ рдЖрджрд╛рди-рдкреНрд░рджрд╛рди рдХреЗ рд▓рд┐рдП рд▓реЗрдирджреЗрди рдХреЗ рдЗрдирдХрд╛рд░ рдХреЗ рдХрд╛рд░рдг рдкрд░рд┐рдЪрд╛рд▓рди рд▓рд╛рдЧрдд рдореЗрдВ рдХрдореА рдЬреЛ рдЙрдкрдпреЛрдЧреА рдХрд╛рд░реНрдп рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВред
- рдХрддрд╛рд░ рдореЗрдВ рдирдП рд╕рдВрджреЗрд╢реЛрдВ рдХреА рдЬрд╛рдВрдЪ рдХрд░рддреЗ рд╕рдордп рдорддрджрд╛рди рдЕрдВрддрд░рд╛рд▓ рдХреЗ рдЙрдкрдпреЛрдЧ рд╕реЗ рдЬреБрдбрд╝реЗ рдЕрдирд╛рд╡рд╢реНрдпрдХ рджреЗрд░реА рдХреЛ рд╕рдорд╛рдкреНрдд рдХрд░рдирд╛ред
- рд╡рд░реНрдХрд▓реЛрдб рдХреЛ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдХрдВрдкреНрдпреВрдЯрд┐рдВрдЧ рд╢рдХреНрддрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЧрддрд┐рд╢реАрд▓ рд╕реНрдХреЗрд▓рд┐рдВрдЧ (рд╡рд┐рд╕реНрддрд╛рд░ рдФрд░ рдХрдореА)ред
рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдЯреЗрдореНрдкрд▓реЗрдЯ рдХреЛ рд╕рд┐рд╕реНрдЯрдо рдХреЛ рдЬрдЯрд┐рд▓ рдХрд┐рдП рдмрд┐рдирд╛ рдЗрди рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП, рдЕрдиреНрдпрдерд╛ рдЗрд╕рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рд▓рд╛рдн рд╢реВрдиреНрдп рд╣реЛ рдЬрд╛рдПрдВрдЧреЗред
рднрдВрдбрд╛рд░рдг рдХреЗ рд╕рд╛рде рдбреЗрдЯрд╛ рдХрд╛ рдЖрджрд╛рди-рдкреНрд░рджрд╛рди рдХрд░рддреЗ рд╕рдордп рд▓реЗрдирджреЗрди рдХреА рд▓рд╛рдЧрдд рдХреЗ рдЕрдиреБрдХреВрд▓рди рдХреЗ рд▓рд┐рдП рд╕рд┐рдлрд╛рд░рд┐рд╢реЗрдВ
рд╡рд┐рдВрдбреЛрдЬ рдПрдЬрд╝реНрдпреЛрд░ рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рдкрд░ рддреИрдирд╛рдд рд╕рдорд╛рдзрд╛рди рдХреЗ рд╕реНрд╡рд╛рдорд┐рддреНрд╡ (TCO) рдХреА рдХреБрд▓ рд▓рд╛рдЧрдд рдФрд░ рдирд┐рд╡реЗрд╢ рдкрд░ рд╡рд╛рдкрд╕реА (ROI) рдХреЗ рд╕рдВрдХреЗрддрдХреЛрдВ рдХрд╛ рдореВрд▓реНрдпрд╛рдВрдХрди рдХрд░рддреЗ рд╕рдордп, TCO рд╕реВрддреНрд░ рдХреЗ рд╕рдмрд╕реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдЪрд░ рдореЗрдВ рд╕реЗ рдПрдХ рднрдВрдбрд╛рд░рдг рдХреЗ рд╕рд╛рде рдбреЗрдЯрд╛ рдПрдХреНрд╕рдЪреЗрдВрдЬ рдХреЗ рджреМрд░рд╛рди рд▓реЗрдирджреЗрди рдХреА рдорд╛рддреНрд░рд╛ рд╣реИред рд╡рд┐рдВрдбреЛрдЬ рдПрдЬрд╝реНрдпреЛрд░ рдХрддрд╛рд░ рдХреЗ рд╕рд╛рде рдбреЗрдЯрд╛ рдХрд╛ рдЖрджрд╛рди-рдкреНрд░рджрд╛рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд▓реЗрдирджреЗрди рдХреА рд╕рдВрдЦреНрдпрд╛ рдХрдо рдХрд░рдиреЗ рд╕реЗ рд╡рд┐рдВрдбреЛрдЬ рдПрдЬрд╝реНрдпреЛрд░ рд╕рдорд╛рдзрд╛рди рдХреЗ рдЙрдкрдпреЛрдЧ рд╕реЗ рдЬреБрдбрд╝реА рдкрд░рд┐рдЪрд╛рд▓рди рд▓рд╛рдЧрдд рдХрдо рд╣реЛ рд╕рдХрддреА рд╣реИред
рдХрддрд╛рд░-рдЖрдзрд╛рд░рд┐рдд рдореИрд╕реЗрдЬрд┐рдВрдЧ рд╕рдорд╛рдзрд╛рди рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддреЗ рд╕рдордп, рдбреЗрд╡рд▓рдкрд░реНрд╕ рднрдВрдбрд╛рд░рдг рдХреЗ рд╕рд╛рде рдбреЗрдЯрд╛ рд╡рд┐рдирд┐рдордп рд▓реЗрдирджреЗрди рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреЛ рдХрдо рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
- рдХрддрд╛рд░ рдореЗрдВ рд╕рдВрджреЗрд╢ рднреЗрдЬрддреЗ рд╕рдордп, рдЖрдк рдПрдХ рджреВрд╕рд░реЗ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╕рдВрджреЗрд╢реЛрдВ рдХреЛ рдПрдХ рдмрдбрд╝реЗ рдкреИрдХреЗрдЬ рдореЗрдВ рд╕рдореВрд╣рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдФрд░ рд╕рдВрдХреБрдЪрд┐рдд рдЫрд╡рд┐ рдХреЛ рдмреВрдБрдж рднрдВрдбрд╛рд░рдг рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдФрд░ рдлрд┐рд░ рдЗрд╕ рдбреЗрдЯрд╛ рдХреЗ рд╕рд╛рде рд▓рд┐рдВрдХ рдХреЛ рдмреВрдБрдж рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрддрд╛рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
- рдХрддрд╛рд░ рд╕реЗ рд╕рдВрджреЗрд╢ рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╕рдордп, рдЖрдк рднрдВрдбрд╛рд░ рдХреЗ рд╕рд╛рде рдбреЗрдЯрд╛ рдХреЗ рдЖрджрд╛рди-рдкреНрд░рджрд╛рди рдкрд░ рд▓реЗрдирджреЗрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрдИ рд╕рдВрджреЗрд╢реЛрдВ рдХреЛ рдПрдХ рдкреИрдХреЗрдЬ рдореЗрдВ рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ ред рдХрддрд╛рд░ рд╕реЗрд╡рд╛ API рдореЗрдВ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд GetMessages рд╡рд┐рдзрд┐ рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рддреА рд╣реИ рдХрд┐ рдПрдХ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рд▓реЗрди-рджреЗрди рд╕реЗ рдПрдХ рдкрдВрдХреНрддрд┐ рдореЗрдВ рд╕рдВрджреЗрд╢реЛрдВ рдХреА рдПрдХ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рд╕рдВрдЦреНрдпрд╛ рд╣рдЯрд╛ рджреА рдЬрд╛рддреА рд╣реИ (рдиреАрдЪреЗ рдиреЛрдЯ рджреЗрдЦреЗрдВ)ред
- рдХрддрд╛рд░ рдореЗрдВ рдХрд╛рдо рдХреА рд╡рд╕реНрддреБрдУрдВ рдХреА рдЙрдкрд╕реНрдерд┐рддрд┐ рдХреА рдЬрд╛рдВрдЪ рдХрд░рддреЗ рд╕рдордп, рдЖрдХреНрд░рд╛рдордХ рдорддрджрд╛рди рдЕрдВрддрд░рд╛рд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╕реЗ рдмрдЪреЗрдВ рдФрд░ рдПрдХ рд╕рдордп рд╡рд┐рд▓рдВрдм рд╕реЗрдЯ рдХрд░реЗрдВ рдЬреЛ рдХрд┐ рдХрддрд╛рд░ рдХреЗ рдорддрджрд╛рди рдЕрдВрддрд░рд╛рд▓ рдХреЛ рдмрдврд╝рд╛рддрд╛ рд╣реИ рдпрджрд┐ рдЗрд╕рдХреЗ рд▓рд┐рдП рдЕрдиреБрд░реЛрдз рдбреЗрдЯрд╛ рд╡рд╛рдкрд╕ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред
- рдХрддрд╛рд░ рд╢реНрд░реЛрддрд╛рдУрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХрдо рдХрд░реЗрдВ - рдХреНрд╡реЗрд░реА-рдЖрдзрд╛рд░рд┐рдд рдореЙрдбрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп, рдкреНрд░рддреНрдпреЗрдХ рднреВрдорд┐рдХрд╛ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдХреЗрд╡рд▓ рдПрдХ рд╢реНрд░реЛрддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ рдЬрдм рдХрддрд╛рд░ рдЦрд╛рд▓реА рд╣реЛред рдкреНрд░рддреНрдпреЗрдХ рднреВрдорд┐рдХрд╛ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рд╢реНрд░реЛрддрд╛рдУрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреЛ рдХрдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╢реНрд░рд╡рдг рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХреЛ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реВрдЪрдирд╛ рддрдВрддреНрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ рдЬрдм рдХрддрд╛рд░ рдХрд╛рд░реНрдп рдЖрдЗрдЯрдо рдкреНрд░рд╛рдкреНрдд рдХрд░рддреА рд╣реИред
- рдпрджрд┐ рдХрд╛рдо рдХреА рдХрддрд╛рд░реЗрдВ рдЕрдзрд┐рдХрд╛рдВрд╢ рд╕рдордп рдЦрд╛рд▓реА рд░рд╣рддреА рд╣реИрдВ, рддреЛ рд╕рд┐рд╕реНрдЯрдо рдореЗрдЯреНрд░рд┐рдХреНрд╕ рдХреА рдирд┐рдЧрд░рд╛рдиреА рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рд┐рд╕реНрдЯрдо рдореЗрдЯреНрд░рд┐рдХреНрд╕ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреЛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдХрдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рддрдВрддреНрд░ рдмрдирд╛рдПрдВ , рдЬрдм рдпрд╣ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдХреЛ рдмрдврд╝реЗ рд╣реБрдП рдХрд╛рд░реНрдпрднрд╛рд░ рдХреЛ рд╕рдВрднрд╛рд▓рдиреЗ рдХреЗ рд▓рд┐рдП рднреВрдорд┐рдХрд╛ рдЗрдВрд╕реНрдЯреЗрдВрд╕реЗрд╕ рдХреА рд╕рдВрдЦреНрдпрд╛ рдмрдврд╝рд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
рдЙрдкрд░реЛрдХреНрдд рд╕рд┐рдлрд╛рд░рд┐рд╢реЛрдВ рдХреЛ рд╕рдВрджреЗрд╢ рдкреИрдХреЗрдЯ рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рдиреЗ рдФрд░ рдХрддрд╛рд░реЛрдВ, рдмреВрдБрдж рднрдВрдбрд╛рд░рдг, рдФрд░ рдкреНрд░рд╡рд╛рд╣ рдирд┐рдпрдВрддреНрд░рдг рдХреЗ рд╕рд╛рде рдмрд╛рддрдЪреАрдд рдХреЗ рдЕрдзрд┐рдХрд╛рдВрд╢ рдмреБрдирд┐рдпрд╛рджреА рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдЗрдирдХреИрдкреНрд╕реБрд▓реЗрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд┐рдП рдЧрдП рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рддрдВрддреНрд░ рдХреЗ рд░реВрдк рдореЗрдВ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЕрдЧрд▓рд╛, рдЗрд╕ рддрд░рд╣ рдХреЗ рддрдВрддреНрд░ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рддрд░реАрдХреЛрдВ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред
рдорд╣рддреНрд╡рдкреВрд░реНрдг рдЬрд╛рдирдХрд╛рд░реА ред рдЬрдм рдЖрдк
GetMessages рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕рдВрджреЗрд╢ рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдХрддрд╛рд░ рд╕реЗ рд╣рдЯрд╛рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рдСрдкрд░реЗрд╢рди рдХреЗ рд▓рд┐рдП рдЕрдзрд┐рдХрддрдо рдХрддрд╛рд░ рд╕реЗрд╡рд╛ рдПрдкреАрдЖрдИ рдкреИрдХреЗрдЬ рдХрд╛ рдЖрдХрд╛рд░ 32 рд╣реЛрддрд╛ рд╣реИред рдЗрд╕ рдореВрд▓реНрдп рд╕реЗ рдЕрдзрд┐рдХ рд╣реЛрдиреЗ рдкрд░ рдПрдХ рд░рдирдЯрд╛рдЗрдо рдЕрдкрд╡рд╛рдж рд╣реЛрдЧрд╛ред
рд╡рд┐рдВрдбреЛрдЬ рдПрдЬрд╝реНрдпреЛрд░ рдХрддрд╛рд░реЛрдВ рдореЗрдВ рд▓реЗрди-рджреЗрди рдХреА рд▓рд╛рдЧрдд рд░реИрдЦрд┐рдХ рд░реВрдк рд╕реЗ рдмрдврд╝ рдЬрд╛рддреА рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдХрддрд╛рд░ рд╕реЗрд╡рд╛ рдЧреНрд░рд╛рд╣рдХреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдмрдврд╝ рдЬрд╛рддреА рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЬрдм рд░реЛрд▓ рдЗрдВрд╕реНрдЯреЗрдВрд╕реЗрд╕ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреЛ рд╕реНрдХреЗрд▓рд┐рдВрдЧ рдпрд╛ рдЬрдм рдбрд┐рд▓реАрдЯ рдереНрд░реЗрдб рдХреА рд╕рдВрдЦреНрдпрд╛ рдмрдврд╝ рдЬрд╛рддреА рд╣реИред рдЙрдкрд░реЛрдХреНрдд рд╕рд┐рдлрд╛рд░рд┐рд╢реЛрдВ рдХреЛ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрддреЗ рд╣реБрдП рдХрд┐рд╕реА рд╕рдорд╛рдзрд╛рди рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддреЗ рд╕рдордп рд▓рд╛рдЧрдд рдореЗрдВ рд╕рдВрднрд╛рд╡рд┐рдд рд╡реГрджреНрдзрд┐ рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рд╡рд┐рд╢рд┐рд╖реНрдЯ рдЖрдВрдХрдбрд╝реЛрдВ рдХреЗ рд╕рд╛рде рдПрдХ рдЙрджрд╛рд╣рд░рдг рджреЗрддреЗ рд╣реИрдВред
рд▓рд╛рдЧрдд рдкрд░ рдЕрдХреБрд╢рд▓ рд╡рд╛рд╕реНрддреБрдХрд▓рд╛ рдХрд╛ рдкреНрд░рднрд╛рд╡
рдКрдкрд░ рд╡рд░реНрдгрд┐рдд рдмрд┐рд▓рд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо рдХрд╛ рдПрдХ рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░ рдмрдирд╛рдирд╛ рдЬрд┐рд╕рдореЗрдВ рдЕрдиреБрдХреВрд▓рди рддрдВрддреНрд░ рд╢рд╛рдорд┐рд▓ рдирд╣реАрдВ рд╣реИ, рд╡рд┐рдВрдбреЛрдЬ рдПрдЬрд╝реНрдпреЛрд░ рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рдкрд░ рд╕рдорд╛рдзрд╛рди рдХреА рддреИрдирд╛рддреА рдХреЗ рдмрд╛рдж рдкрд░рд┐рдЪрд╛рд▓рди рд▓рд╛рдЧрдд рдореЗрдВ рд╡реГрджреНрдзрд┐ рд╣реЛрдЧреАред рдпрд╣ рдЦрдВрдб рд╕рдВрднрд╛рд╡рд┐рдд рдЕрддрд┐рд░рд┐рдХреНрдд рд▓рд╛рдЧрддреЛрдВ рдХреЗ рдХрд╛рд░рдгреЛрдВ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рддрд╛ рд╣реИред
рдкрд░рд┐рджреГрд╢реНрдп рдХреА рдкрд░рд┐рднрд╛рд╖рд╛ рдХреЗ рдЕрдиреБрд╕рд╛рд░, рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ рд╕рдорд╛рдзрд╛рди рдирд┐рдпрдорд┐рдд рдЕрдВрддрд░рд╛рд▓ рдкрд░ рд╡реНрдпрд╛рд╡рд╕рд╛рдпрд┐рдХ рд▓реЗрдирджреЗрди рдбреЗрдЯрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИред рдорд╛рди рд▓реАрдЬрд┐рдП рдХрд┐ рдпрд╣ рд╕рдорд╛рдзрд╛рди рдорд╛рдирдХ рдЖрда рдШрдВрдЯреЗ рдХреЗ рдХрд╛рд░реНрдп рджрд┐рд╡рд╕ рдХреЗ рд╕рдордп рдХреЗ рдХреЗрд╡рд▓ 25% рдХреЗ рдХрд╛рд░реНрдпрднрд╛рд░ рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рдиреЗ рдореЗрдВ рд╡реНрдпрд╕реНрдд рд╣реИред рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, 6 рдШрдВрдЯреЗ (8 рдШрдВрдЯреЗ * 0.75) "рдирд┐рд╖реНрдХреНрд░рд┐рдпрддрд╛ рд╕рдордп" рдкрд░ рдЧрд┐рд░ рдЬрд╛рддрд╛ рд╣реИ рдЬрдм рд╕рд┐рд╕реНрдЯрдо рд▓реЗрдирджреЗрди рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ рд╢рд╛рдорд┐рд▓ рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд╕рдорд╛рдзрд╛рди 16 рдШрдВрдЯреЗ рдХреЗ рд▓рд┐рдП рд╣рд░ рджрд┐рди рдШрдВрдЯреЛрдВ рдХреЗ рдмрд╛рдж рдбреЗрдЯрд╛ рдкреНрд░рд╛рдкреНрдд рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред
рдирд┐рд╖реНрдХреНрд░рд┐рдпрддрд╛ рдХреА рдЕрд╡рдзрд┐ рдХреЗ рджреМрд░рд╛рди, рдЬреЛ 22 рдШрдВрдЯреЗ рдХрд╛ рдпреЛрдЧ рджреЗрддрд╛ рд╣реИ, рд╕рдорд╛рдзрд╛рди рдирдП рдбреЗрдЯрд╛ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реВрдЪрдирд╛рдПрдВ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдП рдмрд┐рдирд╛ рдХрддрд╛рд░ рд╕реЗ рдХрд╛рдо рдХреА рдЬрд╛рдирдХрд╛рд░реА рдХреЛ рд╣рдЯрд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рддрд╛ рд╣реИред рдЗрд╕ рд╕рдордп рдХреЗ рджреМрд░рд╛рди, рдХрддрд╛рд░ рд╕реЗ рд╣рдЯрд╛рдиреЗ рдХрд╛ рдкреНрд░рддреНрдпреЗрдХ рд╡реНрдпрдХреНрддрд┐ рдзрд╛рдЧрд╛ рдПрдХ рд╕реЗрдХрдВрдб рдХреЗ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдорддрджрд╛рди рдЕрдВрддрд░рд╛рд▓ рдХреЗ рд╕рд╛рде рдЗрдирдкреБрдЯ рдХрддрд╛рд░ рд╕реЗ рдЬреБрдбрд╝реЗ 79,200 рд▓реЗрдирджреЗрди (22 рдШрдВрдЯреЗ * 60 рдорд┐рдирдЯ * рдкреНрд░рддрд┐ рдорд┐рдирдЯ 60 рд▓реЗрдирджреЗрди) рддрдХ рдХрд░рддрд╛ рд╣реИред
рдЬреИрд╕рд╛ рдХрд┐ рдКрдкрд░ рдХрд╣рд╛ рдЧрдпрд╛ рд╣реИ, рд╡рд┐рдВрдбреЛрдЬ рдПрдЬрд╝реНрдпреЛрд░ рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рдореВрд▓реНрдп рдирд┐рд░реНрдзрд╛рд░рдг рдореЙрдбрд▓ рдЖрдзрд╛рд░ рдЗрдХрд╛рдИ рдХреЗ рд░реВрдк рдореЗрдВ рдЕрд▓рдЧ "рд╕реНрдЯреЛрд░реЗрдЬ рд▓реЗрдирджреЗрди" рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред рдПрдХ рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рд▓реЗрдирджреЗрди рдПрдХ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХрд╛ рдЕрдиреБрд░реЛрдз рд╣реИ рдХрд┐ рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдбреЗрдЯрд╛ рдХреЛ рдЬреЛрдбрд╝рдиреЗ, рдкрдврд╝рдиреЗ, рдЕрдкрдбреЗрдЯ рдХрд░рдиреЗ рдпрд╛ рд╣рдЯрд╛рдиреЗ рдХреЗ рд▓рд┐рдПред рдЗрд╕ рд╢реНрд╡реЗрдд рдкрддреНрд░ рдХреЗ рд▓реЗрдЦрди рдХреЗ рд╕рдордп, рдЧреЛрджрд╛рдо рдХреА рд▓реЗрдирджреЗрди рд▓рд╛рдЧрдд $ 10,000 рдкреНрд░рддрд┐ рд▓реЗрдирджреЗрди рдереАред
рдЕрджреНрдпрддрди : рд╣рд╕реНрддрд╛рдВрддрд░рдг рдХреЗ рдкреНрд░рдХрд╛рд╢рди рдХреЗ рд╕рдордп: $
100,000 рдкреНрд░рддрд┐ рд▓реЗрдирджреЗрдиред
рдорд╣рддреНрд╡рдкреВрд░реНрдг рдЬрд╛рдирдХрд╛рд░реА ред рдХрддрд╛рд░реЛрдВ рд╕реЗ рдЬреБрдбрд╝реЗ рд▓реЗрдирджреЗрди рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреА рдЧрдгрдирд╛ рдХрд░рддреЗ рд╕рдордп, рдпрд╣ рдпрд╛рдж рд░рдЦрдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рдПрдХ рд╕рдВрджреЗрд╢ рдХреЛ рдПрдХ рдХрддрд╛рд░ рдореЗрдВ рд░рдЦрдирд╛ рдПрдХ рд▓реЗрди-рджреЗрди рд╣реИ, рдЬрдмрдХрд┐ рдПрдХ рд╕рдВрджреЗрд╢ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рдЕрдХреНрд╕рд░ рджреЛ-рдЪрд░рдгреАрдп рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╣реЛрддреА рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рдПрдХ рд╕рдВрджреЗрд╢ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рдФрд░ рдХрддрд╛рд░ рд╕реЗ рд╕рдВрджреЗрд╢ рдХреЛ рд╣рдЯрд╛рдиреЗ рдХрд╛ рдЕрдиреБрд░реЛрдз рдХрд░рдирд╛ рд╢рд╛рдорд┐рд▓ рд╣реЛрддрд╛ рд╣реИред рдирддреАрдЬрддрди, рдХрддрд╛рд░ рд╕реЗ рдПрдХ рд╕рдВрджреЗрд╢ рд╣рдЯрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рдлрд▓ рд╕рдВрдЪрд╛рд▓рди рдХреЗ рд▓рд┐рдП рджреЛ рднрдВрдбрд╛рд░рдг рд▓реЗрдирджреЗрди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред рдХреГрдкрдпрд╛ рдзреНрдпрд╛рди рджреЗрдВ: рднрд▓реЗ рд╣реА рдХрддрд╛рд░ рд╕реЗ рдПрдХ рд╕рдВрджреЗрд╢ рдХреЛ рд╣рдЯрд╛рдиреЗ рдХрд╛ рдЕрдиреБрд░реЛрдз рдбреЗрдЯрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдирд╣реАрдВ рд╣реИ, рдлрд┐рд░ рднреА рдЗрд╕реЗ рдПрдХ рднреБрдЧрддрд╛рди рд▓реЗрдирджреЗрди рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИред
рдКрдкрд░ рд╡рд░реНрдгрд┐рдд рдкрд░рд┐рджреГрд╢реНрдп рдореЗрдВ рдПрдХ рдПрдХрд▓ рдХрддрд╛рд░ рд╡рд┐рд▓реЛрдкрди рдкреНрд░рд╡рд╛рд╣ рджреНрд╡рд╛рд░рд╛ рдмрдирд╛рдИ рдЧрдИ рддрд┐рдЬреЛрд░реА рд▓реЗрдирджреЗрди рдорд╛рд╕рд┐рдХ рд╕реЗрд╡рд╛ рдмрд┐рд▓ рдореЗрдВ рд▓рдЧрднрдЧ $ 2.38 ($ 79,200 / 10,000 * $ 0.01 * 30 рджрд┐рди) рдЬреЛрдбрд╝ рджреЗрдЧрд╛ред рдХрддрд╛рд░ рд╕реЗ рд╕рдВрджреЗрд╢реЛрдВ рдХреЛ рд╣рдЯрд╛рдиреЗ рдХреЗ рд▓рд┐рдП 200 рдзрд╛рдЧреЗ (рдпрд╛ рдХрд╛рдо рдХреА рднреВрдорд┐рдХрд╛ рдХреА 200 рдкреНрд░рддрд┐рдпреЛрдВ рдореЗрдВ рдПрдХ рдзрд╛рдЧрд╛) рдЖрдкрдХреЗ рдорд╛рд╕рд┐рдХ рдЦрд░реНрдЪ рдХреЛ $ 457.2 (
UPDATE : рдпрджрд┐ рдЖрдк рд▓реЗрдЦ рдХреЗ рдЕрдиреБрд╡рд╛рдж рдХреЗ рдкреНрд░рдХрд╛рд╢рди рдХреЗ рд╕рдордп рдкрд░ рдЧрдгрдирд╛ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдпрд╣ 45.7 рдбреЙрд▓рд░ рд╣реИ) рдмрдврд╝рд╛ рджреЗрдЧрд╛ред рдпреЗ рд▓рд╛рдЧрдд рддрдм рдЙрддреНрдкрдиреНрди рд╣реЛрддреА рд╣реИ рдЬрдм рд╕рд┐рд╕реНрдЯрдо рдХреЛрдИ рдЧрдгрдирд╛ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдХреЗрд╡рд▓ рдХрддрд╛рд░ рдореЗрдВ рдХрд╛рдо рдХреА рд╡рд╕реНрддреБрдУрдВ рдХреА рдЙрдкрд╕реНрдерд┐рддрд┐ рдХреЗ рд▓рд┐рдП рдЬрд╛рдВрдЪ рдХрд░рддрд╛ рд╣реИред рдЙрдкрд░реЛрдХреНрдд рдЙрджрд╛рд╣рд░рдг рд╕рд╛рд░ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдХреЛрдИ рднреА рдЗрд╕ рддрд░рд╣ рд╕реЗ рд╕реЗрд╡рд╛ рдХреЛ рд▓рд╛рдЧреВ рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ред рдЖрдкрдХреЛ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЕрдиреБрдХреВрд▓рди рддрдХрдиреАрдХреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред
рдЕрдирд╛рд╡рд╢реНрдпрдХ рджреЗрд░реА рдХреЛ рдЦрддреНрдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рд┐рдлрд╛рд░рд┐рд╢реЗрдВ
Windows Azure Queue рдЖрдзрд╛рд░рд┐рдд рдореИрд╕реЗрдЬрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо рдХреЗ рдкреНрд░рджрд░реНрд╢рди рдХреЛ рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдк рдиреАрдЪреЗ рджрд┐рдП рдЧрдП рд╡рд░реНрдгрди рдХреЗ рдЕрдиреБрд╕рд╛рд░ Windows Azure рдЗрдВрдЯреАрдЧреНрд░реЗрд╢рди рдмрд╕ рджреНрд╡рд╛рд░рд╛ рдкреНрд░рджрддреНрдд рдкреНрд░рдХрд╛рд╢рдХ рдФрд░ рдЧреНрд░рд╛рд╣рдХ рд╕рдВрджреЗрд╢ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдкрд░рдд рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЛ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╕рдордп рдореЗрдВ рдорддрджрд╛рди рдФрд░ рдордЬрдмреВрд░ рдЕрдзрд┐рд╕реВрдЪрдирд╛ рддрдВрддреНрд░реЛрдВ рдХреЛ рд╕рдВрдпреЛрдЬрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ рддрд╛рдХрд┐ рдЫрд╛рддреНрд░реЛрдВ рдХреЛ рдПрдХ рдЕрдзрд┐рд╕реВрдЪрдирд╛ рдШрдЯрдирд╛ (рдЯреНрд░рд┐рдЧрд░) рдХреА рд╕рджрд╕реНрдпрддрд╛ рдорд┐рд▓ рд╕рдХреЗ рдЬреЛ рдХреБрдЫ рд╢рд░реНрддреЛрдВ рдХреЗ рддрд╣рдд рд╣реЛрддреА рд╣реИ рдФрд░ рдЗрдВрдЧрд┐рдд рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдПрдХ рдирдпрд╛ рдХрд╛рд░реНрдпрднрд╛рд░ рдХрддрд╛рд░рдмрджреНрдз рд╣реЛ рд░рд╣рд╛ рд╣реИред рдпрд╣ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдЖрдкрдХреЛ рдкреНрд░рдХрд╛рд╢рдХ рдФрд░ рдЧреНрд░рд╛рд╣рдХ рд╕реНрддрд░ рдкрд░ рдПрдХ рдорд╛рдирдХ рдХрддрд╛рд░ рдорддрджрд╛рди рдЪрдХреНрд░ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реВрдЪрдирд╛рдУрдВ рдХреЛ рднреЗрдЬрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред
рдЬрдЯрд┐рд▓ рд╡рд┐рддрд░рд┐рдд рдкреНрд░рдгрд╛рд▓рд┐рдпреЛрдВ рдореЗрдВ, рдЗрд╕ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреЛ рдПрдХ рдпрд╛ рдЕрдзрд┐рдХ рдЧреНрд░рд╛рд╣рдХреЛрдВ рдХреЛ рд╕реВрдЪрдирд╛рдПрдВ рднреЗрдЬрдиреЗ рдХреЗ рд▓рд┐рдП "рд╕рдВрджреЗрд╢ рдмрд╕" рдпрд╛ "рд╕рдВрджреЗрд╢ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдорд┐рдбрд▓рд╡реЗрдпрд░" рдХреЗ рдЙрдкрдпреЛрдЧ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред Windows Azure рдЗрдВрдЯреАрдЧреНрд░реЗрд╢рди рдмрд╕, Windows Azure рдореЗрдВ рд╣реА рдирд╣реАрдВ, рдмрд▓реНрдХрд┐ рд╕реНрдерд╛рдиреАрдп рд╕реНрддрд░ рдкрд░ рд╡рд┐рддрд░рд┐рдд рдХреА рдЧрдИ рд╡рд┐рддрд░рд┐рдд рд╡рд┐рддрд░рд┐рдд рдЕрдиреБрдкреНрд░рдпреЛрдЧ рд╕реЗрд╡рд╛рдУрдВ рдХреЗ рдмреАрдЪ рдЗрд╖реНрдЯрддрдо рд╕рдВрджреЗрд╢ рд╕рдорд╛рдзрд╛рди рд╣реИред рдпрд╣ "рд╕рдВрджреЗрд╢ рдмрд╕" рд╡рд╛рд╕реНрддреБрдХрд▓рд╛ рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рд▓рд┐рдП рдЖрджрд░реНрд╢ рд░реВрдк рд╕реЗ рдЕрдиреБрдХреВрд▓ рд╣реИ, рдЬреЛ рдХрддрд╛рд░реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдбреЗрдЯрд╛ рдЯреНрд░рд╛рдВрд╕рдлрд░ рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреЗ рдмреАрдЪ рд╕реВрдЪрдирд╛рдУрдВ рдХреЗ рдЖрджрд╛рди-рдкреНрд░рджрд╛рди рдХреЛ рд╕рдХреНрд╖рдо рдмрдирд╛рддрд╛ рд╣реИред
рдХрддрд╛рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдХ рдореИрд╕реЗрдЬрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо рдмрдирд╛рдиреЗ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдкреИрдЯрд░реНрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреА рд╣реИ:

рдкреНрд░рдХрд╛рд╢рдХреЛрдВ рдФрд░ рдХрддрд╛рд░ рд╕реЗрд╡рд╛ рдЧреНрд░рд╛рд╣рдХреЛрдВ рдХреЗ рдмреАрдЪ рдмрд╛рддрдЪреАрдд рдореЗрдВ рд╡рд┐рдВрдбреЛрдЬ рдПрдЬрд╝реВрд░ рднреВрдорд┐рдХрд╛рдУрдВ рдХреЗ рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХреЗ рдмреАрдЪ рдбреЗрдЯрд╛ рдХреЗ рдЖрджрд╛рди-рдкреНрд░рджрд╛рди рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рд╕рд┐рджреНрдзрд╛рдВрдд рдЕрдзрд┐рдХрд╛рдВрд╢ рдкреБрд╢ рджрд┐рд╢рд╛рдирд┐рд░реНрджреЗрд╢реЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ рдХреЛ рдкреВрд░рд╛ рдХрд░рддреЗ рд╣реИрдВред рдЗрд╕ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреА рдмреБрдирд┐рдпрд╛рджреА рдЕрд╡рдзрд╛рд░рдгрд╛рдУрдВ рдкрд░ рд╣рдорд╛рд░реЗ рдкрд┐рдЫрд▓реЗ рдкреНрд░рдХрд╛рд╢рдиреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдореЗрдВ рдЪрд░реНрдЪрд╛ рдХреА рдЧрдИ рд╣реИред
рдорд╣рддреНрд╡рдкреВрд░реНрдг рдЬрд╛рдирдХрд╛рд░реА ред Windows Azure рдПрдХреАрдХрд░рдг рдмрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдПрдХ рдореВрд▓реНрдп рдирд┐рд░реНрдзрд╛рд░рдг рдпреЛрдЬрдирд╛ рджреНрд╡рд╛рд░рд╛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬреЛ рдЗрд╕ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЗ рджреЛ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдШрдЯрдХреЛрдВ рдХреЛ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрддрд╛ рд╣реИред рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдбреЗрдЯрд╛ рдХреЗрдВрджреНрд░реЛрдВ рдХрд╛ рдЖрджрд╛рди-рдкреНрд░рджрд╛рди рдХрд░рддреЗ рд╕рдордп рдбреЗрдЯрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдФрд░ рднреЗрдЬрдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╢реБрд▓реНрдХ рд▓рд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рджреВрд╕рд░реЗ, рдЖрд╡реЗрджрди рдФрд░ рдПрдХреАрдХрд░рдг рдмрд╕ рдмреБрдирд┐рдпрд╛рджреА рдврд╛рдВрдЪреЗ рдХреЗ рдмреАрдЪ рд╕реНрдерд╛рдкрд┐рдд рдХрдиреЗрдХреНрд╢рди рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреЗ рд▓рд┐рдП рдПрдХ рд╢реБрд▓реНрдХ рд▓рд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рдЗрд╕ рд╕рдВрдмрдВрдз рдореЗрдВ, рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╡рд╛рд╕реНрддреБрдХрд▓рд╛ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХреАрдХрд░рдг рдмрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд╕рднреА рд╕рдХрд╛рд░рд╛рддреНрдордХ рдФрд░ рдирдХрд╛рд░рд╛рддреНрдордХ рдкрд╣рд▓реБрдУрдВ рдХрд╛ рдореВрд▓реНрдпрд╛рдВрдХрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд▓рд╛рдЧрдд рдФрд░ рд▓рд╛рднреЛрдВ рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░рдирд╛ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИред рдпрд╣ рдЖрдХрд▓рди рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рдПрдХреАрдХрд░рдг рдмрд╕ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдЕрдзрд┐рд╕реВрдЪрдирд╛ рдкреНрд░реЗрд╖рдг рд╕реНрддрд░ рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╕реЗ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд▓рд╛рдЧрдд рдореЗрдВ рдХрдореА рдЖрдПрдЧреА, рдЬреЛ рдЗрд╕ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рдирд┐рд╡реЗрд╢ рдФрд░ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреА рдЕрддрд┐рд░рд┐рдХреНрдд рд╢реНрд░рдо рд▓рд╛рдЧрдд рдХреЛ рд╕рд╣реА рдард╣рд░рд╛ рд╕рдХрддреА рд╣реИредрдкреНрд░рдХрд╛рд╢рдХреЛрдВ рдХреЗ рдирдХрд╛рд░рд╛рддреНрдордХ рд╕реНрддрд░ рдХреЛ рдкреНрд░рдХрд╛рд╢рдХреЛрдВ рдФрд░ рдЧреНрд░рд╛рд╣рдХреЛрдВ рдХреЗ рдмреАрдЪ рдПрдХ рдЕрддрд┐рд░рд┐рдХреНрдд рд╕реНрддрд░ рдХрд╛ рд╕рдВрджреЗрд╢ рдмрдирд╛рдХрд░ рдЖрд╕рд╛рдиреА рд╕реЗ рдХрдо рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдПрдХ рдЕрддрд┐рд░рд┐рдХреНрдд рд▓рд╛рдЧрдд рдореЗрдВ рдХрдореА рдХреЛ рдЧрддрд┐рд╢реАрд▓ (рд▓реЛрдЪрджрд╛рд░) рд╕реНрдХреЗрд▓рд┐рдВрдЧ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬрд┐рд╕рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЛ рдЕрдЧрд▓реЗ рдЕрдиреБрднрд╛рдЧ рдореЗрдВ рд╡рд░реНрдгрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИредрдбрд╛рдпрдирд╛рдорд┐рдХ рд╕реНрдХреЗрд▓рд┐рдВрдЧ рджрд┐рд╢рд╛рдирд┐рд░реНрджреЗрд╢
Windows Azure рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рдЖрд╕рд╛рдиреА рд╕реЗ рдФрд░ рддреЗрдЬрд╝реА рд╕реЗ рдЧреНрд░рд╛рд╣рдХ рд╕рдорд╛рдзрд╛рдиреЛрдВ рдХреЛ рдКрдкрд░ рдФрд░ рдиреАрдЪреЗ рджреЛрдиреЛрдВ рдкреИрдорд╛рдиреЗ рдкрд░ рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИред рдХрд╛рд░реНрдпрднрд╛рд░ рдФрд░ рдпрд╛рддрд╛рдпрд╛рдд рдореЗрдВ рдЙрддрд╛рд░-рдЪрдврд╝рд╛рд╡ рдХреЗ рдЕрдиреБрдХреВрд▓ рд╣реЛрдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдЗрд╕ рдХреНрд▓рд╛рдЙрдб рдХрдВрдкреНрдпреВрдЯрд┐рдВрдЧ рдкреНрд▓реЗрдЯрдлреЙрд░реНрдо рдХреЗ рдореБрдЦреНрдп рд▓рд╛рднреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рд╣реИред рдЗрд╕рдХрд╛ рдорддрд▓рдм рдпрд╣ рд╣реИ рдХрд┐ "рд╕реНрдХреЗрд▓реЗрдмрд┐рд▓рд┐рдЯреА" рдХреА рдЕрд╡рдзрд╛рд░рдгрд╛ рдЖрдИрдЯреА рдкреЗрд╢реЗрд╡рд░реЛрдВ рдХреЗ рд╢рдмреНрджрдХреЛрд╢ рдореЗрдВ рдПрдХ рд╢рдмреНрдж рдмрди рдЧрдИ рд╣реИ, рдФрд░ рд╕реНрдХреЗрд▓реЗрдмрд┐рд▓рд┐рдЯреА рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди рдХреЛ рдЕрдм рдЕрддреНрдпрдзрд┐рдХ рд▓рд╛рдЧрддреЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред рдЗрд╕ рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рд╕реЙрдлрд╝реНрдЯрд╡реЗрдпрд░ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХрд┐рд╕реА рднреА рдХреНрд▓рд╛рдЙрдб рд╕рдорд╛рдзрд╛рди рдореЗрдВ рдПрдХ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рд╡рд┐рдХрд╕рд┐рдд рд╡рд╛рд╕реНрддреБрдХрд▓рд╛ рдХреЗ рд╕рд╛рде рдЙрдкрд▓рдмреНрдз рд╣реИредрдЧрддрд┐рд╢реАрд▓ рд╕реНрдХреЗрд▓рд┐рдВрдЧ- рдпрд╣ рдПрдХ рд╡рд┐рд╢реЗрд╖ рд╕рдорд╛рдзрд╛рди рдХреА рдПрдХ рддрдХрдиреАрдХреА рд╡рд┐рд╢реЗрд╖рддрд╛ рд╣реИ рдЬреЛ рдЖрдкрдХреЛ рд░рдирд╡реЗ рдХреЗ рд▓рд┐рдП рдЙрдкрд▓рдмреНрдз рд╕реНрдЯреЛрд░реЗрдЬ рд╕реНрдкреЗрд╕ рдФрд░ рдХрдВрдкреНрдпреВрдЯрд┐рдВрдЧ рд╢рдХреНрддрд┐ рдХреЛ рдмрдврд╝рд╛рдХрд░ рдФрд░ рдХрдо рдХрд░рдХреЗ рдПрдХ рдЪрд░ рд╡рд░реНрдХрд▓реЛрдб рдХреЗ рдЕрдиреБрдХреВрд▓ рд╣реЛрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рд╡рд┐рдВрдбреЛрдЬ рдПрдЬрд╝реНрдпреЛрд░ рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рдореЗрдВ рд╡рд┐рддрд░рд┐рдд рдХрдВрдкреНрдпреВрдЯрд┐рдВрдЧ рдЕрд╡рд╕рдВрд░рдЪрдирд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдбрд╛рдпрдиреЗрдорд┐рдХ рд╕реНрдХреЗрд▓рд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рд╕рдорд░реНрдерди рд╢рд╛рдорд┐рд▓ рд╣реИ рдЬреЛ рдЙрдкрднреЛрдХреНрддрд╛рдУрдВ рдХреЛ рдПрдХ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рд╢реБрд▓реНрдХ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╢рдХреНрддрд┐ рдЖрд╡рдВрдЯрд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИредWindows Azure рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рджреНрд╡рд╛рд░рд╛ рд╕рдорд░реНрдерд┐рдд рджреЛ рдкреНрд░рдХрд╛рд░ рдХреА рдбрд╛рдпрдиреЗрдорд┐рдХ рд╕реНрдХреЗрд▓рд┐рдВрдЧ рдореЗрдВ рдЕрдВрддрд░ рдХрд░рдирд╛ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ:- - . . Windows Azure , , .
- () ( ) .
рднреВрдорд┐рдХрд╛-рдЖрдзрд╛рд░рд┐рдд рд╕рдВрджреЗрд╢ рд╕рдорд╛рдзрд╛рди рдореЗрдВ рдбрд╛рдпрдирд╛рдорд┐рдХ рд╕реНрдХреЗрд▓рд┐рдВрдЧ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЕрдиреБрд╢рдВрд╕рд╛рдУрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ:- рд╕реАрдкреАрдпреВ рдЙрдкрдпреЛрдЧ, рдХрддрд╛рд░ рдЧрд╣рд░рд╛рдИ, рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рд╕рдордп рдФрд░ рд╕рдВрджреЗрд╢ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рд╡рд┐рд▓рдВрдмрддрд╛ рд╕рд╣рд┐рдд рдкреНрд░рдореБрдЦ рдкреНрд░рджрд░реНрд╢рди рдореАрдЯреНрд░рд┐рдХ рдЯреНрд░реИрдХ рдХрд░реЗрдВ ред
- рдЧрддрд┐рд╢реАрд▓ рд░реВрдк рд╕реЗ рдЪреЛрдЯреА рдХреЗ рдХрд╛рд░реНрдпрднрд╛рд░ рдХреЛ рд╕рдВрднрд╛рд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╛рд░реНрдп рднреВрдорд┐рдХрд╛ рдХреА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рд╡реГрджреНрдзрд┐ рдпрд╛ рдХрдореА , рджреЛрдиреЛрдВ рдЕрдкреЗрдХреНрд╖рд┐рдд рдФрд░ рдЕрдкреНрд░рддреНрдпрд╛рд╢рд┐рддред
- рд╡рд░реНрдХрд▓реЛрдб рдХреЗ рд╡рд┐рднрд┐рдиреНрди рд╕рдВрдХреЗрддрдХреЛрдВ рдХреЗ рд▓рд┐рдП рд╕рд┐рд╕реНрдЯрдо рдХреЛ рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдереНрд░реЗрдбреНрд╕ рдХреА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рдЙрд▓реНрд▓реЗрдЦрдиреАрдп рд░реВрдк рд╕реЗ рд╡реГрджреНрдзрд┐ рдФрд░ рдХрдореА рдХрд░реЗрдВ ред
- .NET рдлреНрд░реЗрдорд╡рд░реНрдХ 4 рдХреЗ рдЯрд╛рд╕реНрдХ рдкреИрд░реЗрд▓рд▓ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХрд╛рд░реНрдп рд╡рд┐рднрд╛рдЬрди рдФрд░ рдЫреЛрдЯреЗ рдЯреБрдХрдбрд╝реЛрдВ рдХреЗ рд╕рдорд╛рдирд╛рдВрддрд░ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг ред
- рд╡рд░реНрдХрд▓реЛрдб рдХреЗ рдПрдХ рдЪрд░ рд╕реНрддрд░ рдХреЗ рд╕рд╛рде рд╕рдорд╛рдзрд╛рди рдХрд╛ рдкреНрд░рдмрдВрдзрди рдХрд░рддреЗ рд╕рдордп рдХрдВрдкреНрдпреВрдЯрд┐рдВрдЧ рд╢рдХреНрддрд┐ рдХреА рдЙрдкрд▓рдмреНрдзрддрд╛ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдВ ; рдпрд╣ рдЕрддрд┐рд░рд┐рдХреНрдд рдкреНрд░рддрд┐рдпрд╛рдБ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрддрд┐рд░рд┐рдХреНрдд рдкреНрд░рдпрд╛рд╕ рдХрд┐рдП рдмрд┐рдирд╛, рднрд╛рд░ рдореЗрдВ рдЕрдЪрд╛рдирдХ рд╡реГрджреНрдзрд┐ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдЧрд╛ред
рд╕реЗрд╡рд╛ рдкреНрд░рдмрдВрдзрди API, Windows Azure рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рдкрд░ рд╣реЛрд╕реНрдЯ рдХреА рдЧрдИ рд╕реЗрд╡рд╛рдУрдВ рдХреЛ рд░рдирдЯрд╛рдЗрдо рдореЗрдВ рдкрд░рд┐рдирд┐рдпреЛрдЬрди рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдмрджрд▓рдХрд░ рднреВрдорд┐рдХрд╛ рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдмрдврд╝рд╛рдиреЗ рдпрд╛ рдШрдЯрд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИредрдиреЛрдЯредрдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ, рдПрдХ рдорд╛рдирдХ рд╕рджрд╕реНрдпрддрд╛ рдХреЗ рд▓рд┐рдП Windows Azure рдХрдВрдкреНрдпреВрдЯрд┐рдВрдЧ рдСрдкрд░реЗрд╢рди рдХреЗ рдЕрдзрд┐рдХрддрдо 20 рдЙрджрд╛рд╣рд░рдг рдЙрдкрд▓рдмреНрдз рд╣реИрдВред рдпрд╣ рд╡рд┐рдВрдбреЛрдЬ рдПрдЬрд╝реНрдпреЛрд░ рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рдХреЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рд╕реЗрд╡рд╛ рдХреА рд▓рд╛рдЧрдд рдмрдврд╝рд╛рдиреЗ рд╕реЗ рдмрдЪрд╛рддрд╛ рд╣реИ рдЕрдЧрд░ рд╡реЗ рдЧрд▓рддреА рд╕реЗ рдмрд╣реБрдд рдмрдбрд╝реА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рд░реЛрд▓ рдЗрдВрд╕реНрдЯреЗрдВрд╕ рдмрдирд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рддреЗ рд╣реИрдВред рдпрд╣ рддрдерд╛рдХрдерд┐рдд "рдирд░рдо" рдкреНрд░рддрд┐рдмрдВрдз рд╣реИред рдЗрд╕ рдХреЛрдЯрд╛ рдХреЛ рдмрдврд╝рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЛрдИ рднреА рдЕрдиреБрд░реЛрдз рд╡рд┐рдВрдбреЛрдЬ рдПрдЬрд╝реНрдпреЛрд░ рд╕рдкреЛрд░реНрдЯ рдЯреЗрдХреНрдирд┐рдХрд▓ рд╕рдкреЛрд░реНрдЯ рдЯреАрдо рдХреЛ рдкреНрд░рд╕реНрддреБрдд рдХрд░рдирд╛ рд╣реЛрдЧрд╛редрдирд╛рдЯрдХреАрдп рд░реВрдк рд╕реЗ рднреВрдорд┐рдХрд╛ рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреЛ рдорд╛рдкрдирд╛ рд╣рдореЗрд╢рд╛ рдирд╛рдЯрдХреАрдп рд░реВрдк рд╕реЗ рдмрдврд╝реЗ рд╣реБрдП рдХрд╛рд░реНрдпрднрд╛рд░ рдХреЛ рд╕рдВрднрд╛рд▓рдиреЗ рдХрд╛ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рддрд░реАрдХрд╛ рдирд╣реАрдВ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╡рд░реНрдЪреБрдЕрд▓ рдорд╢реАрди рдХрд╛ рдПрдХ рдирдпрд╛ рдЙрджрд╛рд╣рд░рдг рдХрд╛рдо рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рд╣реЛрдиреЗ рдореЗрдВ рдХрдИ рд╕реЗрдХрдВрдб рд▓реЗрддрд╛ рд╣реИ, рдФрд░ рд╡рд░реНрддрдорд╛рди рдореЗрдВ, рд╕реЗрд╡рд╛ рд╕реНрддрд░ рдХреЗ рд╕рдордЭреМрддреЗ рдЗрд╕ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреА рдЕрд╡рдзрд┐ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╕рдВрдХреЗрддрдХ рдкреНрд░рджрд╛рди рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВред рдЗрд╕рдХреЗ рдмрдЬрд╛рдп, рдЖрдк рд╕рд░рд▓ рддрд░реАрдХреЗ рд╕реЗ рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВ - рдХрд╛рдо рдХреЗ рдмреЛрдЭ рдореЗрдВ рдЕрд╕реНрдерд╛рдпреА рд╡реГрджреНрдзрд┐ рд╕реЗ рдирд┐рдкрдЯрдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд░реНрдХрдлрд╝реНрд▓реЛ рдХреА рд╕рдВрдЦреНрдпрд╛ рдмрдврд╝рд╛рдПрдВред рдХрд╛рд░реНрдпрднрд╛рд░ рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рддреЗ рд╕рдордп, рдЗрд╕рдХреЗ рд╕рдВрдХреЗрддрдХреЛрдВ рдХреА рдирд┐рдЧрд░рд╛рдиреА рдЙрди рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдХреА рдкрд╣рдЪрд╛рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреА рдЬрд╛рддреА рд╣реИ, рдЬрд┐рдиреНрд╣реЗрдВ рдХрд╛рд░реНрдп рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рдЧрддрд┐рд╢реАрд▓ рд╡реГрджреНрдзрд┐ рдпрд╛ рдХрдореА рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИредрдорд╣рддреНрд╡рдкреВрд░реНрдг рдЬрд╛рдирдХрд╛рд░реА . Windows Azure 500 . , , , , HTTP- 503 ┬л ┬╗. . HTTP 503 , , .
рдЬреНрдпрд╛рджрд╛рддрд░ рдорд╛рдорд▓реЛрдВ рдореЗрдВ, рднреВрдорд┐рдХрд╛ рдХреЗ рдПрдХ рдЕрд▓рдЧ рдЙрджрд╛рд╣рд░рдг рджреНрд╡рд╛рд░рд╛ рд╡рд░реНрдХрдлрд╝реНрд▓реЛ рдХреА рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд╕реНрдХреЗрд▓рд┐рдВрдЧ рдХреА рдЬрд╛рддреА рд╣реИред рд╕реНрдХреЗрд▓рд┐рдВрдЧ рд░реЛрд▓ рдЗрдВрд╕реНрдЯреЗрдВрд╕реЗрд╕ рдХреЛ рдЕрдХреНрд╕рд░ рд╕рдорд╛рдзрд╛рди рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░ рдХреЗ рдХреЗрдВрджреНрд░реАрдп рддрддреНрд╡ рдХреЗ рд╡рд┐рдХрд╛рд╕ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ рдЬреЛ рдкреНрд░рджрд░реНрд╢рди рдореЗрдЯреНрд░рд┐рдХреНрд╕ рдХреЛ рдЯреНрд░реИрдХ рдХрд░рддрд╛ рд╣реИ рдФрд░ рд╕рд┐рд╕реНрдЯрдо рдХреЛ рд╕реНрдХреЗрд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрджрдо рдЙрдард╛рддрд╛ рд╣реИред рдиреАрдЪреЗ рджрд┐рдП рдЧрдП рдЖрд░реЗрдЦ рдореЗрдВ рдбрд╛рдпрдирд╛рдорд┐рдХ рд╕реНрдХреЗрд▓рд┐рдВрдЧ рдПрдЬреЗрдВрдЯ рдирд╛рдордХ рдПрдХ рд╕реЗрд╡рд╛ рдШрдЯрдХ рдХрд╛ рд╡рд░реНрдгрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ , рдЬреЛ рдпрд╣ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╛рд░реНрдпрднрд╛рд░ рдореИрдЯреНрд░рд┐рдХреНрд╕ рдХреЗ рд╕рд╛рде рдЬреБрдбрд╝реЗ рдбреЗрдЯрд╛ рдПрдХрддреНрд░ рдХрд░рддрд╛ рд╣реИ рдФрд░ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рдирдП рдЗрдВрд╕реНрдЯреЗрдВрд╕реЗрд╕ рдпрд╛ рдбреАрдХреЛрдорд┐рд╢рдирд┐рдВрдЧ рдирд┐рд╖реНрдХреНрд░рд┐рдп рд╣реИрдВред
рдЖрдк рд╕реНрдХреИрд▓рд┐рдВрдЧ рдПрдЬреЗрдВрдЯ рд╕реЗрд╡рд╛ рдХреЛ рд╡рд┐рдВрдбреЛрдЬ рдПрдЬрд╝реНрдпреЛрд░ рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рдкрд░ рдпрд╛ рд╕реНрдерд╛рдиреАрдп рд╕реЗрд╡рд╛ рдХреЗ рд░реВрдк рдореЗрдВ рдХрд╛рдо рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЧрдП рдкрд░рд┐рдирд┐рдпреЛрдЬрди рдЯреЛрдкреЛрд▓реЙрдЬреА рдХреЗ рдмрд╛рд╡рдЬреВрдж, рдЗрд╕ рд╕реЗрд╡рд╛ рдореЗрдВ рд╡рд┐рдВрдбреЛрдЬ рдПрдЬрд╝реНрдпреЛрд░ рдХрддрд╛рд░реЛрдВ рддрдХ рдкрд╣реБрдВрдЪ рд╣реЛрдЧреАредрд╕реНрдХреЗрд▓рд┐рдВрдЧ рдкрд░ рджреЗрд░реА рдХреЗ рд╕рдордп рдХреЗ рдкреНрд░рднрд╛рд╡, рднрдВрдбрд╛рд░рдг рдХреЗ рд╕рд╛рде рдбреЗрдЯрд╛ рд╡рд┐рдирд┐рдордп рдХреЗ рджреМрд░рд╛рди рд▓реЗрдирджреЗрди рдХреА рд▓рд╛рдЧрдд рдФрд░ рдЧрддрд┐рд╢реАрд▓ рд╕реНрдХреЗрд▓рд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ рдкрд░ рдЪрд░реНрдЪрд╛ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рд╣рдо рдЗрди рд╕рд┐рдлрд╛рд░рд┐рд╢реЛрдВ рдХреЗ рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреА рдУрд░ рдореБрдбрд╝рддреЗ рд╣реИрдВредрддрдХрдиреАрдХреА рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди
рдкрд┐рдЫрд▓реЗ рд╡рд░реНрдЧреЛрдВ рдиреЗ рд╡рд┐рдВрдбреЛрдЬ рдПрдЬрд╝реНрдпреЛрд░ рдХреНрдпреВ рд╕реНрдЯреЛрд░реЗрдЬ рд╕рд░реНрд╡рд┐рд╕реЗрдЬ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рдПрдХ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд┐рдП рдЧрдП рдореИрд╕реЗрдЬрд┐рдВрдЧ рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░ рдХреА рдкреНрд░рдореБрдЦ рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХрд╛ рд╡рд░реНрдгрди рдХрд┐рдпрд╛ред рд╣рдордиреЗ рд╕реНрдХреЗрд▓рд┐рдВрдЧ рдХреЗ рддреАрди рдкреНрд░рдореБрдЦ рдкрд╣рд▓реБрдУрдВ рдкрд░ рдзреНрдпрд╛рди рджрд┐рдпрд╛: рдбреЗрдЯрд╛ рдкреНрд░реЛрд╕реЗрд╕рд┐рдВрдЧ рдореЗрдВ рд╡рд┐рд▓рдВрдмрддрд╛ рдХреЛ рдХрдо рдХрд░рдирд╛, рднрдВрдбрд╛рд░рдг рд▓реЗрдирджреЗрди рдХреА рд▓рд╛рдЧрддреЛрдВ рдХреЛ рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд░рдирд╛ рдФрд░ рдХрд╛рд░реНрдпрднрд╛рд░ рдХреА рдЕрд╕реНрдерд┐рд░рддрд╛ рдХреЗ рд▓рд┐рдП рдЬрд╡рд╛рдмрджреЗрд╣реА рдореЗрдВ рд╕реБрдзрд╛рд░ рдХрд░рдирд╛редрдпрд╣ рдЦрдВрдб рд╡рд┐рдВрдбреЛрдЬ рдПрдЬрд╝реНрдпреЛрд░ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЗ рд▓рд┐рдП рдЕрднрд┐рдкреНрд░реЗрдд рд╣реИ рдФрд░ рдЯреЗрдореНрдкреНрд▓реЗрдЯ рдХреЗ рд╕реЙрдлрд╝реНрдЯрд╡реЗрдпрд░ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХрд╛ рд╡рд░реНрдгрди рдХрд░рддрд╛ рд╣реИредрдиреЛрдЯред
рдЗрд╕ рдЕрдиреБрднрд╛рдЧ рдореЗрдВ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд╕реНрдХреЗрд▓рд┐рдВрдЧ, рд╕рд╛рде рд╣реА рдХреНрд╡реЗрд░реА-рдЖрдзрд╛рд░рд┐рдд рдореЙрдбрд▓ рдФрд░ рдкреБрд╢ рдбреЗрдЯрд╛ рдХреЗ рд╕рдорд░реНрдерди рдХреЗ рд╕рд╛рде рдПрдХ рдХрддрд╛рд░ рд╢реНрд░реЛрддрд╛ рдмрдирд╛рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рд╣реИред рднреВрдорд┐рдХрд╛ рдЙрджрд╛рд╣рд░рдг рд╕реНрддрд░ рдкрд░ рдЧрддрд┐рд╢реАрд▓ рд╕реНрдХреЗрд▓рд┐рдВрдЧ рдХреЗ рдЖрдзреБрдирд┐рдХ рддрд░реАрдХреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рд▓рд┐рдП, рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╕рдореБрджрд╛рдп рджреНрд╡рд╛рд░рд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдФрд░ MSDN рдЧреИрд▓рд░реА рдЧреИрд▓рд░реА рд╡реЗрдмрд╕рд╛рдЗрдЯ рдкрд░ рдкреНрд░рдХрд╛рд╢рд┐рдд рджреЗрдЦреЗрдВ редрдПрдХ рдорд╛рдирдХ рдХрддрд╛рд░ рд╢реНрд░реЛрддрд╛ рдмрдирд╛рдирд╛
рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдПрдХ рдЕрдиреБрдмрдВрдз рдмрдирд╛рдПрдВ рдЬреЛ рдХрддрд╛рд░ рд╢реНрд░реЛрддрд╛ рдШрдЯрдХ рджреНрд╡рд╛рд░рд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬрд┐рд╕реЗ рдПрдХ рдХрд╛рдордХрд╛рдЬреА рднреВрдорд┐рдХрд╛ рдореЗрдВ рд░рдЦрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ Windows Azure рдХрддрд╛рд░ рдХреЗ рд▓рд┐рдП рдбреЗрдЯрд╛ рд╣рд╕реНрддрд╛рдВрддрд░рдг рдХреА рдЕрдкреЗрдХреНрд╖рд╛ рдХрд░рддрд╛ рд╣реИред/// , Windows Azure. public interface ICloudQueueServiceWorkerRoleExtension { /// , . void StartListener(int threadCount); /// . CloudQueueListenerInfo QueryState(); /// Windows Azure. int DequeueBatchSize { get; set; } /// , . TimeSpan DequeueInterval { get; set; } /// , , . event WorkCompletedDelegate QueueEmpty; }
QueueEmpty рдЗрд╡реЗрдВрдЯ рдиреЛрдб рджреНрд╡рд╛рд░рд╛ рдЙрдкрдпреЛрдЧ рдХреЗ рд▓рд┐рдП рд╣реИред рдЗрд╕рдореЗрдВ рдПрдХ рддрдВрддреНрд░ рд╣реЛрддрд╛ рд╣реИ рдЬреЛ рдиреЛрдб рдХреЛ рдХрддрд╛рд░ рдХреЗ рд╢реНрд░реЛрддрд╛ рдХреЗ рд╕рдВрдЪрд╛рд▓рди рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ рдЬрдм рдХрддрд╛рд░ рдЦрд╛рд▓реА рд╣реЛрддреА рд╣реИред рдИрд╡реЗрдВрдЯ рдкреНрд░рддрд┐рдирд┐рдзрд┐ рдХреЛ рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ:
/// <summary> /// , /// . /// </summary> /// <param name="sender"> .</param> /// <param name="idleCount"> , .</param> /// <param name="delay">, .</param> /// <returns>, .</returns> public delegate bool WorkCompletedDelegate(object sender, int idleCount, out TimeSpan delay);
рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдХрддрд╛рд░ рддрддреНрд╡реЛрдВ рдХреЛ рд╢реНрд░реЛрддрд╛рдУрдВ рдХреЛ рдмрдирд╛рдХрд░ рд╕рд░рд▓ рдмрдирд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдЬреЛ рдПрд╕рдбреАрдХреЗ рдореЗрдВ рдирд┐рд░реНрдорд┐рдд рд╡рд░реНрдЧреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдп рдЬреЗрдиреЗрд░рд┐рдХ рдЯреЗрдореНрдкрд▓реЗрдЯреНрд╕ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддреЗ рд╣реИрдВ, рдЬреИрд╕реЗ рдХрд┐
рдХреНрд▓рд╛рдЙрдбрдХреНрдпреВрдпреВ рдореЗрд╕реЗрдЬ ред рдпреВрдирд┐рд╡рд░реНрд╕рд▓ рдХрддрд╛рд░ рдПрдХреНрд╕реЗрд╕ рдкреИрдЯрд░реНрди рдХреЗ рд╕рдорд░реНрдерди рдХреЗ рд╕рд╛рде рдПрдХ рдирдпрд╛ рдХрддрд╛рд░ рд╢реНрд░реЛрддрд╛ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдмрдирд╛рдПрдБ:
рдХреГрдкрдпрд╛ рдзреНрдпрд╛рди рджреЗрдВ: рд╣рдордиреЗ .NET рдлреНрд░реЗрдорд╡рд░реНрдХ 4 рдореЗрдВ рдЙрдкрд▓рдмреНрдз IObservable рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдСрдмреНрдЬрд░реНрд╡рд░ рдбрд┐рдЬрд╝рд╛рдЗрди рдЯреЗрдореНрдкрд▓реЗрдЯ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдХреЗ рдПрдХ рдпрд╛ рдХрдИ рдЧреНрд░рд╛рд╣рдХреЛрдВ рдХреЛ рдХрддрд╛рд░ рддрддреНрд╡реЛрдВ рдХреЛ рдкреНрд░рд╕рд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рд╛рд░реНрд╡рднреМрдорд┐рдХ рдЯреЗрдореНрдкреНрд▓реЗрдЯ рдХреЗ рд╕рдорд░реНрдерди рдХреЗ рд╕рд╛рде рд╢реНрд░реЛрддрд╛ рдХреЛ рднреА рдЕрдиреБрдорддрд┐ рджреАред
рд╣рдо рдЙрд╕ рдШрдЯрдХ рдХреЗ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдХреЛ рдмрдЪрд╛рдиреЗ рдХрд╛ рдЗрд░рд╛рджрд╛ рд░рдЦрддреЗ рд╣реИрдВ рдЬрд┐рд╕рдореЗрдВ ICloudQueueListenerExtension рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рд╣рд╛рд▓рд╛рдБрдХрд┐, рд╣рдореЗрдВ рдХрддрд╛рд░ рд╕реЗ рд╕рдВрджреЗрд╢ рдирд┐рдХрд╛рд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рд╛рде рдХрдИ рдереНрд░реЗрдб (рдХрд╛рд░реНрдп) рдЪрд▓рд╛рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рдЗрд╕рд▓рд┐рдП, рд╣рдо рд╢реНрд░реЛрддрд╛ рдШрдЯрдХ рдореЗрдВ рдХрддрд╛рд░ рд╕реЗ рд╕рдВрджреЗрд╢реЛрдВ рдХреЛ рд╣рдЯрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдорд▓реНрдЯреАрдереНрд░реЗрдбреЗрдб рддрд░реНрдХ рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди рдЬреЛрдбрд╝рддреЗ рд╣реИрдВред рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╕рдорд╛рдирд╛рдВрддрд░ рдбрд╛рдЯрд╛ рдкреНрд░реЛрд╕реЗрд╕рд┐рдВрдЧ рдЯрд╛рд╕реНрдХ рдкреИрд░реЗрд▓рд▓ рд▓рд╛рдЗрдмреНрд░реЗрд░реА (TPL) рдХреЗ рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рдПрдХ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
StartListener рд╡рд┐рдзрд┐ рд╣рдореЗрдВ рдХрддрд╛рд░ рд╕реЗ рд╕рдВрджреЗрд╢ рдирд┐рдХрд╛рд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рдереНрд░реЗрдб рдмрдирд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдЧреА:
/// <summary> /// . /// </summary> /// <param name="threadCount"> .</param> public void StartListener(int threadCount) { Guard.ArgumentNotZeroOrNegativeValue(threadCount, "threadCount"); // . if (this.dequeueTasks.IsAddingCompleted) { this.dequeueTasks = new BlockingCollection<Task>(this.dequeueTaskList); } for (int i = 0; i < threadCount; i++) { CancellationToken cancellationToken = this.cancellationSignal.Token; CloudQueueListenerDequeueTaskState<T> workerState = new CloudQueueListenerDequeueTaskState<T>(Subscriptions, cancellationToken, this.queueLocation, this.queueStorage); // , . this.dequeueTasks.Add(Task.Factory.StartNew(DequeueTaskMain, workerState, cancellationToken, TaskCreationOptions.LongRunning, TaskScheduler.Default)); } // , . this.dequeueTasks.CompleteAdding(); }
DequeueTaskMain рд╡рд┐рдзрд┐ рдХрддрд╛рд░ рд╕реЗ рд╕рдВрджреЗрд╢реЛрдВ рдХреЛ
рд╣рдЯрд╛рдиреЗ рд╡рд╛рд▓реЗ рдереНрд░реЗрдб рдХреЗ рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддреА рд╣реИред рдпрд╣ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдмреБрдирд┐рдпрд╛рджреА рдХрд╛рд░реНрдпреЛрдВ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИ:
/// <summary> /// Windows Azure. /// </summary> /// <param name="state">, .</param> private void DequeueTaskMain(object state) { CloudQueueListenerDequeueTaskState<T> workerState = (CloudQueueListenerDequeueTaskState<T>)state; int idleStateCount = 0; TimeSpan sleepInterval = DequeueInterval; try { // , . while (workerState.CanRun) { try { var queueMessages = from msg in workerState.QueueStorage.Get<T>(workerState.QueueLocation.QueueName, DequeueBatchSize, workerState.QueueLocation.VisibilityTimeout).AsParallel() where msg != null select msg; int messageCount = 0; // PLINQ. queueMessages.ForAll((message) => { // . idleStateCount = 0; // , . workerState.OnNext(message); // , . workerState.QueueStorage.Delete<T>(message); // . messageCount++; }); // , . if (0 == messageCount) { // , (, ). idleStateCount++; // , . if (QueueEmpty != null) { // , . if (QueueEmpty(this, idleStateCount, out sleepInterval)) { // , . break; } } // . Thread.Sleep(sleepInterval); } } catch (Exception ex) { if (ex is OperationCanceledException) { throw; } else { // . workerState.OnError(ex); // , . Thread.Sleep(sleepInterval); } } } } finally { workerState.OnCompleted(); } }
DequeueTaskMain рдкрджреНрдзрддрд┐ рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╕реБрд╡рд┐рдзрд╛рдУрдВ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдХреБрдЫ рд╕реНрдкрд╖реНрдЯреАрдХрд░рдг рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИред
рдкрд╣рд▓реЗ, рд╕рдорд╛рдирд╛рдВрддрд░ LINQ (PLINQ) рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдмрд╛рдж рдХреЗ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рдЙрджреНрджреЗрд╢реНрдп рдХреЗ рд▓рд┐рдП рд╕рдВрджреЗрд╢ рднреЗрдЬрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП PLINQ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдореБрдЦреНрдп рд▓рд╛рдн рдпрд╣ рд╣реИ рдХрд┐ рдЬрдм рднреА рд╕рдВрднрд╡ рд╣реЛ рд╡рд┐рднрд┐рдиреНрди рдкреНрд░реЛрд╕реЗрд╕рд░ рдкрд░ рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╡рд░реНрдХрдлрд╝реНрд▓реЛ рдореЗрдВ рдкреНрд░рддрд┐рдирд┐рдзрд┐ рдХреЗ рд╕рдорд╛рдирд╛рдВрддрд░ рдЙрдкрдпреЛрдЧ рдХреЗ рдХрд╛рд░рдг рд╕рдВрджреЗрд╢ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдХрд╛ рддреНрд╡рд░рдг рд╣реЛрддрд╛ рд╣реИред
рдиреЛрдЯред рдЖрдВрддрд░рд┐рдХ рдХреНрд╡реЗрд░реА рд╕рдорд╛рдирд╛рдВрддрд░ рдирд┐рдпрдВрддреНрд░рдг PLINQ рджреНрд╡рд╛рд░рд╛ рдкреНрд░рджрд╛рди рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕ рдмрд╛рдд рдХреА рдХреЛрдИ рдЧрд╛рд░рдВрдЯреА рдирд╣реАрдВ рд╣реИ рдХрд┐ PLINQ рд╕рд┐рд╕реНрдЯрдо рд╕рдорд╛рдирд╛рдВрддрд░рдХрд░рдг рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕реЗ рдЕрдзрд┐рдХ рдХреЛрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдЧрд╛ред рдпрджрд┐ PLINQ рд╕рд┐рд╕реНрдЯрдо рд╕рдорд╛рдирд╛рдВрддрд░рдХрд░рдг рдХреЗ рд▓рд┐рдП рдХрдВрдкреНрдпреВрдЯрд┐рдВрдЧ рд╢рдХреНрддрд┐ рдХреА рдЕрддрд┐рд░рд┐рдХреНрдд рд▓рд╛рдЧрдд рдХреЗ рдХрд╛рд░рдг рдзреАрдореА рдХреНрд╡реЗрд░реА рдирд┐рд╖реНрдкрд╛рджрди рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рддрд╛ рд╣реИ, рддреЛ рдХреНрд╡реЗрд░реА рдХреЛ рдХреНрд░рдорд┐рдХ рд░реВрдк рд╕реЗ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред PLINQ рдХреЗ рд╕рднреА рд▓рд╛рднреЛрдВ рдХрд╛ рдПрд╣рд╕рд╛рд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдереНрд░реЗрдб рдкреВрд▓ рдХреЛ рдкреНрд░рдмрдВрдзрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрддрд┐рд░рд┐рдХреНрдд рдХрдВрдкреНрдпреВрдЯрд┐рдВрдЧ рд╢рдХреНрддрд┐ рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЛ рд╕рд╣реА рдард╣рд░рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХреНрд╡реЗрд░реА рдХрд╛ рдХреБрд▓ рдХрд╛рд░реНрдпрднрд╛рд░ рдкрд░реНрдпрд╛рдкреНрдд рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред
рджреВрд╕рд░реЗ, рд╣рдо рдкреНрд░рддреНрдпреЗрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╕рдВрджреЗрд╢ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрд▓рдЧ-рдЕрд▓рдЧ рдЕрдиреБрд░реЛрдз рдирд╣реАрдВ рдмрдирд╛рддреЗ рд╣реИрдВред рдЗрд╕рдХреЗ рдмрдЬрд╛рдп, рдХрддрд╛рд░ рд╕реЗрд╡рд╛ API рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрддрд╛рд░ рд╕реЗ рд╕рдВрджреЗрд╢реЛрдВ рдХреА рдирд┐рд░реНрджрд┐рд╖реНрдЯ рд╕рдВрдЦреНрдпрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдкреНрд░рд╛рдкреНрдд рд╕рдВрджреЗрд╢реЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛
DequeueBatchSize рдкреИрд░рд╛рдореАрдЯрд░ рджреНрд╡рд╛рд░рд╛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХреА
рдЬрд╛рддреА рд╣реИ, рдЬреЛ рдХрд┐ рдЧреЗрдЯ рд╡рд┐рдзрд┐ рдХреЛ рдкрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдбреЗрдЯрд╛ рд╡реЗрдпрд░рд╣рд╛рдЙрд╕ рдПрдмреНрд╕реНрдЯреНрд░реИрдХреНрд╢рди рд▓реЗрд╡рд▓ рддрдХ рдкрд╣реБрдБрдЪрдиреЗ рдкрд░, рдпрд╣ рдкреИрд░рд╛рдореАрдЯрд░ рдХреНрдпреВ рд╕рд░реНрд╡рд┐рд╕ рдПрдкреАрдЖрдИ рдХреЛ рдкрд╛рд╕ рдХрд░ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕реБрд░рдХреНрд╖рд╛ рдЬрд╛рдВрдЪ рдХреА рдЬрд╛рддреА рд╣реИ рдХрд┐ рдкреИрдХреЗрдЯ рдХрд╛ рдЖрдХрд╛рд░ рдПрдкреАрдЖрдИ рдХреЗ рд▓рд┐рдП рдЕрдиреБрдордд рдЕрдзрд┐рдХрддрдо рд╕реАрдорд╛ рд╕реЗ рдЕрдзрд┐рдХ рди рд╣реЛред рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЗрд╕ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХрд╛ рдПрдХ рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╣реИ:
рдЕрдВрдд рдореЗрдВ, рд╣рдо рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рд╣рдо рд╕рдВрджреЗрд╢ рдХреЛ рдХрддрд╛рд░ рд╕реЗ рдЕрдирд┐рд╢реНрдЪрд┐рдд рдХрд╛рд▓ рдХреЗ рд▓рд┐рдП рд╣рдЯрд╛рдиреЗ рдХрд╛ рдХрд╛рд░реНрдп рдкреВрд░рд╛ рдХрд░рдиреЗ рдХрд╛ рдЗрд░рд╛рджрд╛ рдирд╣реАрдВ рд░рдЦрддреЗ рд╣реИрдВред рд╣рдордиреЗ рдПрдХ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдЪреЗрдХрдкреЙрдЗрдВрдЯ рдмрдирд╛рдпрд╛, рдЬрд┐рд╕реЗ
рдХреНрд╡реЗрдЗрдо рдЦрд╛рд▓реА рдШрдЯрдирд╛ рдХреЗ рд░реВрдк рдореЗрдВ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЧрдпрд╛, рдЬрд┐рд╕реЗ рд╣рд░ рдмрд╛рд░ рдХрддрд╛рд░ рдЦрд╛рд▓реА рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ,
QueueEmpty рдЗрд╡реЗрдВрдЯ рд╣реИрдВрдбрд▓рд░
рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ , рдЬреЛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рдХрддрд╛рд░ рд╕реЗ рд╕рдВрджреЗрд╢реЛрдВ рдХреЛ рд╣рдЯрд╛рдиреЗ рдХрд╛ рдХрд╛рд░реНрдп рдкреВрд░рд╛ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред
рдХреНрдпреВрдПрдореА рдЦрд╛рд▓реА рдЗрд╡реЗрдВрдЯ
рд╣реИрдВрдбрд▓рд░ рдХрд╛ рд╕рд╣реА рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди "рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдХрдореА" рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ, рдЬрд┐рд╕рдХреА рдЪрд░реНрдЪрд╛ рдЕрдЧрд▓реЗ рднрд╛рдЧ рдореЗрдВ рдХреА рдЧрдИ рд╣реИред
рдХрддрд╛рд░ рд╕реЗ рд╕рдВрджреЗрд╢реЛрдВ рдХреЛ рд╣рдЯрд╛рдиреЗ рдХреЗ рдХрд╛рд░реНрдп рдХреЛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдХрдо рдХрд░реЗрдВ
QueueEmpty рдЗрд╡реЗрдВрдЯ
рд╣реИрдВрдбрд▓рд░ рдЖрдкрдХреЛ рджреЛ рд╢реНрд░реЗрдгрд┐рдпреЛрдВ рдХреЗ рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдпрд╣ рдХрддрд╛рд░ рд╕реЗ рд╕рдВрджреЗрд╢реЛрдВ рдХреЛ рд╣рдЯрд╛рдиреЗ рдХреЗ рдореВрд▓ рдХрд╛рд░реНрдп рдХреЛ рд╕рдВрджреЗрд╢ рднреЗрдЬ рд░рд╣рд╛ рд╣реИ, рдПрдХ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рд╕рдордп рдЕрдВрддрд░рд╛рд▓ рдХреЗ рд▓рд┐рдП рдиреАрдВрдж рдореЛрдб рдореЗрдВ рдкреНрд░рд╡реЗрд╢ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрджреЗрд╢ рдкреНрд░реЗрд╖рд┐рдд рдХрд░рддрд╛ рд╣реИ (рдШрдЯрдирд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐
рд╡рд┐рд▓рдВрдм рдХреЗ рдЖрдЙрдЯрдкреБрдЯ рдкреИрд░рд╛рдореАрдЯрд░ рдореЗрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ)ред рджреВрд╕рд░реЗ, рдкреНрд░реЗрд╖рд┐рдд рддрд╛рд░реНрдХрд┐рдХ рдкреИрд░рд╛рдореАрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП, рд╡рд╣ рдХрд╛рд░реНрдп рдХреЛ рдкреВрд░рд╛ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХрддрд╛рд░ рд╕реЗ рд╕рдВрджреЗрд╢реЛрдВ рдХреЛ рд╣рдЯрд╛рдиреЗ рдХреЗ рдХрд╛рд░реНрдп рдХреЛ рд╕реВрдЪрд┐рдд рдХрд░рддрд╛ рд╣реИред
QueueEmpty рдЗрд╡реЗрдВрдЯ
рд╣реИрдВрдбрд▓рд░ рдХрд╛ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди
рд╣рдореЗрдВ рдКрдкрд░ рдЪрд░реНрдЪрд╛ рдХреА рдЧрдИ рджреЛрдиреЛрдВ рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛
рд╣реИ ред рд╣реИрдВрдбрд▓рд░ рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЗ рдмреАрдЪ рдЕрдВрддрд░рд╛рд▓ рдХреА рдЧрдгрдирд╛ рдХрд░рддрд╛ рд╣реИ рдФрд░ рд▓рдЧрд╛рддрд╛рд░ рджреЛ рдЪреБрдирд╛рд╡реЛрдВ рдХреЗ рдмреАрдЪ рджреЗрд░реА рдореЗрдВ рдПрдХ рдШрд╛рддреАрдп рд╡реГрджреНрдзрд┐ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХрддрд╛рд░ рд╕реЗ рд╕рдВрджреЗрд╢реЛрдВ рдХреЛ рд╣рдЯрд╛рдиреЗ рдХреЗ рдХрд╛рд░реНрдп рдХреЛ рд╕реВрдЪрд┐рдд рдХрд░рддрд╛ рд╣реИред рдХреГрдкрдпрд╛ рдзреНрдпрд╛рди рджреЗрдВ: рдЗрд╕ рд╕рдорд╛рдзрд╛рди рдореЗрдВ, рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЗ рдмреАрдЪ рджреЗрд░реА рдПрдХ рд╕реЗрдХрдВрдб рд╕реЗ рдЕрдзрд┐рдХ рдирд╣реАрдВ рд╣реЛрдЧреА; рдпрджрд┐ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд╕реНрдХреЗрд▓рд┐рдВрдЧ рдХреЛ рд╕рд╣реА рддрд░реАрдХреЗ рд╕реЗ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдорддрджрд╛рди рд╕рдВрдЪрд╛рд▓рди рдХреЗ рдмреАрдЪ рд▓рдВрдмреЗ рд╕рдордп рддрдХ рджреЗрд░реА рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдИрд╡реЗрдВрдЯ рд╣реИрдВрдбрд▓рд░ рдХрддрд╛рд░ рд╕реЗ рд╕рдВрджреЗрд╢реЛрдВ рдХреЛ рд╣рдЯрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдХреНрд░рд┐рдп рдХрд╛рд░реНрдпреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрддрд╛рд░ рд╢реНрд░реЛрддрд╛ рдХреА рд╕реНрдерд┐рддрд┐ рдкрд░ рд╕рд╡рд╛рд▓ рдЙрдард╛рддрд╛ рд╣реИред рдпрджрд┐ рдпрд╣ рд╕рдВрдЦреНрдпрд╛ рдПрдХ рд╕реЗ рдЕрдзрд┐рдХ рд╣реЛ рдЬрд╛рддреА рд╣реИ, рддреЛ рдИрд╡реЗрдВрдЯ рд╣реИрдВрдбрд▓рд░ рдЕрдиреБрд╢рдВрд╕рд╛ рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдХрддрд╛рд░ рд╕реЗ рд╕рдВрджреЗрд╢реЛрдВ рдХреЛ рд╣рдЯрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдХрд╛рд░реНрдп рдорддрджрд╛рди рдЪрдХреНрд░ рдХреЛ рдкреВрд░рд╛ рдХрд░реЗрдВ рдЬрдм рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЗ рдмреАрдЪ рдкреНрд░рддреАрдХреНрд╖рд╛ рдЕрдВрддрд░рд╛рд▓ рдХрд╛ рдЕрдзрд┐рдХрддрдо рдореВрд▓реНрдп рдкрд╣реБрдВрдЪ рдЬрд╛рддрд╛ рд╣реИред рдЕрдиреНрдпрдерд╛, рдХрддрд╛рд░ рд╕реЗ рд╕рдВрджреЗрд╢реЛрдВ рдХреЛ рд╣рдЯрд╛рдиреЗ рдХрд╛ рдХрд╛рд░реНрдп рдмрд╛рдзрд┐рдд рдирд╣реАрдВ рд╣реЛрдЧрд╛, рдЬреЛ рдЖрдкрдХреЛ рдХрддрд╛рд░ рд╢реНрд░реЛрддрд╛ рдХреЗ рдкреНрд░рддреНрдпреЗрдХ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдХреЗрд╡рд▓ рдПрдХ рдЕрдиреБрд░реЛрдз рд╕реНрдЯреНрд░реАрдо рдЫреЛрдбрд╝рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдЧрд╛ рдЬреЛ рдПрдХ рд╕рдордп рдореЗрдВ рдЪрд▓ рд░рд╣рд╛ рд╣реИред рдпрд╣ рджреГрд╖реНрдЯрд┐рдХреЛрдг
рднрдВрдбрд╛рд░рдг рд▓реЗрдирджреЗрди рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреЛ рдХрдо рдХрд░рдиреЗ рдФрд░ рд▓реЗрдирджреЗрди рдХреА рд▓рд╛рдЧрдд рдХреЛ рдХрдо рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдХрд░рддрд╛ рд╣реИ , рдЬреИрд╕рд╛ рдХрд┐ рдКрдкрд░ рдЪрд░реНрдЪрд╛ рдХреА рдЧрдИ рд╣реИред
private bool HandleQueueEmptyEvent(object sender, int idleCount, out TimeSpan delay) { // ICloudQueueServiceWorkerRoleExtension, . ICloudQueueServiceWorkerRoleExtension queueService = sender as ICloudQueueServiceWorkerRoleExtension; // , . IWorkItemProcessorConfigurationExtension config = Extensions.Find<IWorkItemProcessorConfigurationExtension>(); // . CloudQueueListenerInfo queueServiceState = queueService.QueryState(); // , . int deltaBackoffMs = 100; int minimumIdleIntervalMs = Convert.ToInt32(config.Settings.MinimumIdleInterval.TotalMilliseconds); int maximumIdleIntervalMs = Convert.ToInt32(config.Settings.MaximumIdleInterval.TotalMilliseconds); // . int delta = (int)((Math.Pow(2.0, (double)idleCount) - 1.0) * (new Random()).Next((int)(deltaBackoffMs * 0.8), (int)(deltaBackoffMs * 1.2))); int interval = Math.Min(minimumIdleIntervalMs + delta, maximumIdleIntervalMs); // . delay = TimeSpan.FromMilliseconds((double)interval); // , // . , . return delay.TotalMilliseconds >= maximumIdleIntervalMs && queueServiceState.ActiveDequeueTasks > 1; }
рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд╕реНрдХреЗрд▓рд┐рдВрдЧ рддрдВрддреНрд░ рдХреЛ рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рд╡рд░реНрдгрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:
- рдЬреИрд╕реЗ рд╣реА рдХреЛрдИ рд╕рдВрджреЗрд╢ рдХрддрд╛рд░ рдореЗрдВ рджрд┐рдЦрд╛рдИ рджреЗрддрд╛ рд╣реИ, рдХрддрд╛рд░ рд╕реЗ рд╕рдВрджреЗрд╢реЛрдВ рдХреЛ рд╣рдЯрд╛рдиреЗ рдХреЗ рдХрд╛рд░реНрдп рддреБрд░рдВрдд рдХрд╛рд░реНрдпрднрд╛рд░ рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рддреЗ рд╣реИрдВред рд╕рдВрджреЗрд╢ рдкреИрдХреЗрдЯ рдХреЛ рдХрддрд╛рд░ рд╕реЗ рд╣рдЯрд╛рдиреЗ рдХрд╛ рдЕрдиреБрд░реЛрдз рдмрд┐рдирд╛ рджреЗрд░реА рдХреЗ рдкреНрд░рд╕рд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
- рдореВрд▓ рдХрддрд╛рд░ рдЦрд╛рд▓реА рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж, рдХрддрд╛рд░ рд╕реЗ рд╕рдВрджреЗрд╢реЛрдВ рдХреЛ рд╣рдЯрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░рддреНрдпреЗрдХ рдХрд╛рд░реНрдп QueueEmpty рдШрдЯрдирд╛ рдХреЛ рдмрдврд╝рд╛рддрд╛ рд╣реИред
- QueueEmpty рдЗрд╡реЗрдВрдЯ рд╣реИрдВрдбрд▓рд░ рдЕрдиреБрд░реЛрдз рднреЗрдЬрдиреЗ рдХреЗ рдмреАрдЪ рдПрдХ рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рдШрд╛рддреАрдп рд╡рд┐рд▓рдВрдм рдХреА рдЧрдгрдирд╛ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдПрдХ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдЕрдВрддрд░рд╛рд▓ рдХреЗ рд▓рд┐рдП рдХрддрд╛рд░ рд╕реЗ рд╕рдВрджреЗрд╢реЛрдВ рдХреЛ рд░реЛрдХрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╛рд░реНрдп рдХреЛ рд╣рдЯрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╛рд░реНрдп рдХреЛ рдирд┐рд░реНрджреЗрд╢ рджреЗрддрд╛ рд╣реИред
- рдХрддрд╛рд░ рд╕реЗ рд╕рдВрджреЗрд╢реЛрдВ рдХреЛ рд╣рдЯрд╛рдиреЗ рдХреЗ рдХрд╛рд░реНрдп рджрд┐рдП рдЧрдП рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рдЕрдВрддрд░рд╛рд▓ рдкрд░ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдХрддрд╛рд░ рдХреЛ рддрдм рддрдХ рдЬрд╛рд░реА рд░рдЦрддреЗ рд╣реИрдВ рдЬрдм рддрдХ рдХрд┐ рд╕рдВрдЪрдпреА рдирд┐рд╖реНрдХреНрд░рд┐рдпрддрд╛ рд╕рдордп рд╕реНрд╡реАрдХрд╛рд░реНрдп рдЕрдзрд┐рдХрддрдо рд╕реЗ рдЕрдзрд┐рдХ рди рд╣реЛ рдЬрд╛рдПред
- рдпрджрд┐ рдирд┐рд╖реНрдХреНрд░рд┐рдпрддрд╛ рдЕрдВрддрд░рд╛рд▓ рдХреА рдЕрдзрд┐рдХрддрдо рд▓рдВрдмрд╛рдИ рддрдХ рдкрд╣реБрдВрдЪ рдЧрдИ рд╣реИ рдФрд░ рдореВрд▓ рдХрддрд╛рд░ рдЕрднреА рднреА рдЦрд╛рд▓реА рд╣реИ, рддреЛ рдХрддрд╛рд░ рд╕реЗ рдмрд╛рд╣рд░ рдирд┐рдХрд▓рдиреЗ рд╡рд╛рд▓реЗ рд╕рдВрджреЗрд╢реЛрдВ рдХреЛ рд╣рдЯрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рднреА рд╕рдХреНрд░рд┐рдп рдХрд╛рд░реНрдпред рдпрд╣ рдПрдХ рд╕рд╛рде рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╕рдордп рдкрд░ рд╕рдВрджреЗрд╢ рднреЗрдЬрдиреЗ рдХреЗ рдмреАрдЪ рдХреЗ рдЕрдВрддрд░рд╛рд▓ рдХреА рдЧрдгрдирд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрд▓реНрдЧреЛрд░рд┐рдереНрдоред
- рдПрдХ рд╕рдордп рдЖрддрд╛ рд╣реИ рдЬрдм рдХрддрд╛рд░ рд╕реЗ рд╕рдВрджреЗрд╢реЛрдВ рдХреЛ рд╣рдЯрд╛рдиреЗ рдХрд╛ рдХреЗрд╡рд▓ рдПрдХ рдХрд╛рд░реНрдп рд╕рдХреНрд░рд┐рдп рд░рд╣рддрд╛ рд╣реИред рдирддреАрдЬрддрди, рдЗрд╕ рд╢реЗрд╖ рдХрд╛рд░реНрдп рджреНрд╡рд╛рд░рд╛ рдЙрддреНрдкрдиреНрди рд▓реЛрдЧреЛрдВ рдХреЛ рдЫреЛрдбрд╝рдХрд░, рдПрдХ рдЦрд╛рд▓реА рдХрддрд╛рд░ рдореЗрдВ рдорддрджрд╛рди рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд▓реЗрдирджреЗрди рдХрд╛ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рд░реЛрдХ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рд╡рд░реНрдХрд▓реЛрдб рдХреЗ рд╡рд░реНрддрдорд╛рди рд╕реНрддрд░ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рдПрдХрддреНрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рддрдВрддреНрд░ рдХреЗ рд╡рд┐рд╕реНрддреГрдд рдЕрдзреНрдпрдпрди рдХреЗ рд▓рд┐рдП, рд╣рдо рд╕реНрд░реЛрдд рдХреЛрдб рдХреЗ рд╕рдВрдмрдВрдзрд┐рдд рдХрд▓рд╛рдХреГрддрд┐рдпреЛрдВ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░рддреЗ рд╣реИрдВред рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рд╕рд┐рд╕реНрдЯрдо рдкрд░ рдкрд░рд┐рдгрд╛рдореА рдХрд╛рд░реНрдпрднрд╛рд░ рдХреЛ рдорд╛рдкрдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд┐рдореНрдореЗрджрд╛рд░ рд╕рдВрдХреЗрддрдХ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рдВрд░рдЪрдирд╛ рд╣реИред рдПрдХ рд╕рд░рд▓ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд░реВрдк рдореЗрдВ, рд╣рдо рдирдореВрдирд╛ рдХреЛрдб рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХреЗ рд▓рд┐рдП рд╕рдВрдХреЗрддрдХреЛрдВ рдХрд╛ рдПрдХ рдЫреЛрдЯрд╛ рд╕рд╛ рдЙрдк-рд╕рдореВрд╣ рджреЗрддреЗ рд╣реИрдВред
/// , . public struct CloudQueueListenerInfo { /// Windows Azure. public int CurrentQueueDepth { get; internal set; } /// , . public int ActiveDequeueTasks { get; internal set; } /// , . public int TotalDequeueTasks { get; internal set; } }
рджреВрд╕рд░реЗ, рдХрддрд╛рд░ рд╢реНрд░реЛрддрд╛ рдПрдХ рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ рдЬреЛ рдЕрдкрдиреЗ рд▓реЛрдб рдореИрдЯреНрд░рд┐рдХреНрд╕ рдХреЛ рд▓реМрдЯрд╛рддрд╛ рд╣реИ (рдиреАрдЪреЗ рдЙрджрд╛рд╣рд░рдг рджреЗрдЦреЗрдВ)ред
/// . public CloudQueueListenerInfo QueryState() { return new CloudQueueListenerInfo() { CurrentQueueDepth = this.queueStorage.GetCount(this.queueLocation.QueueName), ActiveDequeueTasks = (from task in this.dequeueTasks where task.Status != TaskStatus.Canceled && task.Status != TaskStatus.Faulted && task.Status != TaskStatus.RanToCompletion select task).Count(), TotalDequeueTasks = this.dequeueTasks.Count }; }
рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдкреИрдорд╛рдиреЗ рд╣рдЯрд╛рдПрдВ рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рд╣рдЯрд╛ рджреЗрдВ
рдкрд┐рдЫрд▓реЗ рдЕрдиреБрднрд╛рдЧ рдиреЗ рднрдВрдбрд╛рд░рдг рдХреЗ рд╕рд╛рде рдбреЗрдЯрд╛ рд╡рд┐рдирд┐рдордп рдХрд╛рд░реНрдпреЛрдВ рд╕реЗ рдЬреБрдбрд╝реЗ рд▓рд╛рдЧрддреЛрдВ рдХреА рд╡реГрджреНрдзрд┐ рдкрд░ рдирд┐рд╖реНрдХреНрд░рд┐рдп рдореЛрдб рд▓реЗрдирджреЗрди рдХреЗ рдкреНрд░рднрд╛рд╡ рдХреЛ рдХрдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдХрддрд╛рд░ рд╕реЗ рд╕рдХреНрд░рд┐рдп рд╡рд┐рд▓реЛрдкрди рдХрд╛рд░реНрдпреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреЛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рд╕реЗ рдХрдо рдХрд░рдиреЗ рдХреЗ рдХрд╛рд░реНрдп рдХрд╛ рд╡рд░реНрдгрди рдХрд┐рдпрд╛ред рдпрд╣ рдЦрдВрдб рдХрдВрдкреНрдпреВрдЯрд┐рдВрдЧ рд╢рдХреНрддрд┐ рдХреЛ рдмрдврд╝рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд╕реНрдХреЗрд▓рд┐рдВрдЧ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред
рдШрдЯрдирд╛рдУрдВ рдХреЛ рдЯреНрд░рд┐рдЧрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЦрд╛рд▓реА рд╕реЗ рдЧреИрд░-рдЦрд╛рд▓реА рдХрддрд╛рд░ рдореЗрдВ рд╕рдВрдХреНрд░рдордг рдХреЛ рдЯреНрд░реИрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдкреНрд░рддрд┐рдирд┐рдзрд┐ рдмрдирд╛рдПрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд╕реНрдХреЗрд▓рд┐рдВрдЧ:
/// <summary> /// , , . /// </summary> /// <param name="sender"> .</param> public delegate void WorkDetectedDelegate(object sender); ICloudQueueServiceWorkerRoleExtension, , , ( ): public interface ICloudQueueServiceWorkerRoleExtension { // ... , . . ... /// , , . event WorkDetectedDelegate QueueWorkDetected; }
рдЖрдЗрдП рд╣рдо рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░реЗрдВ рдХрд┐ рдХрддрд╛рд░ рд╢реНрд░реЛрддрд╛ рдХреЗ рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЛрдб рдХреА рдХрд┐рд╕ рдкрдВрдХреНрддрд┐ рдореЗрдВ рдШрдЯрдирд╛ рдХреЛ рдЯреНрд░рд┐рдЧрд░ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ,
рдХреНрдпреВрдХреНрд╡реЗрд░реНрдХрдбрд┐рдХреЗрдЯреЗрдб рдИрд╡реЗрдВрдЯ рдХреЛ
DequeueTaskMain рдкрджреНрдзрддрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рдХрд┐рдП рдЧрдП
рдбреАрдХреНрдпреВ рд▓реВрдк рд╕реЗ рдмреБрд▓рд╛рдпрд╛ рдЬрд╛рдПрдЧрд╛, рдЬрд┐рд╕реЗ рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рд╡рд┐рд╕реНрддрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП:
public class CloudQueueListenerExtension<T> : ICloudQueueListenerExtension<T> { // , , . public event WorkDetectedDelegate QueueWorkDetected; private void DequeueTaskMain(object state) { CloudQueueListenerDequeueTaskState<T> workerState = (CloudQueueListenerDequeueTaskState<T>)state; int idleStateCount = 0; TimeSpan sleepInterval = DequeueInterval; try { // , . while (workerState.CanRun) { try { var queueMessages = from msg in workerState.QueueStorage.Get<T>(workerState.QueueLocation.QueueName, DequeueBatchSize, workerState.QueueLocation.VisibilityTimeout).AsParallel() where msg != null select msg; int messageCount = 0; // , . if (idleStateCount > 0 && queueMessages.Count() > 0) { if (QueueWorkDetected != null) { QueueWorkDetected(this); } } // ... , . . ...
рдЕрдВрддрд┐рдо рдЪрд░рдг рдореЗрдВ, рдПрдХ
QueueWorkDetected рдЗрд╡реЗрдВрдЯ
рд╣реИрдВрдбрд▓рд░ рдмрдирд╛рдПрдБред рдЗрд╕ рдИрд╡реЗрдВрдЯ рд╣реИрдВрдбрд▓рд░ рдХрд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдЙрд╕ рдШрдЯрдХ рдореЗрдВ рд╕рдореНтАНрдорд┐рд▓рд┐рдд рд╣реЛрдЧрд╛ рдЬреЛ рдХрддрд╛рд░ рд╢реНрд░реЛрддрд╛ рдХреЛ рддрддреНтАНрдХрд╛рд▓ рдХрд░рддрд╛ рд╣реИред рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдпрд╣ рдШрдЯрдХ рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реИред рдИрд╡реЗрдВрдЯ рд╣реИрдВрдбрд▓рд░ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдФрд░ рдЙрд╕рдХреА рдЖрд╡реГрддреНрддрд┐ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд┐рдореНрдореЗрджрд╛рд░ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреЛрдб рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рднрд╛рдЧ рд╣реЛрддреЗ рд╣реИрдВ:
public class WorkItemProcessorWorkerRole : RoleEntryPoint { // Windows Azure . public override sealed bool OnStart() {
рдЙрдкрд░реЛрдХреНрдд рдЙрджрд╛рд╣рд░рдг рдХреЗ рдкреНрд░рдХрд╛рд╢ рдореЗрдВ, рдЖрдкрдХреЛ GetOptimalDequeueTaskCount рд╡рд┐рдзрд┐ рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЛ рд╕реНрдкрд╖реНрдЯ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ ред рдпрд╣ рд╡рд┐рдзрд┐ рдХрд╛рд░реНрдпрднрд╛рд░ рдХреЛ рд╕рдВрднрд╛рд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдХрддрд╛рд░ рд╣рдЯрд╛рдиреЗ рдХреЗ рдХрд╛рд░реНрдпреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреА рдЧрдгрдирд╛ рдХреЗ рд▓рд┐рдП рдЬрд┐рдореНрдореЗрджрд╛рд░ рд╣реИред рдХреЙрд▓ рдХрд░рддреЗ рд╕рдордп, рдпрд╣ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИ (рдХрд┐рд╕реА рднреА рдЙрдкрдпреБрдХреНрдд рдирд┐рд░реНрдгрдп рд▓реЗрдиреЗ рд╡рд╛рд▓реЗ рддрдВрддреНрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ) рдХрддрд╛рд░ рдХреЗ рд╢реНрд░реЛрддрд╛ рдХреЛ рдЕрдкреЗрдХреНрд╖рд┐рдд рдЕрдзрд┐рднрд╛рд░ рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рддрдиреА рдХрдВрдкреНрдпреВрдЯрд┐рдВрдЧ рд╢рдХреНрддрд┐ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИредрдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдПрдХ рдбреЗрд╡рд▓рдкрд░ рд╕рдмрд╕реЗ рд╕рд░рд▓ рдкрде рдХрд╛ рдЕрдиреБрд╕рд░рдг рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рд╕реАрдзреЗ GetOptimalDequeueTaskCount рд╡рд┐рдзрд┐ рдореЗрдВ рд╕реНрдерд┐рд░ рдирд┐рдпрдореЛрдВ рдХреЗ рдПрдХ рд╕реЗрдЯ рдХреЛ рд▓рд╛рдЧреВ рдХрд░ рд╕рдХрддрд╛ рд╣реИредред рдХрддрд╛рд░ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдЕрд╡рд╕рдВрд░рдЪрдирд╛ рдХреЗ рдереНрд░реВрдкреБрдЯ рдФрд░ рдорд╛рдкрдиреАрдпрддрд╛ рдХреЗ рдЬреНрдЮрд╛рдд рдорд╛рдкрджрдВрдбреЛрдВ рдХреЗ рдЖрдзрд╛рд░ рдкрд░, рдФрд╕рдд рд╡рд┐рд▓рдВрдм рд╕рдордп, рд╕рдВрд╕рд╛рдзрд┐рдд рдбреЗрдЯрд╛ рдХреА рдорд╛рддреНрд░рд╛ рдФрд░ рдЕрдиреНрдп рдЬрд╛рдирдХрд╛рд░реА, рдирд┐рдпрдореЛрдВ рдХрд╛ рдпрд╣ рд╕реЗрдЯ рдХрддрд╛рд░ рд╕реЗ рдирд┐рдХрд╛рд▓рдиреЗ рдФрд░ рдЙрдиреНрд╣реЗрдВ рдмрдврд╝рд╛рдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рд▓реЗрдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рдХрд╛рд░реНрдпреЛрдВ рдХреА рдПрдХ рдЖрд╢рд╛рд╡рд╛рджреА рдЕрдиреБрдорд╛рди рджреЗ рд╕рдХрддрд╛ рд╣реИредрдирд┐рдореНрди рдЙрджрд╛рд╣рд░рдг рдХрддрд╛рд░ рд╕реЗ рд╣рдЯрд╛рдиреЗ рдХреЗ рдХрд╛рд░реНрдпреЛрдВ рдХреА рдЗрд╖реНрдЯрддрдо рд╕рдВрдЦреНрдпрд╛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рд░рд▓реАрдХреГрдд рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ: /// <summary> /// , . /// </summary> /// <param name="currentDepth"> .</param> /// <returns> .</returns> private int GetOptimalDequeueTaskCount(int currentDepth) { if (currentDepth < 100) return 10; if (currentDepth >= 100 && currentDepth < 1000) return 50; if (currentDepth >= 1000) return 100; // . return 1; }
рдЙрдкрд░реЛрдХреНрдд рдХреЛрдб рдЙрджрд╛рд╣рд░рдг рдПрдХ рд╕рд╛рд░реНрд╡рднреМрдорд┐рдХ рд╕рдорд╛рдзрд╛рди рдирд╣реАрдВ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдЖрджрд░реНрд╢ рдХреЗ рдХрд░реАрдм рдПрдХ рд╕рдорд╛рдзрд╛рди рдПрдХ рдирд┐рдпрдо рдХреЛ рдХреЙрд▓ рдХрд░рдирд╛ рд╣реИ рдЬреЛ рдмрд╛рд╣рд░ рд╕реЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдФрд░ рдирд┐рдпрдВрддреНрд░рдг рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИ рдФрд░ рд╕рднреА рдЖрд╡рд╢реНрдпрдХ рдЧрдгрдирд╛ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реИредрд╡рд░реНрддрдорд╛рди рдореЗрдВ, рдПрдХ рдХрддрд╛рд░ рд╢реНрд░реЛрддрд╛ рдХрд╛ рдПрдХ рдХрд╛рд░реНрдпрд╢реАрд▓ рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рд╣реИ рдЬреЛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдХрд╛рд░реНрдпрднрд╛рд░ рдореЗрдВ рдЙрддрд╛рд░-рдЪрдврд╝рд╛рд╡ (рд╡реГрджреНрдзрд┐ рдпрд╛ рдХрдореА) рдХреЗ рдЕрдиреБрд╕рд╛рд░ рд╕реНрдХреЗрд▓ рдХрд░ рд╕рдХрддрд╛ рд╣реИред рд╢рд╛рдпрдж рдЗрд╕рдХреЗ рдХрд╛рд░реНрдпреЛрдВ рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдЗрд╕рдХреЗ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рджреМрд░рд╛рди рдХрд╛рд░реНрдпрднрд╛рд░ рдореЗрдВ рдЙрддрд╛рд░-рдЪрдврд╝рд╛рд╡ рдХреЗ рдЕрдиреБрдХреВрд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдЖрдк рдЗрд╕ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдЙрд╕реА рдЯреЗрдореНрдкрд▓реЗрдЯ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдХреЗ рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ рдЬрд┐рд╕рдХрд╛ рдЙрдкрдпреЛрдЧ QueueWorkDetected рдЗрд╡реЗрдВрдЯ рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ редрдХрддрд╛рд░ рд╢реНрд░реЛрддрд╛рдУрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддреЗ рд╕рдордп рджреЗрд░реА рд╕рдордп рдХреЛ рдХрдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдФрд░ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдЕрдиреБрдХреВрд▓рди рд╡рд┐рдзрд┐ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдЧреЗ рдмрдврд╝рддреЗ рд╣реИрдВредрд╢реВрдиреНрдп рджреЗрд░реА рдХреЗ рд╕рд╛рде рдХрддрд╛рд░ рд╕реЗ рд╣рдЯрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░рдХрд╛рд╢рдХ рдФрд░ рдЧреНрд░рд╛рд╣рдХ рд╕реНрддрд░ рдХрд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди
рдЗрд╕ рдЦрдВрдб рдореЗрдВ, рд╣рдо рдПрдХреАрдХрд░рдг рдмрд╕ рдХреЗ рд▓рд┐рдП рдпреВрдирд┐рдбрд╛рдпрд░реЗрдХреНрд╢рдирд▓ рдорд▓реНрдЯреАрдХрд╛рд╕реНрдЯ рдкрд░ рдЖрдзрд╛рд░рд┐рдд рдПрдХ рдзрдХреНрдХрд╛ рдЕрдзрд┐рд╕реВрдЪрдирд╛ рддрдВрддреНрд░ рдХреЗ рд╕рд╛рде рдХрддрд╛рд░ рд╢реНрд░реЛрддрд╛ рдХреЗ рдЙрдкрд░реЛрдХреНрдд рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЛ рдкреВрд░рдХ рдХрд░рддреЗ рд╣реИрдВ ред рдпрд╣ рдЕрдзрд┐рд╕реВрдЪрдирд╛ рддрдВрддреНрд░ рдПрдХ рдЯреНрд░рд┐рдЧрд░ рдИрд╡реЗрдВрдЯ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХрд░рддрд╛ рд╣реИ, рдЬреЛ рд╢реНрд░реЛрддрд╛ рдХреЛ рдХрддрд╛рд░ рд╕реЗ рдЖрдЗрдЯрдо рд╣рдЯрд╛рдиреЗ рдкрд░ рдХрд╛рдо рд╢реБрд░реВ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдПрдХ рд╕рдВрдХреЗрдд рд╣реИред рдпрд╣ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдЖрдкрдХреЛ рдирдП рд╕рдВрджреЗрд╢реЛрдВ рдХреА рдЬрд╛рдВрдЪ рдХрд░рддреЗ рд╕рдордп рдФрд░ рджреЗрд░реА рдХрд╛рд░рдХ рдХреЛ рд╕рдорд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрддрд╛рд░ рдореЗрдВ рдорддрджрд╛рди рдХрд░рдиреЗ рд╕реЗ рдЗрдВрдХрд╛рд░ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ редрдПрдХ рдирдпрд╛ рдХрд╛рд░реНрдпрднрд╛рд░ рджрд┐рдЦрд╛рдИ рджреЗрдиреЗ рдкрд░ рдХрддрд╛рд░ рд╢реНрд░реЛрддрд╛ рджреНрд╡рд╛рд░рд╛ рдкреНрд░рд╛рдкреНрдд рдПрдХ рдЯреНрд░рд┐рдЧрд░ рдЗрд╡реЗрдВрдЯ рдмрдирд╛рдПрдБ: /// -, . [DataContract(Namespace = WellKnownNamespace.DataContracts.Infrastructure)] public class CloudQueueWorkDetectedTriggerEvent { /// , . [DataMember] public string StorageAccount { get; private set; } /// , . [DataMember] public string QueueName { get; private set; } /// (, ). [DataMember] public long PayloadSize { get; private set; } // ... ... }
рдмрддрд╛ рджреЗрдВ рдХрд┐ рдХрддрд╛рд░ рд╢реНрд░реЛрддрд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдЯреНрд░рд┐рдЧрд░ рдЗрд╡реЗрдВрдЯ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдЧреНрд░рд╛рд╣рдХреЛрдВ рдХреЗ рд░реВрдк рдореЗрдВ рдХрд╛рд░реНрдп рдХрд░рддреЗ рд╣реИрдВред рдкрд╣рд▓рд╛ рдХрджрдо рдХреНрд▓рд╛рдЙрдб рд╢реНрд░реЛрддрд╛ рдХреЛ CloudQueueWorkDetectedTriggerEvent рдИрд╡реЗрдВрдЯ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╡реЗрдХреНрд╖рдХ рдХреЗ рд░реВрдк рдореЗрдВ рдирд╛рдорд┐рдд рдХрд░рдирд╛ рд╣реИ :
рджреВрд╕рд░рд╛ рдХрджрдо IObserver рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдореЗрдВ рдкрд░рд┐рднрд╛рд╖рд┐рдд OnNext рд╡рд┐рдзрд┐ рдХрд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╣реЛрдЧрд╛ ред рдЗрд╕ рд╡рд┐рдзрд┐ рдХреЛ рдкреНрд░рджрд╛рддрд╛ рджреНрд╡рд╛рд░рд╛ рдПрдХ рдирдИ рдШрдЯрдирд╛ рдХреЗ рдкрд░реНрдпрд╡реЗрдХреНрд╖рдХ рдХреЛ рд╕реВрдЪрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ: public class CloudQueueListenerExtension<T> : ICloudQueueListenerExtension<T> { // ... ... /// <summary> /// /// </summary> /// <param name="e">-, .</param> public void OnNext(CloudQueueWorkDetectedTriggerEvent e) { Guard.ArgumentNotNull(e, "e"); // , - , ; , . if (this.queueLocation.StorageAccount == e.StorageAccount && this.queueLocation.QueueName == e.QueueName) { if (QueueWorkDetected != null) { QueueWorkDetected(this); } } } // ... ... }
рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рдкрд┐рдЫрд▓реЗ рдЙрджрд╛рд╣рд░рдг рд╕реЗ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рд╣рдо рдЬрд╛рдирдмреВрдЭрдХрд░ рдкрд┐рдЫрд▓реЗ рдЪрд░рдгреЛрдВ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЧрдП рдПрдХ рд╣реА рдкреНрд░рддрд┐рдирд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред QueueWorkDetected рдЗрд╡реЗрдВрдЯ рд╣реИрдВрдбрд▓рд░ рдХрддрд╛рд░ рд╣рдЯрд╛рдиреЗ рдХрд╛рд░реНрдп рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХреА рдЗрд╖реНрдЯрддрдо рд╕рдВрдЦреНрдпрд╛ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд▓реЙрдЬрд┐рдХ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред рдЗрд╕рд▓рд┐рдП, CloudQueueWorkDetectedTriggerEvent рдЕрдзрд┐рд╕реВрдЪрдирд╛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рддреЗ рд╕рдордп рд╣рдо рдЙрд╕реА рдИрд╡реЗрдВрдЯ рд╣реИрдВрдбрд▓рд░ рдХрд╛ рдкреБрди: рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ редрдЬреИрд╕рд╛ рдХрд┐ рдкрд┐рдЫрд▓реЗ рдЕрдиреБрднрд╛рдЧреЛрдВ рдореЗрдВ рдмрддрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдкреБрд╢ рдиреЛрдЯрд┐рдлрд┐рдХреЗрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп, рд▓рдЧрд╛рддрд╛рд░ рдЪрд▓рдиреЗ рд╡рд╛рд▓реЗ рдХрддрд╛рд░ рд╣рдЯрд╛рдиреЗ рдХреЗ рдХрд╛рд░реНрдп рдХреЛ рдмрдирд╛рдП рд░рдЦрдирд╛ рдЖрд╡рд╢реНрдпрдХ рдирд╣реАрдВ рд╣реИред рдпрд╣ рдЖрдкрдХреЛ рдХрддрд╛рд░ рд╢реНрд░реЛрддрд╛ рдХреЗ рдкреНрд░рддреНрдпреЗрдХ рдЙрджрд╛рд╣рд░рдг рдкрд░ рд╣реЛрдиреЗ рд╡рд╛рд▓реЗ рдХрддрд╛рд░ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдХрд╛рд░реНрдпреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреЛ рд╢реВрдиреНрдп рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрдо рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ, рд╕рд╛рде рд╣реА рдХрддрд╛рд░ рд╕реЗ рдХрд╛рд░реНрдп рдЖрдЗрдЯрдо рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдкрд░ рдХрддрд╛рд░ рд╕реЗ рдХрд╛рд░реНрдп рдХреЛ рд╣рдЯрд╛рдиреЗ рдХреЗ рдЙрджрд╛рд╣рд░рдг рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реВрдЪрдирд╛ рддрдВрддреНрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред рдпрд╣ рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рдХрддрд╛рд░ рд╕реЗ рдХреЛрдИ рдирд┐рд╖реНрдХреНрд░рд┐рдп рд╣рдЯрд╛рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рдХрд╛рд░реНрдп рдирд╣реАрдВ рд╣реИрдВ, рдмрд╕ рдХрддрд╛рд░ рдИрд╡реЗрдВрдЯ рд╣реИрдВрдбрд▓рд░ рдореЗрдВ рдПрдХ рд╕рд╛рдзрд╛рд░рдг рдмрджрд▓рд╛рд╡ рдХрд░реЗрдВ : private bool HandleQueueEmptyEvent(object sender, int idleCount, out TimeSpan delay) {
, , .
QueueEmpty , .
CloudQueueWorkDetectedTriggerEvent ,
Windows Azure . , :
public class InterRoleEventSubscriberExtension : IInterRoleEventSubscriberExtension { // ... . . , Windows Azure Customer Advisory Team ... public void OnNext(InterRoleCommunicationEvent e) { if (this.owner != null && e.Payload != null) {
-,
CloudQueueWorkDetectedTriggerEvent , , , . . - , :
public class ProcessInitiatorWorkerRole : RoleEntryPoint { // , . private volatile IInterRoleCommunicationExtension interRoleCommunicator; // ... . . , Windows Azure Customer Advisory Team ... private void HandleWorkload() { // 1. , . // ... ( ) ... // 2. . // ... ( ) ... // 3. . // -, , . var trigger = new CloudQueueWorkDetectedTriggerEvent("MyStorageAccount", "InputQueue"); // . var interRoleEvent = new InterRoleCommunicationEvent(CloudEnvironment.CurrentRoleInstanceId, trigger); // . interRoleCommunicator.Publish(interRoleEvent); } }
, , , . , Windows Azure.
рдирд┐рд╖реНрдХрд░реНрд╖
рд╡рд┐рдВрдбреЛрдЬ рдПрдЬрд╝реНрдпреЛрд░ рдХреНрдпреВ-рдЖрдзрд╛рд░рд┐рдд рдореИрд╕реЗрдЬрд┐рдВрдЧ рд╕рдорд╛рдзрд╛рди рдХреЗ рдкреИрд╕реЗ рдХреЗ рд▓рд┐рдП рджрдХреНрд╖рддрд╛ рдФрд░ рдореВрд▓реНрдп рдХреЛ рдЕрдзрд┐рдХрддрдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЯ рдФрд░ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЛ рдЗрди рджрд┐рд╢рд╛рдирд┐рд░реНрджреЗрд╢реЛрдВ рдХрд╛ рдкрд╛рд▓рди рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПредрд╕рдорд╛рдзрд╛рди рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЯреНрд╕ рдХреЛ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП:- рдХреНрдпреВ-рдЖрдзрд╛рд░рд┐рдд рдореИрд╕реЗрдЬрд┐рдВрдЧ рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░ рдмрдирд╛рддреЗ рд╕рдордп, рдЖрдкрдХреЛ рдХреНрд▓рд╛рдЙрдб рдФрд░ рд╣рд╛рдЗрдмреНрд░рд┐рдб рд╕рдорд╛рдзрд╛рдиреЛрдВ рдореЗрдВ рдкрд░рддреЛрдВ рдФрд░ рд╕реЗрд╡рд╛рдУрдВ рдХреЗ рдмреАрдЪ рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рдФрд░ рд╕реНрдХреЗрд▓реЗрдмрд▓ рдореИрд╕реЗрдЬрд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рд╡рд┐рдВрдбреЛрдЬ рдПрдЬрд╝реНрдпреЛрд░ рдХрддрд╛рд░ рд╕рдВрдЧреНрд░рд╣рдг рд╕реЗрд╡рд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП ред
- рд╣рдо рдЕрдиреБрд╢рдВрд╕рд╛ рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ рдЖрдк рдПрдХ рдЦрдВрдбрд┐рдд рдореИрд╕реЗрдЬрд┐рдВрдЧ рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ рдЬреЛ рдкреНрд░рддрд┐ рд╕реЗрдХрдВрдб 500 рд╕реЗ рдЕрдзрд┐рдХ рд▓реЗрдирджреЗрди рдХрд╛ рд╕рдорд░реНрдерди рдХрд░ рд╕рдХрддрд╛ рд╣реИ ред
- Windows Azure ; .
- , .
- .
- рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╕рдордп рдЕрдзрд┐рд╕реВрдЪрдирд╛ рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХреАрдХрд░рдг рдмрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ , рдЖрдкрдХреЛ рд▓рд╛рднреЛрдВ рдФрд░ рд▓рд╛рдЧрддреЛрдВ рдХрд╛ рдореВрд▓реНрдпрд╛рдВрдХрди рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЛ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП:- рдореИрд╕реЗрдЬрд┐рдВрдЧ рд╕реЙрд▓реНрдпреВрд╢рди рдХреЛ рдбрд┐рдЬрд╛рдЗрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмреИрдЪ рдкреНрд░реЛрд╕реЗрд╕рд┐рдВрдЧ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ рдЬрдм рд╡рд┐рдВрдбреЛрдЬ рдПрдЬрд╝реНрдпреЛрд░ рдХреНрд╡реАрдиреНрд╕ рд╕реЗ рдбреЗрдЯрд╛ рдХреЛ рд╕реНрдЯреЛрд░ рдХрд░рдиреЗ рдФрд░ рдкреБрдирдГ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░рдХреНрд░рд┐рдпрд╛рдПрдБ рд▓рд┐рдЦрдиреА рд╣реЛрддреА рд╣реИрдВ ред
- рдПрдХ рдкреНрд░рднрд╛рд╡реА рдХрддрд╛рд░ рд╢реНрд░рд╡рдг рд╕реЗрд╡рд╛ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рддрдВрддреНрд░ рдХреЗ рдирд┐рд░реНрдорд╛рдг рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ рдЬреЛ рдХрддрд╛рд░реЛрдВ рд╕реЗ рд╡рд╕реНрддреБрдУрдВ рдХреЛ рд╣рдЯрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдПрдХрд▓ рдзрд╛рдЧреЗ рдХреЗ рд╕рд╛рде рдЦрд╛рд▓реА рдХрддрд╛рд░реЛрдВ рдХрд╛ рд╕рд░реНрд╡реЗрдХреНрд╖рдг рдХрд░рддрд╛ рд╣реИ ред
- рдпрджрд┐ рд╡рд░реНрдХрд░ рд▓рдВрдмреЗ рд╕рдордп рддрдХ рдЦрд╛рд▓реА рд░рд╣рддреЗ рд╣реИрдВ рддреЛ рд╡рд░реНрдХрд░ рд░реЛрд▓ рдЗрдВрд╕реНрдЯреЗрдВрд╕ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреЛ рдХрдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдбрд╛рдпрдирд╛рдорд┐рдХ рд╕реНрдХреЗрд▓рд┐рдВрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ ред
- , .
- , , .
- Windows Azure , .
- Windows Azure , .
- .NET Framework 4, TPL, PLINQ ┬л┬╗, , .