рдХреБрд╢рд▓ рдХреНрд▓рд╛рдЙрдб рдХрддрд╛рд░ рдкреНрд░рдмрдВрдзрди (рдиреАрд▓рд╛ рдХрддрд╛рд░)

"AtContent.com рд╕реЗрд╡рд╛ рдХреА рдЖрдВрддрд░рд┐рдХ рд╕рдВрд░рдЪрдирд╛ рдФрд░ рд╡рд╛рд╕реНрддреБрдХрд▓рд╛" рд╢реНрд░реГрдВрдЦрд▓рд╛ рдХреЗ рдЗрд╕ рдЪреМрдереЗ рд▓реЗрдЦ рдореЗрдВ, рдореИрдВ Azure рд╕реЗрд╡рд╛ (рд╡рд░реНрдХрд░ рд░реЛрд▓) рдХреЗ рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдиреМрдХрд░рд┐рдпреЛрдВ рдХреА рдкреГрд╖реНрдарднреВрдорд┐ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рд╕реЗ рдкрд░рд┐рдЪрд┐рдд рд╣реЛрдиреЗ рдХрд╛ рдкреНрд░рд╕реНрддрд╛рд╡ рдХрд░рддрд╛ рд╣реВрдВред

рд╣рдо рдЕрдиреБрд╢рдВрд╕рд╛ рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ рдЖрдк рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХреЗ рдмреАрдЪ рдкреНрд░рд╛рдердорд┐рдХ рд╕рдВрдЪрд╛рд░ рдЪреИрдирд▓ рдХреЗ рд░реВрдк рдореЗрдВ Azure Queues рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред рд▓реЗрдХрд┐рди рдХреЗрд╡рд▓ рдЗрд╕ рдЪреИрдирд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рд╕реЗрд╡рд╛ рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХреЗ рд╕рдмрд╕реЗ рдХреБрд╢рд▓ рдЙрдкрдпреЛрдЧ рдХреА рдЕрдиреБрдорддрд┐ рдирд╣реАрдВ рджреЗрддрд╛ рд╣реИред рддреЛ рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ рдЖрдк рдЬрд╛рдиреЗрдВрдЧреЗ рдХрд┐ рдХреИрд╕реЗ



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

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

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

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

рдЖрдк рдЗрдВрд╕реНрдЯреЗрдВрд╕ рдФрд░ рднреВрдорд┐рдХрд╛рдУрдВ рдХреЗ рдмреАрдЪ рдореИрд╕реЗрдЬрд┐рдВрдЧ рддрдВрддреНрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЗрди рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЛ рд╣рд▓ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рд╢реНрд░реГрдВрдЦрд▓рд╛ рдХреЗ рдкрд┐рдЫрд▓реЗ рд▓реЗрдЦ ( http://habrahabr.ru/post/140461/ ) рдореЗрдВ рдЗрд╕рдХрд╛ рд╡рд░реНрдгрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдЗрд╕ рддрдВрддреНрд░ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреБрдЫ рд╢рдмреНрджред рдпрд╣ рдЖрдкрдХреЛ рд╕рдВрджреЗрд╢ рдХреЛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рд╕реЗ рджреВрд╕рд░реЗ рдореЗрдВ рдпрд╛ рднреВрдорд┐рдХрд╛ рдХреЗ рд╕рднреА рдЙрджрд╛рд╣рд░рдгреЛрдВ рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП, рдЖрдк рдЙрджрд╛рд╣рд░рдгреЛрдВ рдкрд░ рд╡рд┐рднрд┐рдиреНрди рд╣реИрдВрдбрд▓рд░ рдЪрд▓рд╛ рд╕рдХрддреЗ рд╣реИрдВ, рдЬреЛ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХреА рд╕реНрдерд┐рддрд┐ рдХреЛ рд╕рд┐рдВрдХреНрд░рдирд╛рдЗрдЬрд╝ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдЬреИрд╕рд╛ рдХрд┐ рдХрд╛рд░реНрдп рдкрд░ рд▓рд╛рдЧреВ рд╣реЛрддрд╛ рд╣реИ, рдпрд╣ рдЖрдкрдХреЛ рдХрд╛рд░реНрдп рдХреЛ рдХрддрд╛рд░ рдореЗрдВ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рддреБрд░рдВрдд рдмрд╛рдж рдХрддрд╛рд░ рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдЗрд╕реА рд╕рдордп, рдХрддрд╛рд░ рдореЗрдВ рдиреМрдХрд░рд┐рдпреЛрдВ рдХреА рдЙрдкрд▓рдмреНрдзрддрд╛ рдХреА рд▓рдЧрд╛рддрд╛рд░ рдЬрд╛рдВрдЪ рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рдирд╣реАрдВ рд╣реИ, рдЬреЛ "рдирд┐рд╖реНрдХреНрд░рд┐рдп" рд▓реЗрдирджреЗрди рдХреЛ рд╕рдорд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИред


рдпрджрд┐ рд╣рдо рдЗрд╕ рддрдВрддреНрд░ рдкрд░ рдЕрдзрд┐рдХ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рд╡рд┐рдЪрд╛рд░ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рд╣рдо рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рджреЗрдЦреЗрдВрдЧреЗ:


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

рд╣реИрдВрдбрд▓рд░ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХреЛ рд╡рд┐рднрд┐рдиреНрди рддрд░реАрдХреЛрдВ рд╕реЗ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЙрджрд╛рд╣рд░рдг рдХреЗ рдореЗрдореЛрд░реА рдореЗрдВ (рдЬреЛ рд╕рдмрд╕реЗ рд╡рд┐рд╢реНрд╡рд╕рдиреАрдп рддрд░реАрдХрд╛ рдирд╣реАрдВ рд╣реИ), рдЙрджрд╛рд╣рд░рдг рдХреЗ рднрдВрдбрд╛рд░рдг рдореЗрдВ рдпрд╛ рдмреНрд▓реЙрдмреНрд╕ (рдПрдЬрд╝реНрдпреЛрд░ рдмреНрд▓реЙрдм рд╕реНрдЯреЛрд░реЗрдЬ) рдХреЗ рднрдВрдбрд╛рд░рдг рдореЗрдВред

рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдХрддрд╛рд░реЛрдВ рдХреЗ рд▓рд┐рдП CPlase рдкреБрд╕реНрддрдХрд╛рд▓рдп рдореЗрдВ рдПрдХ рд╡рд┐рд╢реЗрд╖ рдХрддрд╛рд░ рд╡рд░реНрдЧ рд╣реИ рдЬреЛ рдЖрдкрдХреЛ рдХрддрд╛рд░ рд╕рдВрдЪрд╛рд▓рдХреЛрдВ рдХреЛ рдмрдирд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдЗрд╕рдХреЗ рд▓рд┐рдП, рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдореЗрдВ рдПрдХ IWorkerQueueHandler рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдФрд░ рдЗрд╕рдХреЗ рд▓рд┐рдП рдПрдХреНрд╕рдЯреЗрдВрд╢рди рднреА рд╣реИрдВ, рдЬреЛ рдХрддрд╛рд░реЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдирд╛ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдмрдирд╛рддреЗ рд╣реИрдВ:
public interface IWorkerQueueHandler { bool HandleQueue(string Message); } public static class WorkerQueueHandlerExtensions { private static string CleanUpQueueName(string DirtyQueueName) { return DirtyQueueName.Substring(0, DirtyQueueName.IndexOf(",")).ToLowerInvariant().Replace(".", "-"); } public static string GetQueueName(this IWorkerQueueHandler Handler) { return CleanUpQueueName(Handler.GetType().AssemblyQualifiedName); } public static string GetQueueName(Type HandlerType) { return CleanUpQueueName(HandlerType.AssemblyQualifiedName); } } 

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

рдХреНрдпреВ рдХреНрд▓рд╛рд╕ рдЕрдкрдиреЗ рдЖрдк рдореЗрдВ рдЖрд╡рд╢реНрдпрдХ рдХрддрд╛рд░ рдФрд░ рдЙрд╕рдХреЗ рдирд┐рд░реНрдорд╛рдг рдХреЗ рд╡рд┐рдХрд▓реНрдк рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИ, рдЕрдЧрд░ рдпрд╣ рдПрдЬрд╝реНрдпреЛрд░ рд╕реНрдЯреЛрд░реЗрдЬ рдореЗрдВ рдирд╣реАрдВ рд╣реИред рдПрдХ рдХрд╛рд░реНрдп рдХреЛ рдХрддрд╛рд░ рдореЗрдВ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд╕рд╛рде, рдЬрд┐рд╕рдореЗрдВ рдПрдЬрд╝реНрдпреЛрд░ рд╕реЗрд╡рд╛ рдХреЗ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рдВрджреЗрд╢ рднреЗрдЬрдирд╛ рд╢рд╛рдорд┐рд▓ рд╣реИред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдЬреИрд╕рд╛ рдХрд┐ рдкрд╣рд▓реЗ рд╣реА рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдгреЛрдВ рдФрд░ рднреВрдорд┐рдХрд╛рдУрдВ рдХреЗ рдмреАрдЪ рд╕рдВрджреЗрд╢реЛрдВ рдХреЗ рдЖрджрд╛рди-рдкреНрд░рджрд╛рди рдХреЗ рддрдВрддреНрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
 public static CloudQueue GetQueue(string QueueName) { CreateOnceQueue(QueueName); return queueStorage.GetQueueReference(QueueName); } public static bool AddToQueue<QueueHandlerType>(string Task) where QueueHandlerType : IWorkerQueueHandler { var Queue = GetQueue(WorkerQueueHandlerExtensions.GetQueueName(typeof(QueueHandlerType))); return AddToQueue<QueueHandlerType>(Queue, Task); } public static bool AddToQueue<QueueHandlerType>(CloudQueue Queue, string Task) { try { var Message = new CloudQueueMessage(Task); Queue.AddMessage(Message); Internal.RoleCommunicatior.WorkerRoleCommand(typeof(QueueHandlerType)); return true; } catch { return false; } } 

рдЗрд╕ рддрд░рд╣ рдХреЗ рд╕рдорд╛рдзрд╛рди рдХреЗ рд▓рд╛рднреЛрдВ рдХреА рдЧрдгрдирд╛ рдХрд░рдирд╛ рдЖрд╕рд╛рди рд╣реИ рдпрджрд┐ рдЖрдк рдХрддрд╛рд░ рдореЗрдВ рдЖрдиреЗ рд╡рд╛рд▓реЗ рдХрд╛рд░реНрдпреЛрдВ рдХреА рд▓рдЧрднрдЧ рдорд╛рддреНрд░рд╛ рдФрд░ рдзрд╛рд░рд╛ рдХреА рдЕрдиреБрдорд╛рдирд┐рдд рд╕рдВрд░рдЪрдирд╛ рдХреЛ рдЬрд╛рдирддреЗ рд╣реИрдВред рдЗрд╕рд▓рд┐рдП, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрджрд┐ рдЖрдкрдХреЗ рдХрд╛рд░реНрдп рдореБрдЦреНрдп рд░реВрдк рд╕реЗ рд╢рд╛рдо рдХреЛ 20 рд╕реЗ 23 рдШрдВрдЯреЗ рддрдХ рдЖрддреЗ рд╣реИрдВ, рддреЛ рджрд┐рди рдореЗрдВ рдЕрдзрд┐рдХрд╛рдВрд╢ рдЕрдВрддрд░рд╛рд▓ рдХреЗ рд╕рд╛рде рдХрд╛рд░реНрдпреЛрдВ рдХреА рдЬрд╛рдБрдЪ рдХрд░рдирд╛ "рдмреЗрдХрд╛рд░" рд╣реЛрдЧрд╛ред рдФрд░ рдпрд╣ рдЧрдгрдирд╛ рдХрд░рдирд╛ рдЖрд╕рд╛рди рд╣реИ рдХрд┐ 21 рдШрдВрдЯреЛрдВ рдХреЗ рд▓рд┐рдП рд╡рд╣ рдмрд┐рдирд╛ рдкрд░рд┐рдгрд╛рдо рдХреЗ рдХрддрд╛рд░ рд╕реЗ рдХрд╛рд░реНрдпреЛрдВ рдХрд╛ рдЪрдпрди рдХрд░реЗрдЧреАред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЕрдЧрд░ рдЗрд╕ рддрд░рд╣ рдХреЗ рдЪреЗрдХ рдХреЛ рдПрдХ рдмрд╛рд░ рдПрдХ рд╕реЗрдХрдВрдб рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдпрд╣ рдкреНрд░рддрд┐ рджрд┐рди рд▓рдЧрднрдЧ 75,000 "рдирд┐рд╖реНрдХреНрд░рд┐рдп" рд▓реЗрдирджреЗрди рдХрд░реЗрдЧрд╛ред $ 0.01 рдкреНрд░рддрд┐ 10,000 рдХреЗ рд▓реЗрдирджреЗрди рдореВрд▓реНрдп рдХреЗ рд╕рд╛рде, рдпрд╣ рд░рд╛рд╢рд┐ $ 0.075 рдкреНрд░рддрд┐ рджрд┐рди рдпрд╛ $ 2.25 рдкреНрд░рддрд┐ рдорд╛рд╣ рд╣реЛрдЧреАред рд▓реЗрдХрд┐рди рдЕрдЧрд░ рдЖрдкрдХреЗ рдкрд╛рд╕ 100 рдЕрд▓рдЧ-рдЕрд▓рдЧ рдХрддрд╛рд░реЗрдВ рд╣реИрдВ, рддреЛ рдкреНрд░рддрд┐ рдорд╛рд╣ рдЕрддрд┐рд░рд┐рдХреНрдд рд▓рд╛рдЧрдд $ 225 рд╣реЛрдЧреАред

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

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

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

рд╢реНрд░реГрдВрдЦрд▓рд╛ рдореЗрдВ рдкрдврд╝реЗрдВ:

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


All Articles