ASP.NET MVC 4 рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдореЗрдВ рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ

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

рдпрджрд┐ рдЖрдк, рдкреНрд░рд┐рдп harazhitel, рдпрд╣ рджрд┐рд▓рдЪрд╕реНрдк рд╣реИ - рдореИрдВ рдПрдХ рдХрдЯреМрддреА рдХреЗ рд▓рд┐рдП рдкреВрдЫрдирд╛!

тАЬрдореИрдВ рдкреНрд░рддреАрдХреНрд╖рд┐рдд рдЦреЛрдЬрд╢рдмреНрдж рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдЖрдкрдХреЛ C # 5.0 рдореЗрдВ рдирдпрд╛ рджрд┐рдЦрд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реВрдБрдЧрд╛ред рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ ASP.NET MVC 4 рд╡реЗрдм рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдПред тАЭ


рдореИрдВрдиреЗ рдереЛрдбрд╝реА рджреЗрд░ рдХреЗ рд▓рд┐рдП Visual Studio Async CTP рдХреЗ рд╕рд╛рде рдЦреЗрд▓рд╛ рдФрд░ рдЕрдм рдореЗрд░реЗ рдкрд╛рд╕ рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рдкрд░реНрдпрд╛рдкреНрдд рд╡рд┐рдЪрд╛рд░ рд╣реИрдВ рдХрд┐ рдпрд╣ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЗрд╕реЗ рдмреБрджреНрдзрд┐рдорд╛рдиреА рд╕реЗ рдХреИрд╕реЗ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рдПред рдФрд░ рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдореИрдВ рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд▓рд┐рдЦ рд╕рдХрддрд╛ рд╣реВрдВред

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

рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдПрдХ рдирдП рдкреНрд░рддрд┐рдорд╛рди рд╕реЗ рджреВрд░ рд╣реИ, рдпрд╣ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА .NET 1.0 рдХреЗ рджрд┐рдиреЛрдВ рдореЗрдВ рдерд╛ред рдореБрдЭреЗ 3 рд╕рд╛рд▓ рдкрд╣рд▓реЗ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдореЗрдВ рдмрд╣реБрдд рджрд┐рд▓рдЪрд╕реНрдкреА рдирд╣реАрдВ рдереА, рдЗрд╕рд▓рд┐рдП рдпрд╣ рдЕрд╡рдзрд╛рд░рдгрд╛ рдореЗрд░реЗ рд▓рд┐рдП рдЖрдЬ рддрдХ рдХрд╛рдлреА рдирдИ рд╣реИред рдЬрд╣рд╛рдБ рддрдХ рдореИрдВрдиреЗ рдкрдврд╝рд╛ рд╣реИ, рдЕрд╡рдзрд╛рд░рдгрд╛ рдХрд╛рдлреА рд╣рдж рддрдХ рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдкрд░ .NET рдХреЗ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╕реЗ рд╡рд┐рдХрд╕рд┐рдд рд╣реБрдИ рд╣реИ рдФрд░ рдЬреИрд╕рд╛ рдХрд┐ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ, рдЕрдм рдЕрдкрдиреЗ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫреЗ рдЪрд░рдг рдореЗрдВ рд╣реИред

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

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


рдореИрдВ рдЗрди рд╕рднреА рд╕рд╡рд╛рд▓реЛрдВ рдХрд╛ рд╕рдЯреАрдХ рдЬрд╡рд╛рдм рдирд╣реАрдВ рдЬрд╛рдирддрд╛, рд▓реЗрдХрд┐рди рдпрд╣рд╛рдБ рдХреБрдЫ рдЙрджрд╛рд╣рд░рдг рд╣реИрдВ:


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

Visual Studio Async CTP рдФрд░ рдпрд╣ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ


C # 5.0 рдореЗрдВ, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдПрдХ рдирдпрд╛ рдПрд╕рд┐рдВрдХреНрд░реЛрдирд╕ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдореЙрдбрд▓ рд╣реЛрдЧрд╛, рдЬреЛ рд╕рд┐рдВрдХреНрд░реЛрдирд╕ рдХреЗ рд╕рдорд╛рди рд╣реИред рдЗрд╕ рдмреАрдЪ, рдбреЗрд╡рд▓рдкрд░реНрд╕ рдиреЗ рд╡рд░реНрддрдорд╛рди рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд▓рд┐рдП рд╕реАрдЯреАрдкреА рдЬрд╛рд░реА рдХрд┐рдпрд╛ рд╣реИ, рдЬреЛ рдХрд┐ рдЧреЛ-рд▓рд╛рдЗрд╡ рд▓рд╛рдЗрд╕реЗрдВрд╕ рдХреЗ рддрд╣рдд рдЙрдкрд▓рдмреНрдз рд╣реИред рдпрд╣рд╛рдБ AsyncCTP рд╡рд┐рдирд┐рд░реНрджреЗрд╢рди рд╕реЗ рдПрдХ рдЙрджреНрдзрд░рдг рд╣реИ:

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

рдПрдХ рдПрд╕рд┐рдВрдХреНрд░реЛрдирд╕ рдлрд╝рдВрдХреНрд╢рди рдПрдХ рдХреНрд▓рд╛рд╕ рдореЗрдердб рдпрд╛ рдЕрдирд╛рдо рдлрд╝рдВрдХреНрд╢рди рд╣реИ рдЬрд┐рд╕реЗ рдПрд╕рд┐рдВрдХреНрд╕ рд╕рдВрд╢реЛрдзрдХ рдХреЗ рд╕рд╛рде рдЪрд┐рд╣реНрдирд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдпрд╣ рдЯрд╛рд╕реНрдХ рдХреНрд▓рд╛рд╕ рдФрд░ рдЯрд╛рд╕реНрдХ <T> рдХреЗ рдХрд┐рд╕реА рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рдордирдорд╛рдиреЗ рдкреНрд░рдХрд╛рд░ T рдХреЗ рд▓рд┐рдП рд▓реМрдЯрд╛ рд╕рдХрддрд╛ рд╣реИ - рдРрд╕реЗ рдХрд╛рд░реНрдпреЛрдВ рдореЗрдВ рдЗрд╕рдХрд╛ рдЗрдВрддрдЬрд╛рд░ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдпрджрд┐ рдлрд╝рдВрдХреНрд╢рди рдЪрд┐рд╣реНрдирд┐рдд async рд░рд┐рдЯрд░реНрди рд╢реВрдиреНрдп (рдЬреЛ рднреА рдорд╛рдиреНрдп рд╣реИ), рддреЛ рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рджреВрд╕рд░реА рддрд░рдл, рд╣рдо рдЯреА рдХреЗ рд░реВрдк рдореЗрдВ рдХрд┐рд╕реА рднреА рдкреНрд░рдХрд╛рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ ред

ASP.NET MVC 4 рдФрд░ C # рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рд╕реБрд╡рд┐рдзрд╛рдПрдБ


ASP.NET MVC рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдореЗрдВ рдПрд╕рд┐рдВрдХреНрд░реЛрдирд╕ рдХрд╛ рдЙрдЪрд┐рдд рдЙрдкрдпреЛрдЧ рдкреНрд░рджрд░реНрд╢рди рдкрд░ рдмрд╣реБрдд рд╕рдХрд╛рд░рд╛рддреНрдордХ рдкреНрд░рднрд╛рд╡ рдбрд╛рд▓ рд╕рдХрддрд╛ рд╣реИред рдорд╛рдиреЛ рдпрд╛ рди рдорд╛рдиреЛ, рдпрд╣ рд╣реИред рдЕрдм рдореИрдВ рджрд┐рдЦрд╛рдКрдВрдЧрд╛ рдХрд┐ рдХреИрд╕реЗред

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

ASP.NET MVC 4 рдореЗрдВ, рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдмрд╣реБрдд рдмрджрд▓ рдЧрдпрд╛ рд╣реИред рдЖрдк рдЬрд╛рди рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ ASP.NET MVC 3 рдореЗрдВ рд╣рдорд╛рд░реЗ рдирд┐рдпрдВрддреНрд░рдХ рдХреЛ AsyncController рд╕реЗ рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ рдкреНрд░рд╛рдкреНрдд рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдФрд░ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдкреИрдЯрд░реНрди рдХреЗ рдЕрдиреБрд░реВрдк рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдЖрдк рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ " ASP.NET MVC рдореЗрдВ рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рдирд┐рдпрдВрддреНрд░рдХреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ " рдкрдврд╝ рд╕рдХрддреЗ рд╣реИрдВред

ASP.NET MVC 4 рдореЗрдВ, рд╣рдореЗрдВ рдЕрдм AsyncController рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ, рдмрд╕ рд╣рдорд╛рд░реЗ рдирд┐рдпрдВрддреНрд░рдХ рдХреЛ Async рдХреЗ рд╕рд╛рде рдЪрд┐рд╣реНрдирд┐рдд рдХрд░реЗрдВ рдФрд░ рдХреНрд▓рд╛рд╕ рдЯрд╛рд╕реНрдХ рдпрд╛ рдЯрд╛рд╕реНрдХ <T> (рдЬрд╣рд╛рдВ T рдЖрдорддреМрд░ рдкрд░ ActionResult рд╣реИ ) рдХреА рдПрдХ рд╡рд╕реНрддреБ рд▓реМрдЯрд╛рдПрдВред

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

рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдореИрдВрдиреЗ рдирдП ASP.NET рд╡реЗрдм рдПрдкреАрдЖрдИ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕рдмрд╕реЗ рд╕рд░рд▓ REST рд╕реЗрд╡рд╛ рдмрдирд╛рдИред рд╕рдмрд╕реЗ рд╕рд░рд▓ рдореЙрдбрд▓ рдЬреЛ рдореЗрдореЛрд░реА рдореЗрдВ рд╕рдВрдЧреНрд░рд╣ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рддрд╛ рд╣реИ (рдЖрдк рдЗрд╕рдХреЗ рдмрдЬрд╛рдп рдбреЗрдЯрд╛рдмреЗрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ):
public class Car { public string Make; public string Model; public int Year; public int Doors; public string Colour; public float Price; public int Mileage; } public class CarService { public List<Car> GetCars() { List<Car> Cars = new List<Car> { new Car { Make="Audi", Model="A4", Year=1995, Doors=4, Colour="Red", Price=2995f, Mileage=122458 }, new Car { Make="Ford", Model="Focus", Year=2002, Doors=5, Colour="Black", Price=3250f, Mileage=68500 }, new Car { Make="BMW", Model="5 Series", Year=2006, Doors=4, Colour="Grey", Price=24950f, Mileage=19500 } //This keeps going like that }; return Cars; } } 

рдФрд░ рд╕реЗрд╡рд╛ рдХреЛрдб:
 public class CarsController : ApiController { public IEnumerable<Car> Get() { var service = new CarService(); return service.GetCars(); } } 

рдЗрд╕рд▓рд┐рдП, рдореЗрд░реЗ рдкрд╛рд╕ рдПрдХ рд╕реЗрд╡рд╛ рд╣реИред рдЕрдм рдореИрдВ рдПрдХ рд╡реЗрдм рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд▓рд┐рдЦреВрдВрдЧрд╛ рдЬреЛ рд╕реЗрд╡рд╛ рд╕реЗ рдбреЗрдЯрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдЧрд╛ рдФрд░ рдЗрд╕реЗ рджрд┐рдЦрд╛рдПрдЧрд╛ред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдореИрдВрдиреЗ рд╕реЗрд╡рд╛ рдХреА рдПрдХ рд╢реНрд░реЗрдгреА рд▓рд┐рдЦреА рдЬреЛ рдбреЗрдЯрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рддреА рд╣реИ рдФрд░ рдЙрдиреНрд╣реЗрдВ рдбрд┐рд╕реЗрд░реНрдмрд▓рд╛рдЗрдЬрд╝ рдХрд░рддреА рд╣реИ: рдПрд╕рд┐рдВрдХреНрд░реЛрдирд╕ рдХреЙрд▓ рдХреЗ рд▓рд┐рдП, рдореИрдВрдиреЗ рдирдП HttpClient рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛, рдФрд░ рд╕рд┐рдВрдХреНрд░реЛрдирд╕ рдХреЙрд▓ рдХреЗ рд▓рд┐рдП , рд╕рд╛рдорд╛рдиреНрдп рд╡реЗрдмрдХреНрд▓рд╛рдЗрдВрдЯ ред рдореИрдВрдиреЗ Json.NET рдХрд╛ рднреА рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛:
 public class CarRESTService { readonly string uri = "http://localhost:2236/api/cars"; public List<Car> GetCars() { using (WebClient webClient = new WebClient()) { return JsonConvert.DeserializeObject<List<Car>> ( webClient.DownloadString(uri) ); } } public async Task<List<Car>> GetCarsAsync() { using (HttpClient httpClient = new HttpClient()) { return JsonConvert.DeserializeObject<List<Car>> ( await httpClient.GetStringAsync(uri) ); } } } 

GetCars рд╡рд┐рдзрд┐ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХрд╣рдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рднреА рдирд╣реАрдВ рд╣реИ - рдпрд╣ рд╕рд░рд▓ рд╣реИред рд▓реЗрдХрд┐рди GetCarsAsync рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╣рдо рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХрд╣ рд╕рдХрддреЗ рд╣реИрдВ:


рдФрд░ рдЕрдВрдд рдореЗрдВ, рдпрд╣рд╛рдБ рдирд┐рдпрдВрддреНрд░рдХ рд╣реИ:
 public class HomeController : Controller { private CarRESTService service = new CarRESTService(); public async Task<ActionResult> Index() { return View("index", await service.GetCarsAsync()); } public ActionResult IndexSync() { return View("index", service.GetCars()); } } 


рдЗрд╕рд▓рд┐рдП, рд╣рдореЗрдВ рдЗрдВрдбреЗрдХреНрд╕ рдорд┐рд▓рд╛ - рдПрдХ рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рдлрд╝рдВрдХреНрд╢рди рдЬреЛ рдЯрд╛рд╕реНрдХ <ActionResult> , рдФрд░ IndexSync - рдПрдХ рдирд┐рдпрдорд┐рдд рд╕рд┐рдВрдХреНрд░реЛрдирд╕ рдХреЙрд▓ рд▓реМрдЯрд╛рддрд╛ рд╣реИ ред рдпрджрд┐ рд╣рдо рдПрдбреНрд░реЗрд╕ / рд╣реЛрдо / рдЗрдВрдбреЗрдХреНрд╕ рдпрд╛ / рд╣реЛрдо / рдЗрдВрдбреЗрдХреНрд╕рд╕рд┐рдВрдХ рдкрд░ рдЬрд╛рддреЗ рд╣реИрдВ , рддреЛ рд╣рдо рдкреЗрдЬ рдЦреЛрд▓рдиреЗ рдХреА рдЧрддрд┐ рдореЗрдВ рдмрд╣реБрдд рдЕрдВрддрд░ рдирд╣реАрдВ рджреЗрдЦреЗрдВрдЧреЗ - рдпрд╣ рд▓рдЧрднрдЧ рдПрдХ рд╣реА рд╣реИред

рдЗрди рддрд░реАрдХреЛрдВ рдХреЗ рдХрд╛рдо рдореЗрдВ рдЕрдВрддрд░ рдХреЛ рдорд╛рдкрдиреЗ рдХреЗ рд▓рд┐рдП, рдореИрдВрдиреЗ рдПрдордПрд╕ рд╡рд┐рдЬрд╝реБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ 2010 рдЕрд▓реНрдЯреАрдореЗрдЯ рдореЗрдВ рд▓реЛрдб рдЯреЗрд╕реНрдЯ рдмрдирд╛рдПред рдореИрдВ рдЗрди рджреЛ рдкреГрд╖реНрдареЛрдВ рдХреЛ рджреЛ рдорд┐рдирдЯ рдХреЗ рднреАрддрд░ рдЦреЛрд▓реВрдВрдЧрд╛, 50 рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рд▓реЛрдб рдХреЗ рд╕рд╛рде рд╢реБрд░реВ, рдзреАрд░реЗ-рдзреАрд░реЗ рдЗрд╕реЗ 20 рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рджреНрд╡рд╛рд░рд╛ рд╣рд░ 5 рд╕реЗрдХрдВрдб рдореЗрдВ рдмрдврд╝рд╛рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдЕрдзрд┐рдХрддрдо рд╕реАрдорд╛ 500 рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреА рд╣реИред рд╣рдо рдкрд░рд┐рдгрд╛рдо рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░рддреЗ рд╣реИрдВ (рдХреНрд▓рд┐рдХ рдХрд░рдиреЗ рдпреЛрдЧреНрдп):

рдЫрд╡рд┐

рдпрд╣ рджреЗрдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рд╕рд┐рдВрдХреНрд░реЛрдирд╕ рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд▓рд┐рдП, рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рд╕рдордп 11.2 рд╕реЗрдХрдВрдб рд╣реИ, рдФрд░ рдПрд╕рд┐рдВрдХреНрд░реЛрдирд╕ рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд▓рд┐рдП - 3.65 рд╕реЗрдХрдВрдбред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЕрдВрддрд░ рд╕реНрдкрд╖реНрдЯ рд╣реИред

рдЙрд╕реА рдХреНрд╖рдг рд╕реЗ, рдореИрдВ рдЗрд╕ рдЕрд╡рдзрд╛рд░рдгрд╛ рдХрд╛ рдЕрдиреБрдпрд╛рдпреА рдмрди рдЧрдпрд╛ "рд╕рдм рдХреБрдЫ рдЬреЛ 40ms (рдиреЗрдЯрд╡рд░реНрдХ, рдлрд╝рд╛рдЗрд▓ рд╕рд┐рд╕реНрдЯрдо рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╕рдВрдЪрд╛рд▓рди - рдпрд╛рдиреА рд╕рднреА рдореБрдЦреНрдп I / O) рд╕реЗ рдЕрдзрд┐рдХ рд╕рдордп рд▓реЗрддрд╛ рд╣реИ - рдпрд╣ рд╕рдм рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП!"

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


All Articles