ASP.NET MVC: рд░реВрдкрд╛рдВрддрд░рдг рдпрд╛ рдЗрдВрдЬреЗрдХреНрд╢рди? рдпрд╣реА рд╕рд╡рд╛рд▓ рд╣реИ

рдХрдХреНрд╖рд╛рдУрдВ рдореЗрдВ рдХреЗрд╡рд▓ рд╕рд╛рд░ рдкрд░ рдирд┐рд░реНрднрд░рддрд╛ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдП, рдФрд░ рдареЛрд╕ рдирд╣реАрдВ, рдХрдХреНрд╖рд╛рдПрдВред рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдк 2 рд╕реЗрд╡рд╛ рд▓реЛрдХреЗрдЯрд░ рдФрд░ рдирд┐рд░реНрднрд░рддрд╛ рдЗрдВрдЬреЗрдХреНрд╢рди рдкреНрд░рдерд╛рдУрдВ рдХреЗ рдмреАрдЪ рдЪрдпрди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред ASP.NET MVC "рдбрд┐рдкреЗрдВрдбреЗрдВрд╕реА рд░рд┐рдЬрд╝реЙрд▓реНрд╡рд░" рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рдЬреЛ рд╕реЗрд╡рд╛ рд▓реЛрдХреЗрдЯрд░ рд╣реИрдВред ASP.NET MVC рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЛ рд╡рд┐рдХрд╕рд┐рдд рдХрд░рддреЗ рд╕рдордп, рдЖрдкрдХреЛ рдпрд╣ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рдХреНрдпрд╛ рд╕рдорд╛рдзрд╛рди рдпрд╛ рдЗрдВрдЬреЗрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдкреЗрд╢реЗрд╡рд░реЛрдВ рдФрд░ рд╡рд┐рдкрдХреНрд╖ рдХреНрдпрд╛ рд╣реИрдВ?

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

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

рдирд┐рд░реНрднрд░рддрд╛ рдЙрд▓рдЯрд╛ рд╕рд┐рджреНрдзрд╛рдВрдд

рдирд┐рд░реНрднрд░рддрд╛ рдЙрд▓рдЯрд╛ рдХреЗ рд╕рд┐рджреНрдзрд╛рдВрдд, рдЗрд╕рдХреЗ рд╡рд┐рдкрд░реАрдд, рдПрдХ рдЕрд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рддреИрдпрд╛рд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдЪрд░рдгреЛрдВ рдХреЗ рдПрдХ рд╡рд┐рд╕реНрддреГрдд рд╕реЗрдЯ рдореЗрдВ рдЕрдиреБрд╡рд╛рдж рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдирд┐рд░реНрднрд░рддрд╛ рд╡реНрдпреБрддреНрдХреНрд░рдо рдХреЗ рд╕рд┐рджреНрдзрд╛рдВрдд рдореЗрдВ рдХрд╣рд╛ рдЧрдпрд╛ рд╣реИ рдХрд┐ рд╡рд░реНрдЧреЛрдВ рдореЗрдВ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╡рд░реНрдЧреЛрдВ рдкрд░ рдирд┐рд░реНрднрд░рддрд╛ рдирд╣реАрдВ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдП, рд▓реЗрдХрд┐рди рдХреЗрд╡рд▓ рдЕрдореВрд░реНрддрддрд╛ рдореЗрдВред рдЕрдзрд┐рдХ рд╕рдордЭ рдореЗрдВ рдЖрдиреЗ рд╡рд╛рд▓реА рднрд╛рд╖рд╛ рдореЗрдВ, рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдЖрдкрдХреЛ рдХрдХреНрд╖рд╛ рдХреЗ рднреАрддрд░ рд╕рднреА рдорд╣рддреНрд╡рдкреВрд░реНрдг рдирд┐рд░реНрднрд░рддрд╛ рдХреЛ рдЦрддреНрдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрдВрдЯрд░рдлреЗрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рдпрджрд┐, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреА рдХрдХреНрд╖рд╛ рдПрдХ рд▓реЙрдЧрд┐рдВрдЧ рдШрдЯрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреА рд╣реИ, рддреЛ рдЖрдк рдЬреЛ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рдХрд╛рдо рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рд╡рд╣ рдПрдХ ILogger рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдШреЛрд╖рд┐рдд рдХрд░рдирд╛ рд╣реИ, рди рдХрд┐ рд▓реЙрдЧрд░ рд╡рд░реНрдЧред рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдЖрдк рдЕрдкрдиреЗ рдореБрдЦреНрдп рдХреЛрдб рдХреЛ рддреЛрдбрд╝рдиреЗ рдХреЗ рдмрд┐рдирд╛ рдХрд┐рд╕реА рднреА рд╕рдордп рд▓реЙрдЧрд┐рдВрдЧ рд╡рд░реНрдЧ рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЛ рдмрджрд▓ рд╕рдХрддреЗ рд╣реИрдВ (рдФрд░ рдХрд┐рддрдиреА рдмрд╛рд░ рдЖрдк рдЪрд╛рд╣рддреЗ рд╣реИрдВ)ред
рдирд┐рд░реНрднрд░рддрд╛ рд╡реНрдпреБрддреНрдХреНрд░рдо рдХреЗ рд╕рд┐рджреНрдзрд╛рдВрдд рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХрд╛ рдЕрд░реНрде рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣реИ: рдЖрдк рдХреЛрдб рдореЗрдВ рдЖрд╡рд╢реНрдпрдХ рд╕реНрдерд╛рди рдкрд░ рдирд┐рд░реНрднрд░рддрд╛ рдХреА рд╕реВрдЪреА рдХреЛ рдкрд╛рд╕ рдХрд░рддреЗ рд╣реИрдВред рдЖрдЗрдП рдЗрд╕реЗ рдПрдХ рдЙрджрд╛рд╣рд░рдг рд╕реЗ рджреЗрдЦреЗрдВ:
public class MyComponent { public MyComponent() { : } public void DoSomeWork() { var logger = new Logger(); : } } 

рдЬрд╛рд╣рд┐рд░ рд╣реИ, MyComponent рд╡рд░реНрдЧ рдХреЗ рдкрд╛рд╕ рд▓рдХрдбрд╝рд╣рд╛рд░рд╛ рд╡рд░реНрдЧ рдкрд░ рдирд┐рд░реНрднрд░рддрд╛ рд╣реИред рдпрджрд┐ рд╣рдо рдЗрд╕реЗ ILogger рдореЗрдВ рдмрджрд▓рдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рд▓реЗрддреЗ рд╣реИрдВ, рддреЛ рд╣рдо рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╡рд░реНрдЧ рдХрд╛ рд╕рдВрджрд░реНрдн рдХреИрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ?
 public class MyComponent { public MyComponent() { : } public void DoSomeWork() { ILogger logger = ...; // who's going to provide this? : } } 

рдирд┐рд░реНрднрд░рддрд╛ рдЙрд▓рдЯрд╛ рдХреЗ рд╕рд┐рджреНрдзрд╛рдВрдд рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЗ рдкрд╛рд╕ рджреЛ рдореБрдЦреНрдп рдореЙрдбрд▓ рдХрд╛ рд╡рд┐рдХрд▓реНрдк рд╣реИ: рд╕реЗрд╡рд╛ рд▓реЛрдХреЗрдЯрд░ рдФрд░ рдирд┐рд░реНрднрд░рддрд╛ рдЗрдВрдЬреЗрдХреНрд╢рдиред рдкрд╣рд▓рд╛ рддрд░реАрдХрд╛ рд╡рд░реНрдЧ рдХреЗ рдЕрдВрджрд░ рдХреА рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рддрд╛ рд╣реИ, рджреВрд╕рд░рд╛ рдЖрдкрдХреЛ рдХрдХреНрд╖рд╛ рд╕реЗ рдирд┐рд░реНрднрд░рддрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╕реВрдЪреА рд╕реЗрд╡рд╛ рд▓реЛрдХреЗрдЯрд░ рд╡рд┐рдзрд┐ рдХреЛ рджрд░реНрд╢рд╛рддреА рд╣реИ:
 public class MyComponent { public MyComponent() { : } public void DoSomeWork() { ILogger logger = ServiceLocator.GetService(); : } } 

рдЖрдкрдХреЗ рдкрд╛рд╕ рдПрдХ рдирд┐рд░реНрднрд░рддрд╛ рд░рд┐рдЬрд╝реЙрд▓реНрдпреВрд╢рди рдШрдЯрдХ рд╣реИ рдЬреЛ рдЖрдорддреМрд░ рдкрд░ рдПрдХ рдкреНрд░рдХрд╛рд░ (рдЖрдорддреМрд░ рдкрд░ рдПрдХ рдЗрдВрдЯрд░рдлрд╝реЗрд╕) рд▓реЗрддрд╛ рд╣реИ рдФрд░ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдкреНрд░рдХрд╛рд░ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рджреЗрддрд╛ рд╣реИ рдЬреЛ рдЗрд╕ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИред рдкреНрд░рдХрд╛рд░ рдорд┐рд▓рд╛рди рдЬреЛ рдкрд╛рд╕ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдФрд░ рдЙрджрд╛рд╣рд░рдг-рд╡рд┐рд╢рд┐рд╖реНрдЯ рдкреНрд░рдХрд╛рд░ рд▓реЛрдХреЗрдЯрд░ рдШрдЯрдХ рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдореЗрдВ рдЫрд┐рдкрд╛ рд╣реБрдЖ рд╣реИред рдЗрд╕ рдореЙрдбрд▓ рдХреЛ рд╕реЗрд╡рд╛ рд▓реЛрдХреЗрдЯрд░ рдкреИрдЯрд░реНрди рдХреЗ рд░реВрдк рдореЗрдВ рдЬрд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИред
рдпрд╣рд╛рдБ рдПрдХ рдФрд░ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╣реИ:
 public class MyComponent { private ILogger _logger; public MyComponent(ILogger logger) { _logger = logger; } public void DoSomeWork() { // Use the logger component here _logger.Log(); : } } 

рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, MyComponent рд╡рд░реНрдЧ рдХреЛ рдмрд╛рд╣рд░реА рджреБрдирд┐рдпрд╛ рдХреЗ рд╕рд╛рде рдЙрдкрдпреЛрдЧ рдХреЗ рд▓рд┐рдП ILogger рдШрдЯрдХ рдорд┐рд▓рддрд╛ рд╣реИред рдЖрдкрдХрд╛ рд╡рд╛рддрд╛рд╡рд░рдг MyComponent рдкрд░ рднреЗрдЬрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рд░рдЬрд┐рд╕реНрдЯреНрд░рд╛рд░ рдХреЛ рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝ рдХрд░рдиреЗ рдХрд╛ рдзреНрдпрд╛рди рд░рдЦреЗрдЧрд╛ред рдпрд╣ рдирд┐рд░реНрднрд░рддрд╛ рдЗрдВрдЬреЗрдХреНрд╢рди рдореЙрдбрд▓ рдХрд╛ рд╕рд╛рд░ рд╣реИред
рдирд┐рд░реНрднрд░рддрд╛ рдЗрдВрдЬреЗрдХреНрд╢рди рдФрд░ рд╕реЗрд╡рд╛ рд▓реЛрдХреЗрдЯрд░ рдХреЗ рдмреАрдЪ рдЕрдВрддрд░ (рдпрджрд┐ рдХреЛрдИ рд╣реЛ) рдХреНрдпрд╛ рд╣реИ? рджреЛрдиреЛрдВ рдореЙрдбрд▓ рдирд┐рд░реНрднрд░рддрд╛ рд╡реНрдпреБрддреНрдХреНрд░рдо рд╕рд┐рджреНрдзрд╛рдВрдд рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдореЗрдВ рдЕрдЪреНрдЫреЗ рд╣реИрдВред рд╕реЗрд╡рд╛ рд▓реЛрдХреЗрдЯрд░ рдореЙрдбрд▓ рдореМрдЬреВрджрд╛ рдХреЛрдб рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╕рд╛рди рд╣реИ, рдпрд╣ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрди рдХреЗ рд▓рд┐рдП рдордЬрдмреВрд░ рдХрд┐рдП рдмрд┐рдирд╛, рд╕рдордЧреНрд░ рдбрд┐рдЬрд╛рдЗрди рдХреЛ рдХрдордЬреЛрд░ рдмрдирд╛рддрд╛ рд╣реИред рдЗрд╕реА рдХрд╛рд░рдг рд╕реЗ, рд╕реЗрд╡рд╛ рд▓реЛрдХреЗрдЯрд░ рдореЙрдбрд▓ рдкрд░ рдЖрдзрд╛рд░рд┐рдд рдХреЛрдб рдбрд┐рдкреЗрдВрдбреЗрдВрд╕реА рдЗрдВрдЬреЗрдХреНрд╢рди рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╕рдордХрдХреНрд╖ рдХреЛрдб рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдкрдврд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдмрджрддрд░ рд╣реИред
рдирд┐рд░реНрднрд░рддрд╛ рдЗрдВрдЬреЗрдХреНрд╢рди рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рджрд┐рдЦрд╛рддрд╛ рд╣реИ рдХрд┐ рдХрдХреНрд╖рд╛ рдореЗрдВ (рдпрд╛ рд╡рд┐рдзрд┐) рдЗрдВрдЬреЗрдХреНрд╢рди рд▓рдЧрд╛рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдФрд░ рдмрд╛рдж рдореЗрдВ рдХрд┐рд╕ рдкреНрд░рдХрд╛рд░ рдХрд╛ рд╣реЛрдЧрд╛ред рдЗрд╕ рдХрд╛рд░рдг рд╕реЗ, рдХреЛрдб рдХреНрд▓реАрдирд░ рдФрд░ рдЕрдзрд┐рдХ рдкрдардиреАрдп рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред ASP.NET MVC рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреНрдпрд╛?

ASP.NET MVC рдореЗрдВ рдирд┐рд░реНрднрд░рддрд╛ рдЗрдВрдЬреЗрдХреНрд╢рди

ASP.NET MVC рдХрдИ рд╡рд┐рд╕реНрддрд╛рд░ рдмрд┐рдВрджреБрдУрдВ рдХреЗ рд▓рд┐рдП рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдХреБрд▓ рдорд┐рд▓рд╛рдХрд░ рдпрд╣ рдирд┐рд░реНрднрд░рддрд╛ рдЗрдВрдЬреЗрдХреНрд╢рди рдХреЗ рд▓рд┐рдП рд╡реНрдпрд╛рдкрдХ рд╕рдорд░реНрдерди рдкреНрд░рджрд╛рди рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реИред рд╕реЗрд╡рд╛ рд▓реЛрдХреЗрдЯрд░ рд╢рд╛рдпрдж рд╕рдмрд╕реЗ рдкреНрд░рднрд╛рд╡реА рддрд░реАрдХрд╛ рд╣реИ рддрд╛рдХрд┐ рдореМрдЬреВрджрд╛ рдкреНрд░рдгрд╛рд▓реА рдХреЛ рдирдП рд╡рд┐рд╕реНрддрд╛рд░ рдмрд┐рдВрджреБрдУрдВ рдХреЗ рд╕рд╛рде рдЕрдзрд┐рдХ рд╢рд┐рдерд┐рд▓ рд░реВрдк рд╕реЗ рдЬреЛрдбрд╝рд╛ рдЬрд╛ рд╕рдХреЗ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдХрдо рд╕реЗ рдХрдо рдШреБрд╕рдкреИрда рд╕рдорд╛рдзрд╛рди рд╣реИред рд╕реЗрд╡рд╛ рд▓реЛрдХреЗрдЯрд░ рдПрдХ рдмреНрд▓реИрдХ рдмреЙрдХреНрд╕ рдХреА рддрд░рд╣ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рдЬрд┐рд╕реЗ рдЖрдк рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рдмрд┐рдВрджреБ рдкрд░ рд╕реЗрдЯ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕реЗ рдирд┐рдпрдо рджреЗрддреЗ рд╣реИрдВ, рдХреНрдпрд╛ рдЕрдиреБрдмрдВрдз рдЖрд╡рд╢реНрдпрдХ рд╣реИрдВ, рдФрд░ рдЙрдиреНрд╣реЗрдВ рдХреИрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВред ASP.NET MVC рдореЗрдВ рдХрдИ рд╡рд┐рд╕реНрддрд╛рд░ рдмрд┐рдВрджреБ рд╣реИрдВ рдЬреЛ рд╕рд┐рд╕реНрдЯрдо рдХреЗ рдШрдЯрдХ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЬрд┐рдиреНрд╣реЗрдВ рдХрд╕реНрдЯрдо рд▓реЛрдЧреЛрдВ рдХреЗ рд╕рд╛рде рднреА рдмрджрд▓рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рддрд╛рд▓рд┐рдХрд╛ ASP.NET MVC 3 рдкрд░ рдЬреНрдЮрд╛рдд рд╡рд┐рд╕реНрддрд╛рд░ рдмрд┐рдВрджреБрдУрдВ рдХреЛ рд╕реВрдЪреАрдмрджреНрдз рдХрд░рддреА рд╣реИред

рдкреНрд░рджрд╛рддрд╛рд╡рд┐рд╡рд░рдг
рдХрд╛рд░реНрд░рд╡рд╛рдИ рдХрд░рдиреЗ рд╡рд╛рд▓рд╛// рдирд┐рдпрдВрддреНрд░рдХ рд╡рд░реНрдЧ рдирд┐рдпрдВрддреНрд░рдХ рдХреЗ рдирд┐рд░реНрдорд╛рдг рдореЗрдВред InInInvoker = new YourActionInvoker ();
рдирд┐рдпрдВрддреНрд░рдХ рдХрд╛рд░рдЦрд╛рдирд╛// Global.asax рдореЗрдВ, Application_Start
var factory = new YourControllerFactory (); рдирд┐рдпрдВрддреНрд░рдХрдмреЗрд▓реНрдЯ.рдХреНрд░рд╛рдВрддрд┐.рд╕рд┐рдЯрдХрдВрдЯреНрд░реЛрд▓рд░рдлреИрдХреНрдЯрд░реА (рдХрд╛рд░рдЦрд╛рдирд╛);
рд╢рдмреНрджрдХреЛрд╢ рдореВрд▓реНрдпреЛрдВ// Global.asax рдореЗрдВ,
Application_Start var providerFactory = рдирдпрд╛ YourValueProviderFactory (); ValueProviderFactories.Factories.Add (рдкреНрд░рджрд╛рддрд╛Factory);
рдореЙрдбрд▓ рдмрд╛рдВрдзрдиреЗ рдХреА рдорд╢реАрди// Global.asax рдореЗрдВ, Application_Start ModelBinders.Binders.Add (рдЯрд╛рдЗрдкрдСрдлрд╝ (YourType), рдирдпрд╛ YourTypeBinder ());
рдореЙрдбрд▓ рдмрд╛рдЗрдВрдбрд░ рдкреНрд░рджрд╛рддрд╛// Global.asax рдореЗрдВ, Application_Start var рдкреНрд░рджрд╛рддрд╛ = рдирдпрд╛ YourModelBinderProvider (); ModelBinderProviders.BinderProviders.Add (рдкреНрд░рджрд╛рддрд╛);
рдореЙрдбрд▓ рдореЗрдЯрд╛рдбреЗрдЯрд╛// Global.asax рдореЗрдВ, Application_Start ModelMetadataProviders.Current = new YourModelMetadataProvider ();
рдореЙрдбрд▓ рд╕рддреНрдпрд╛рдкрдирдХрд░реНрддрд╛// Global.asax рдореЗрдВ, Application_Start var validator = new YourModelValidatorProvider (); ModelValidatorProviders.Providers.Add (рд╕рддреНрдпрд╛рдкрдирдХрд░реНрддрд╛);
TempData// рдХрдВрдЯреНрд░реЛрд▓рд░ рдХреНрд▓рд╛рд╕ рдХреЗ рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдореЗрдВ
рдХрдВрдЯреНрд░реЛрд▓рд░ред рдЯреЗрдореНрдкрдбрд╛рдЯрд╛рдкреНрд░реЛрд╡рд╛рдЗрдбрд░ = рдиреНрдпреВ рдпреЛрд░рдЯреЗрдореНрдкрдбрдкрд╛рдкреНрд░реЛрдЗрдбрд░ ();
рдЗрдВрдЬрди рджреЗрдЦреЗрдВ// Global.asax рдореЗрдВ, Application_Start ViewEngines.Engines.Clear (); ViewEngines.Engines.Add (рдирдпрд╛ YourViewEngine ());


рдЗрдВрдЬрди рджреЗрдЦреЗрдВ // Global.asax рдореЗрдВ, Application_Start ViewEngines.Engines.Clear (); ViewEngines.Engines.Add (рдирдпрд╛ YourViewEngine ());
ASP.NET MVC 3 рд╕реЗ рдкрд╣рд▓реЗ, рдХрд╕реНрдЯрдо рдШрдЯрдХреЛрдВ рдХреЛ рдкрдВрдЬреАрдХреГрдд рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рдорд╛рдирдХ рддрд░реАрдХрд╛ рдирд╣реАрдВ рдерд╛ред рддрд╛рд▓рд┐рдХрд╛ 1 рдореЗрдВ рд╕реВрдЪреАрдмрджреНрдз рдкреНрд░рддреНрдпреЗрдХ рдШрдЯрдХ рдХреЛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдореЗрдВ рдПрдХреАрдХрд░рдг рдХреЗ рд▓рд┐рдП рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рдПрдкреАрдЖрдИ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рд╕рдВрд╕реНрдХрд░рдг 3 рд╕реЗ рд╢реБрд░реВ рд╣реЛрдХрд░, ASP.NET MVC рдЖрд░реНрдмрд┐рдЯрд░ рдирд┐рд░реНрднрд░рддрд╛ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдирдП (рд╡реИрдХрд▓реНрдкрд┐рдХ) рдореЙрдбрд▓ рдкреЗрд╢ рдХрд░рддрд╛ рд╣реИред рд╕рд┐рд╕реНрдЯрдо рдШрдЯрдХреЛрдВ рдХреЛ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдк рддрд╛рд▓рд┐рдХрд╛ 1 рдореЗрдВ рд╡рд░реНрдгрд┐рдд рдкрде рдХрд╛ рдЕрдиреБрд╕рд░рдг рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдпрд╛ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдХреЗ рд▓рд┐рдП рдПрдХ рдЗрдВрдЬреЗрдХреНрд╢рди (рдирд┐рд░реНрднрд░рддрд╛ рдЗрдВрдЬреЗрдХреНрд╢рди) рдкрдВрдЬреАрдХреГрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред ASP.NET рд░рдирдЯрд╛рдЗрдо рдирд┐рд░реНрднрд░рддрд╛ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдПрдЧрд╛ рдФрд░ рдЖрд╡рд╢реНрдпрдХ рд╣реЛрдиреЗ рдкрд░ рд╕рдВрджрд░реНрднрд┐рдд рдХрд░реЗрдЧрд╛ред
рдирд┐рд░реНрднрд░рддрд╛ рд╕рдВрдХрд▓реНрдк ASP.NET MVC рдХреЛрдб рдХреЗ рд╕рд╛рде рдПрдХреАрдХреГрдд рдПрдХ рд▓реЛрдХреЗрдЯрд░ рд╕реЗрд╡рд╛ рд╣реИред рдЖрд░реНрдмрд┐рдЯреНрд░реЗрдЯрд░ рдореМрдЬреВрджрд╛ (рдмрдбрд╝реЗ) рдХреЛрдб рдореЗрдВ рдирд┐рд░реНрднрд░рддрд╛ рдЙрд▓рдЯрд╛ рд╕рд┐рджреНрдзрд╛рдВрдд рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХрд╛ рдПрдХ рддрд░реАрдХрд╛ рд╣реИред рдХреЛрдб рдХреЗ рдЖрдХрд╛рд░ рдФрд░ рдЬрдЯрд┐рд▓рддрд╛ рдХреЗ рд▓рд┐рдП, рдирд┐рд░реНрднрд░рддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдХрдо рдЙрдкрдпреБрдХреНрдд рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕рдХреЗ рд▓рд┐рдП рд░рд╛рдЬреНрдп рдПрдкреАрдЖрдИ рдореЗрдВ рд╡рд┐рднрд┐рдиреНрди рд╕реНрддрд░реЛрдВ рдкрд░ рдмрджрд▓рд╛рд╡ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред рдпрд╣ рдХреЗрд╡рд▓ ASP.NET MVC рдЬреИрд╕реА рдореВрд▓ рдмрд╛рддреЗрдВ рдХрд╛ рд╡рд┐рдХрд▓реНрдк рдирд╣реАрдВ рд╣реИред рдЖрдЗрдП ASP.NET MVC рдореЗрдВ рдордзреНрдпрд╕реНрде рдирд┐рд░реНрднрд░рддрд╛ рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзрд┐рдХ рдЬрд╛рдиреЗрдВред

рдЕрдкрдиреА рдирд┐рд░реНрднрд░рддрд╛ рд░рд┐рдЬрд╝реЙрд▓реНрд╡рд░ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдирд╛

ASP.NET MVC рдбрд┐рдкреЗрдВрдбреЗрдВрд╕реА рд░рд┐рдЬрд╝реЙрд▓реНрд╡рд░ рдПрдХ рдСрдмреНрдЬреЗрдХреНрдЯ рд╣реИ рдЬреЛ рдирд┐рдореНрди рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИ
 { Object GetService(Type serviceType); IEnumerable<Object> GetServices(Type serviceType); } 

рдХрдирд╡рд░реНрдЯрд░ рдХреЛ рдЖрдк рдЬреЛ рддрд░реНрдХ рд▓рд┐рдЦрддреЗ рд╣реИрдВ, рд╡рд╣ рдкреВрд░реА рддрд░рд╣ рдЖрдкрдХреЗ рдКрдкрд░ рд╣реИред рдпрд╣ рд╕рд░рд▓, рддрд░реНрдХ рдХреА рддрд░рд╣ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдЬреЛ рдПрдХ рдкреНрд░рдХрд╛рд░ рдХреЗ рд╡рд┐рд╡рд░рдг рдХреА рдЬрд╛рдВрдЪ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдкреНрд░рдХрд╛рд░ рдХреЗ рдирд╡ рдирд┐рд░реНрдорд┐рдд рдЙрджрд╛рд╣рд░рдг рджреЗрддрд╛ рд╣реИред рдпрд╣ рдЗрдВрд╕реНрдЯреЗрдВрд╕ рдмрдирд╛рдиреЗ, рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдлрд╝рд╛рдЗрд▓ рд╕реЗ рдЬрд╛рдирдХрд╛рд░реА рдкрдврд╝рдиреЗ рдпрд╛ рдкреНрд░рддрд┐рдмрд┐рдВрдм рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рдЕрдзрд┐рдХ рдЬрдЯрд┐рд▓ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рджреНрд╡рд╛рд░рд╛ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЕрдВрдд рдореЗрдВ, рдпрд╣ рдПрдХрддрд╛ рдпрд╛ рдХрд┐рд╕реА рдЕрдиреНрдп рдЖрдИрдУрд╕реА рдврд╛рдВрдЪреЗ рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдпрд╣рд╛рдБ рдПрдХ рдмрд╣реБрдд рд╣реА рд╕рд░рд▓ рд▓реЗрдХрд┐рди рдХрд╛рд░реНрдпрд╛рддреНрдордХ рд░реВрдкрд╛рдВрддрд░рдг рдЙрджрд╛рд╣рд░рдг рд╣реИ:
 public class SampleDependencyResolver : IDependencyResolver { public object GetService(Type serviceType) { if (serviceType == typeof(ISomeClass)) return new SomeClass(); : } public IEnumerable<object> GetServices(Type serviceType) { return Enumerable.Empty<Object>(); } } 

рдирд┐рдореНрди рдХреЛрдб рджрд┐рдЦрд╛рддрд╛ рд╣реИ рдХрд┐ рдирд┐рд░реНрднрд░рддрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрдирд╡рд░реНрдЯрд░ рдпреВрдирд┐рдЯреА (рдФрд░ рдлрд╝рд╛рдЗрд▓ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдореЗрдВ рдЗрд╕рдХрд╛ рдЕрдиреБрднрд╛рдЧ) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреИрд╕реЗ рдХрд░рддрд╛ рд╣реИред
 public class UnityDependencyResolver : IDependencyResolver { private readonly IUnityContainer _container; public UnityDependencyResolver() : this(new UnityContainer().LoadConfiguration()) { } public UnityDependencyResolver(IUnityContainer container) { _container = container; } public Object GetService(Type serviceType) { return _container.Resolve(serviceType); } public IEnumerable<Object> GetServices(Type serviceType) { return _container.ResolveAll(serviceType); } } 

рдЖрдк рдПрдХ ASP.NET MVC рд╕рдВрд░рдЪрдирд╛ рдХреЗ рд╕рд╛рде рдЕрдкрдиреА рдЕрдиреБрдорддрд┐рдпрд╛рдБ рджрд░реНрдЬ рдХрд░реЗрдВ DependencyResolver рд╡рд░реНрдЧ рдФрд░ SetResolver рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░
 protected void Application_Start() { // Prepare and configure the IoC container var container = new UnityContainer(); : // Create and register the resolver var resolver = new UnityDependencyResolver(container); DependencyResolver.SetResolver(resolver); } 

рдпрджрд┐ рдЖрдк рдЕрдиреБрдорддрд┐ рд╕реЗ IoC рдврд╛рдВрдЪреЗ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЖрдкрдХреЛ рдЗрд╕реЗ рдкрдВрдЬреАрдХреГрдд рдкреНрд░рдХрд╛рд░реЛрдВ рдХреА рд╕реВрдЪреА рдкреНрд░рджрд╛рди рдХрд░рдиреЗ рдХрд╛ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рддрд░реАрдХрд╛ рдЦреЛрдЬрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдпрджрд┐ рдЖрдк рдирд┐: рд╢реБрд▓реНрдХ рдХреЛрдб рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЗрд╕ рдЬрд╛рдирдХрд╛рд░реА рдХреЛ рдкрд╛рд╕ рдХрд░рдирд╛ рдкрд╕рдВрдж рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЖрдкрдХреЛ рдирд╛рдо рдмрдирд╛рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдЖрдИрдУрд╕реА рдХрдВрдЯреЗрдирд░ рдХреЛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдпрджрд┐ рдЖрдк рдПрдХрддрд╛ рдХреЗ рдирд┐рдпрдореЛрдВ рдХреЗ рдЕрдиреБрд╕рд╛рд░, web.config рдлрд╝рд╛рдЗрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ IoC рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рдЕрдиреБрдорддрд┐ рдХреЗ рд▓рд┐рдП рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП рд▓реЛрдбрд┐рдВрдЧ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдбреЗрдЯрд╛ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдореИрдВ рдзреНрдпрд╛рди рджреЗрддрд╛ рд╣реВрдВ рдХрд┐ рдпрджрд┐ рдЖрдкрдХреЛ IoC рдХреЗ рдХрд┐рд╕реА рдЕрд▓рдЧ рдврд╛рдВрдЪреЗ рдХреЛ рд▓рдХреНрд╖рд┐рдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ рддреЛ рдЖрдкрдХреЛ рдЗрд╕ рдХреЛрдб рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛ рд╕рдХрддреА рд╣реИред
рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рд░рд┐рдЬрд╝реЙрд▓реНрдпреВрд╢рди рдирд┐рд░реНрднрд░рддрд╛ рдПрдХ рдЖрдВрддрд░рд┐рдХ рдЙрдкрдХрд░рдг рд╣реИ рдЬрд┐рд╕реЗ рдбреЗрд╡рд▓рдкрд░реНрд╕ рд╕рд┐рд╕реНрдЯрдо рдШрдЯрдХреЛрдВ рдХреЗ рдмрдЬрд╛рдп рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рд╡реНрдпрдХреНрддрд┐рдЧрдд рдШрдЯрдХреЛрдВ рдХреЛ рддреИрдирд╛рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдирд┐рд░реНрднрд░рддрд╛ рдХрдирд╡рд░реНрдЯрд░ рдХреА рд╕реБрдВрджрд░рддрд╛ ASP.NET MVC рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реАрдорд┐рдд рд╣реИред рд╕рдордЭрдиреЗ рдпреЛрдЧреНрдп рд▓рдХреНрд╖реНрдпреЛрдВ рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрдиреНрд╡рд░реНрдЯрд░реНрд╕ рдХреЛ рдЬреНрдЮрд╛рдд рд╕реНрдерд╛рдиреЛрдВ рдкрд░ рдмреБрд▓рд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рджреВрд╕рд░реЗ рд╢рдмреНрджреЛрдВ рдореЗрдВ, рдпрджрд┐ ASP.NET MVC рдПрдХ рдХреИрд╢ рдХрдВрдЯреНрд░реЛрд▓рд░ рдмрдирд╛рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рд░реВрдкрд╛рдВрддрд░рдг рдХрд╛ рдХрд╛рд░рдг рдирд╣реАрдВ рдмрдирддрд╛ рд╣реИ, рддреЛ рд╣рдо рдЕрдкрдиреЗ рд╕рд╛рде рдирд┐рд░реНрдорд┐рдд рдХреИрд╢ рдХреЛ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ рдРрд╕рд╛ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛

рдпрд╣ рдкрддрд╛ рдЪрд▓рд╛ рдХрд┐ рдирд┐рд░реНрднрд░рддрд╛ рд░реВрдкрд╛рдВрддрд░рдг рдирд╛рдо рд╕реЗ рдЬреНрдпрд╛рджрд╛ рдХреБрдЫ рдирд╣реАрдВ рд╣реИ рдЬреЛ ASP.NET MVC рд╕реЗрд╡рд╛ рдХреА рдЦреЛрдЬ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдЖрдк рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдореЗрдВ рд╡реИрд╕реЗ рднреА рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреИрд╕реЗ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ? рдЗрд╕рдХрд╛ рдЙрддреНрддрд░ рдмрд╣реБрдд рд╕рд░рд▓ рд╣реИ, рдЖрдкрдХреЗ рдкрд╛рд╕ рдХреЗрд╡рд▓ рдПрдХ рдХрдирд╡рд░реНрдЯрд░ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдЬрд┐рд╕рдореЗрдВ рдЖрдкрдХреЛ рдЕрдкрдирд╛ рд╕рд╛рд░рд╛ рдХреЙрд╕реНрдЯреЛрдорд╛рдЗрдЬреЗрд╢рди рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП, рдЬреИрд╕реЗ рдЖрдк рдЪрд╛рд╣рддреЗ рд╣реИрдВред рдпрд╣рд╛рдВ рдирд┐рд░реНрднрд░рддрд╛ рд░реВрдкрд╛рдВрддрд░рдг рдХреЗ рд▓рд┐рдП рдереЛрдбрд╝рд╛ рдФрд░ рд╡рд┐рдХрд▓реНрдк рд╣реИ, рдЬрд┐рд╕рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдереЛрдбрд╝рд╛ рдЕрдзрд┐рдХ рдерд╛ред
 public class SampleDependencyResolver : IDependencyResolver { public object GetService(Type serviceType) { try { return serviceType == typeof(ModelMetadataProvider) ? new ExtendedAnnotationsMetadataProvider() : Activator.CreateInstance(serviceType); } catch { return null; } } public IEnumerable<object> GetServices(Type serviceType) { return Enumerable.Empty<object>(); } } 

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

рддреЛ рдХреНрдпрд╛ рдкрд░рд┐рд╡рд░реНрддрди рдпрд╛ рдЗрдВрдЬреЗрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ?

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

ps рдпрд╣ рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП рдореЗрд░рд╛ рдкрд╣рд▓рд╛ рдЕрдиреБрд╡рд╛рдж рд╣реИред

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


All Articles