рд╕рдВрднрд╡рддрдГ, рд╣рд░ рдХреЛрдИ рдЬрд┐рд╕рдиреЗ рдХрдо рд╕реЗ рдХрдо рдПрдХ рдмрд╛рд░ CQRS рдФрд░ DDD рдХреЗ рд╡рд┐рд╖рдп рдХреЗ рд╕рд╛рде рдЕрдВрддрд░-рд╕реВрддреНрд░рд┐рдд рдХрд┐рдпрд╛ рд╣реИ, рдиреЗ рдЗрд╡реЗрдВрдЯ рд╕реЛрд░реНрд╕рд┐рдВрдЧ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реБрдирд╛ред рдпрд╣ рдПрдХ рдбреЗрдЯрд╛ рд╕реНрдЯреЛрд░реЗрдЬ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рдЕрдВрддрд┐рдо рдкрд░рд┐рдгрд╛рдо рдХреЗ рдмрдЬрд╛рдп рдХреБрдЫ рдЗрдХрд╛рдИ рдХреЗ рд╕рд╛рде рд╣реЛрдиреЗ рд╡рд╛рд▓реА рдШрдЯрдирд╛рдУрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд░рд┐рдХреЙрд░реНрдб рдХреА рдПрдХ рд╢реНрд░реГрдВрдЦрд▓рд╛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХреА рдЬрд╛рддреА рд╣реИред рдорд╛рд░реНрдЯрд┐рди рдлрд╛рдЙрд▓рд░ рдХреА рд╡реЗрдмрд╕рд╛рдЗрдЯ рдкрд░ рдПрдХ
рд╡рд┐рд╕реНрддреГрдд рд╡рд┐рд╡рд░рдг рд╣реИ , рд▓реЗрдХрд┐рди рд╣рдо рдЖрдзрд╛рд░, рдореБрдЦреНрдп "рдХреБрдХреАрдЬрд╝", рд╕рд╛рде рд╣реА рдЗрд╕рдХреЗ рдЖрд╡реЗрджрди рдореЗрдВ рд╕рдорд╕реНрдпрд╛рдУрдВ рдкрд░ рдзреНрдпрд╛рди рджреЗрдВрдЧреЗред
рдЖрдзрд╛рд░
рдкреНрд░рдореБрдЦ рддрдВрддреНрд░ рдЬреЛ рд╣рдореЗрдВ рд╡рд┐рднрд┐рдиреНрди рдЙрдкрдпреЛрдЧреА рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдмрдирд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреЗ рд╣реИрдВ, рд╡реЗ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣реИрдВ:
- рдкреНрд░рддреНрдпреЗрдХ рдШрдЯрдирд╛ рдХреЛ рдПрдХ рдирд╛рдо рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬреЛ рдЙрд╕рдХреЗ рдореВрд▓реНрдп рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддрд╛ рд╣реИ, рдЕрд░реНрдерд╛рддреНред рд╢рдмреНрджрд╛рд░реНрде рд╣реИред рд╕рд╣рдордд рд╣реВрдБ, " рдЗрд╡реЗрдВрдЯ 1 " рдФрд░ " рд╢рд┐рдк рд╕реЗрд▓ " рдХреЗ рдмреАрдЪ рдмрд╣реБрдд рдмрдбрд╝рд╛ рдЕрдВрддрд░ рд╣реИред
- рдПрдХ рдЗрдХрд╛рдИ рдХреЗ рд▓рд┐рдП рдШрдЯрдирд╛рдУрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдкрд░ рдХреЛрдИ рдкреНрд░рддрд┐рдмрдВрдз рдирд╣реАрдВ рд╣реИред рддрджрдиреБрд╕рд╛рд░, рдирдИ рдШрдЯрдирд╛рдПрдВ рдкреНрд░рддрд┐рдмрд┐рдВрдмрд┐рдд рдХрд░ рд╕рдХрддреА рд╣реИрдВ, рд╕рд╛рде рд╣реА рд╕рд╛рде рдирдП рдкреНрд░рдХрд╛рд░ рдХреА рдкреНрд░рддрд┐рдмрджреНрдз рдХреНрд░рд┐рдпрд╛рдПрдВ, рдФрд░ рдореМрдЬреВрджрд╛ рд▓реЛрдЧреЛрдВ рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░, рдХрд╣ рд╕рдХрддреА рд╣реИрдВ, рдЕрдкрдиреЗ 2 рд╡реЗрдВ рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ рдПрдХ рдирдИ рд╕рдВрдкрддреНрддрд┐ рдХреЛ рдЬреЛрдбрд╝рд╛ред
- рдЬреЛ рдШрдЯрдирд╛рдПрдБ рдШрдЯреА рд╣реИрдВ, рд╡реЗ рдЕрдкрд░рд┐рд╡рд░реНрддрдиреАрдп рд╣реИрдВред
"Pechenyushki"
рд╕реНрд╡рд╛рднрд╛рд╡рд┐рдХ рд░реВрдк рд╕реЗ, рдПрдХ рдмрд╛рд░ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд▓рд╛рдЧреВ рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж, рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдЗрд╕рдореЗрдВ рдмрд╣реБрдд рд╣реА "рдЖрдИрдЯреА" рд╣реИ, рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП рдЦреЗрд▓ рдореЛрдордмрддреНрддреА рдХреЗ рд▓рд╛рдпрдХ рд╣реИред
рдШрдЯрдирд╛ рдХрд╛ рдЗрддрд┐рд╣рд╛рд╕
рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЗрд╡реЗрдВрдЯ рд╕реЛрд░реНрд╕рд┐рдВрдЧ рдЙрди рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рдкрдирд╛ рд╣реИ рдЬреЛ рд╕рдм рдХреБрдЫ "рдХреИрд╕реЗ рдФрд░ рдХреНрдпреЛрдВ", "рдХреНрдпрд╛ рдФрд░ рдХрдм" рдХреЛ рдпрд╛рдж рд░рдЦрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ рд╣реБрдЖред рдорд╛рди рд▓реАрдЬрд┐рдП рдХрд┐ рдпрд╣ рдПрдХ рд░рд┐рдХреЙрд░реНрдб рдХрд╛ рдСрдбрд┐рдЯ рд╣реИ, рдХреЗрд╡рд▓ "рдХреНрдпреЛрдВ" рдЬрд╛рдирдХрд╛рд░реА рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рдХреЗ рдмреЗрд╣рддрд░ рд╣реИред рдореБрдЭреЗ рдпрд╛рдж рд╣реИ рдХрд┐ рдЧреНрд░реЗрдЧ рдпрдВрдЧ рдиреЗ рдЕрдкрдиреА рдкреНрд░рд╕реНрддреБрддрд┐рдпреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдерд╛:
рдмреИрдВрдХ рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдЙрдирдХреЗ рдЧреНрд░рд╛рд╣рдХ рдХрд╣рд╛рдВ рд░рд╣рддреЗ рд╣реИрдВ рдФрд░ рдПрдХ рджрд┐рди рдбрд╛рдХ рдкрддреЗ рдореЗрдВ рд╕реЗ рдПрдХ рдХрд╛ рдкрд░рд┐рд╡рд░реНрддрди рд╣реЛрддрд╛ рд╣реИред рдХрд┐рд╕реА рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рддреЗ рд╕рдордп, рд╣рдо рдЕрдзрд┐рдХрддрдо рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рд░рд┐рдХреЙрд░реНрдб рдЕрдкрдбреЗрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдпрджрд┐ рдСрдбрд┐рдЯ рдЬреБрдбрд╝рд╛ рд╣реБрдЖ рд╣реИ, рддреЛ рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░ рд╣рдо рдкрд┐рдЫрд▓реЗ рд╕рднреА рдореВрд▓реНрдпреЛрдВ рдХреЗ рдЗрддрд┐рд╣рд╛рд╕ рдХреЛ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВред рд▓реЗрдХрд┐рди рдХреНрдпрд╛ рд╣рдо рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдпрд╣ рдХреНрдпреЛрдВ рдмрджрд▓ рдЧрдпрд╛ рд╣реИ: рд╢рд╛рдпрдж рдпрд╣ рдореВрд▓ рдЧрд▓рддреА рдереА? рдпрд╛ рд╢рд╛рдпрдж рдЧреНрд░рд╛рд╣рдХ рджреВрд╕рд░реА рдЬрдЧрд╣ рдЪрд▓реЗ рдЧрдП? рдЗрд╡реЗрдВрдЯ рд╕реЛрд░реНрд╕рд┐рдВрдЧ рдХреА рдорджрдж рд╕реЗ, рд╣рдо рд╕рд┐рд░реНрдл рдЗрд╕ рд╕рд╡рд╛рд▓ рдХрд╛ рдЬрд╡рд╛рдм рджреЗ рд╕рдХрддреЗ рд╣реИрдВ, рдХреНрдпреЛрдВрдХрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ 2 рдИрд╡реЗрдВрдЯ рд╣реЛрдВрдЧреЗ: рдХреНрд▓рд╛рдЗрдВрдЯ рдореВрд╡реНрдб , рдлрд┐рдХреНрд╕реНрдб рдПрдбреНрд░реЗрд╕ рдПрд░рд░ ред
рдкреНрд░рдХреНрд╖реЗрдкрдг
рд╕реНрд╡рд╛рднрд╛рд╡рд┐рдХ рд░реВрдк рд╕реЗ, рдЪреВрдВрдХрд┐ рдЗрдХрд╛рдИ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕рднреА рдЙрдкрдпреЛрдЧреА рдЬрд╛рдирдХрд╛рд░реА рдШрдЯрдирд╛рдУрдВ рдХреА рдзрд╛рд░рд╛ рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рд╣реЛрддреА рд╣реИ, рддреЛ рдЖрдк рдЗрд╕реЗ рд╕реАрдзреЗ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗред рдпреВрдЖрдИ рдХреЗ рд▓рд┐рдП, рд╣рдореЗрдВ рдлреНрд▓реИрдЯ рдореЙрдбрд▓ (рдЕрдиреБрдорд╛рди) рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рдЬрд┐рд╕реЗ рд╣рдо рд╕рд┐рд░реНрдл рдЗрд╡реЗрдВрдЯ рд╣реИрдВрдбрд▓рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдмрдирд╛рддреЗ рд╣реИрдВ рдЬрд┐рд╕реЗ рдбреЛрдиреЙрд░реНрдореЗрд▓рд╛рдЗрдЬрд╝рд░ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╕рдВрдкрддреНрддрд┐ рддрдереНрдп рдпрд╣ рд╣реИ рдХрд┐ рдЗрд╕ рддрд░рд╣ рдХреЗ рдПрдХ рд╣реИрдВрдбрд▓рд░ рдХреЛ рдмрджрд▓рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рдЬрдм рдФрд░ рдЬреИрд╕рд╛ рдЪрд╛рд╣реЗрдВ рддрдм рдЬреЛрдбрд╝рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдХрд┐рд╕реА рднреА рд╕рдордп, рдкреНрд░рдХреНрд╖реЗрдкрдг "рдмрд╛рд╣рд░ рдлреЗрдВрдХ рджрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ", рд╢реБрд░реБрдЖрдд рд╕реЗ рд╕рднреА рдШрдЯрдирд╛рдУрдВ рдХреЛ рдЦреЗрд▓реЗрдВ рдФрд░ рдПрдХ рдирдпрд╛ рддреИрдпрд╛рд░ рд╣реЛред рдПрдХ рдЫреЛрдЯрд╛ рдХреЛрдб рдЙрджрд╛рд╣рд░рдг:
public void Consume (ShipArrived message) { readModel.Dock.Ships.Add(message.Ship); } public void Consume (ShipDeparted message) { readModel.Dock.Ships.Remove(message.Ship); }
рдмреЗрд╢рдХ, рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЗ рд▓рд┐рдП рдЕрдиреБрдорд╛рдиреЛрдВ рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдШрдЯрдирд╛ рд╡рд┐рдХреГрддреАрдХрд░рдг рд╡рд┐рднрд┐рдиреНрди рд░рд┐рдкреЛрд░реНрдЯреЛрдВ рдХреЗ рдирд┐рд░реНрдорд╛рдг рдФрд░ рдШрдЯрдирд╛ рдЦрдЯреНрдЯрд╛ рд╕рдВрд╕реНрдерд╛рдУрдВ рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╢рдХреНрддрд┐рд╢рд╛рд▓реА рдЙрдкрдХрд░рдг рд╣реИред
рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдЙрдиреНрдореБрдЦ рдпреВрдЖрдИ
рддрд╛рд▓рд┐рдХрд╛рдУрдВ рдореЗрдВ рд╕рд╛рдорд╛рдиреНрдп рдбреЗрдЯрд╛ рдХреЗ рд╕рд╛рде рдореБрдЦреНрдп рдбреЗрдЯрд╛ рд╡реЗрдпрд░рд╣рд╛рдЙрд╕ (рд╕рддреНрдп рдХрд╛ рд╕реНрд░реЛрдд) рдХреА рдЬрдЧрд╣, рдФрд░ рдЗрд╡реЗрдВрдЯ рд░рд┐рдХреЙрд░реНрдб рдХреЗ рд╕рд╛рде рдЙрди рдкрд░ CRUD рд╕рдВрдЪрд╛рд▓рди, рдбрд┐рдЬрд╛рдЗрди рдХреЗ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрди рдХреЛ рдзрдХреНрдХрд╛ рджреЗрддрд╛ рд╣реИред рдпрд╣ CRUD рд╢реИрд▓реА рдХреА рдШрдЯрдирд╛рдУрдВ рдХреЗ рд░реВрдк рдореЗрдВ рд▓рд╛рднрджрд╛рдпрдХ рдирд╣реАрдВ рд╣реИ рддрдм рдЙрдирдХреЗ рд╢рдмреНрджрд╛рд░реНрде рдФрд░ рдЬреЛ рд╣реЛ рд░рд╣рд╛ рд╣реИ рдЙрд╕рдХреЗ рдкреНрд░рддрд┐ рд▓рдЧрд╛рд╡ рдХрд╛ рд╕рд╛рд░рд╛ рдЕрд░реНрде рдЦреЛ рдЬрд╛рддрд╛ рд╣реИред рддреЛ рдРрд╕реЗ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИ рдЬрд╣рд╛рдВ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЗрдХрд╛рдИ рдкрд░ рдЫреЛрдЯреЗ рдкрд░рдорд╛рдгреБ рдХреНрд░рд┐рдпрд╛ рдХрд░рддрд╛ рд╣реИред рдпрд╛рдиреА рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдбрд┐рдЬрд╝рд╛рдЗрди рд╡рд░реНрдХрдлрд╝реНрд▓реЛ рд╕рдВрдЪрд╛рд▓рд┐рдд рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рди рдХрд┐ рдбреЗрдЯрд╛ рдЗрдирдкреБрдЯ-рдЖрдзрд╛рд░рд┐рддред
рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рдпрд╣ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдХреЗ рд╕рд╛рде рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рдХрд╛рдо рдХреЛ рдмреЗрд╣рддрд░ рдмрдирд╛рдиреЗ рдХреА рдкреНрд░рд╡реГрддреНрддрд┐ рдХреЗ рд╕рд╛рде рдореЗрд▓ рдЦрд╛рддрд╛ рд╣реИ рдФрд░ рдХрд╛рд░реНрд░рд╡рд╛рдИ рдХрд░рддреЗ рд╕рдордп рд╕рдВрдХреЗрддреЛрдВ рдХреЗ рд╕рд╛рде рдмрд╣реБ-рдкреГрд╖реНрда рдирд┐рд░реНрджреЗрд╢реЛрдВ рдХреЛ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд рдХрд░рддрд╛ рд╣реИ, рдЕрд░реНрдерд╛рддреНред рдЖрд╡реЗрджрди рд╕реЗ рд╣реА рд╕реАрдЦрдирд╛ред
рддрдХрдиреАрдХреА рдмрд┐рдВрджреБ
рдЗрд╕ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреЗ рд╕рд╛рде рддрдХрдиреАрдХреА рд░реВрдк рд╕реЗ рджрд┐рд▓рдЪрд╕реНрдк рдЙрдкрдпреЛрдЧрд┐рддрд╛рдУрдВ рдХреА рдПрдХ рдЬреЛрдбрд╝реА:
- рдЬрдм рдмрд╛рд╣рд░реА рдкреНрд░рдгрд╛рд▓рд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рдПрдХреАрдХреГрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдШрдЯрдирд╛рдУрдВ рдХреА рдПрдХ рдлрд╝рд┐рд▓реНрдЯрд░реНрдб рдзрд╛рд░рд╛ рдкреНрд░рд╕рд╛рд░рд┐рдд рдХреА рдЬрд╛ рд╕рдХрддреА рд╣реИред рдпрд╣ рдХреБрдЫ рдорд╛рдорд▓реЛрдВ рдореЗрдВ рдХрд╛рд░реНрдп рдХреЛ рд╕рд░рд▓ рдмрдирд╛ рд╕рдХрддрд╛ рд╣реИред
- рдЗрд╡реЗрдВрдЯ рд╕реНрдЯреЛрд░ рдХреЛ рдмрд╣реБрдд рддреЗрдЬ рдФрд░ рд╡рд┐рд╕реНрддрд╛рд░ рдпреЛрдЧреНрдп рдмрдирд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдИрд╡реЗрдВрдЯ рдЕрдкрд░рд┐рд╡рд░реНрддрд┐рдд рд╣реИрдВ рдФрд░ рдХреЗрд╡рд▓ рдЬреЛрдбрд╝реЗ рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВред
- рдЕрдиреБрдорд╛рди рднреВ-рдкреНрд░рддрд┐рдХреГрддрд┐ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВред
рд╕рдорд╕реНрдпрд╛рдУрдВ
рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рдЕрдиреБрдорд╛рди рд▓рдЧрд╛ рд╕рдХрддреЗ рд╣реИрдВ, рд╡реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИрдВред
рдирд░рдХ рдХреЗ рд▓рд┐рдП refactoring
рддреЛ, рд▓реЛ рдФрд░ рдирд┐рд╣рд╛рд░рдирд╛, рд╣рдорд╛рд░реА рдШрдЯрдирд╛рдПрдВ рдЕрдкрд░рд┐рд╡рд░реНрддрдиреАрдп рд╣реИрдВ, рдФрд░ рдЙрдирдХрд╛ рдкреНрд░рд╡рд╛рд╣ рдХреЗрд╡рд▓ рдкрд░рд┐рд╢рд┐рд╖реНрдЯ рд╣реИред рд╣рдореНрдо, рдЗрд╕рдХрд╛ рдХреНрдпрд╛ рдорддрд▓рдм рд╣реИ? рдФрд░ рдЗрд╕рдХрд╛ рдорддрд▓рдм рдпрд╣ рд╣реИ рдХрд┐ рдЬреЛ рднреА рдШрдЯрдирд╛ рдПрдХ рдмрд╛рд░ рд╣реБрдИ, рдЙрд╕реЗ
рд╣рдореЗрд╢рд╛ рдХреЗ рд▓рд┐рдП рдмрдирд╛рдП рд░рдЦрдирд╛ рдЪрд╛рд╣рд┐рдПред рдЙрдиреНрд╣реЗрдВ рди рддреЛ рдкреВрд░реНрд╡рд╡рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рди рд╣реА рд╣рдЯрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЖрдк рдШрдЯрдирд╛рдУрдВ рдХреЗ рдирдП рд╕рдВрд╕реНрдХрд░рдг рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ, рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рдХреНрд╖рддрд┐рдкреВрд░реНрддрд┐ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдИрд╡реЗрдВрдЯ - рдФрд░ рдпреЗ рд╕рднреА рдирдП рдФрд░ рдирдП рд╡рд░реНрдЧ рд╣реИрдВ рдЬрд┐рдиреНрд╣реЗрдВ рдореМрдЬреВрджрд╛ рд╣реИрдВрдбрд▓рд░ рдореЗрдВ рдЬреЛрдбрд╝рд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдФрд░ рдкреВрд░реЗ рдпреВрдирд┐рдЯ рдХреА рдЙрдкрдпреЛрдЧ рд╢реНрд░реГрдВрдЦрд▓рд╛ рдореЗрдВ рд▓реЗ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдпрд╣ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рд╕реЗ рдЧрд▓рддреА рдХрд░рдиреЗ рдХрд╛ рдЕрдзрд┐рдХрд╛рд░ рд▓реЗрдиреЗ рдХреЗ рд╕рдорд╛рди рд╣реИ, рдФрд░ рдЖрдкрдХреЗ рдкрд╛рд╕ "рд░реЛрд▓рдмреИрдХ" рдпреЛрдЬрдирд╛ рдирд╣реАрдВ рд╣реИред рдЬрдм рддрдХ рдЖрдк рдЗрд╕ рдмрд╛рдд рд╕реЗ рд╕рд╣рдордд рдирд╣реАрдВ рд╣реЛрддреЗ рд╣реИрдВ, рддрдм рддрдХ рдкрд┐рдЫрд▓реЗ рд╕реНрдиреИрдкрд╢реЙрдЯ рдХреЗ рд▓рд┐рдП рдЗрд╡реЗрдВрдЯ рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЛ рд╡рд╛рдкрд╕ рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реИ, рдЬрдм рддрдХ рдХрд┐ рдЖрдк рдЗрд╕ рдмрд╛рдд рд╕реЗ рд╕рд╣рдордд рди рд╣реЛрдВ :-)
рдирд╣реАрдВ, рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ, рд╣рдо рдореЗрдВ рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рдмрд╛рд╣рд░ рдмреЗрдХрд╛рд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдПрдХ рд╕реНрд▓реЗрдЬрд╣реИрдорд░, рдПрдХ рдкрдВрдЪрд░ рд▓реЗ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдореЗрдВ рд╣реБрдИ рдШрдЯрдирд╛рдУрдВ рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЗрд╕рд╕реЗ SQL рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рдПрдХ рдбреЗрдЯрд╛ рдлрд╝рд┐рдХреНрд╕ рдЬреИрд╕рд╛ рдбреЗрдЯрд╛ рдФрд░ рдЗрдВрдбреЗрдХреНрд╕ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░рдиреЗ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рдЕрдзрд┐рдХ рд╣реЛрдЧреАред
рд╕рд╛рд░рд╛рдВрд╢рд┐рдд рд╣реЛрдиреЗ рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдЗрд╡реЗрдВрдЯ рдореЙрдбрд▓ рдХреЛ рд╕рд╛рд╡рдзрд╛рдиреАрдкреВрд░реНрд╡рдХ рд╕реЛрдЪрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рдЦреАрдВрдЪрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рдФрд░ рдЖрдк рдЬреВрдирд┐рдпрд░ / рдордзреНрдп рдХреЛ рдЗрд╕рдХреЗ рдкрд╛рд╕ рдирд╣реАрдВ рдЬрд╛рдиреЗ рджреЗ рд╕рдХрддреЗред рдФрд░ рдЕрдЧрд░ рдШрдЯрдирд╛рдПрдВ рдЕрдиреНрдп рдШрдЯрдХреЛрдВ рдкрд░ рдЬрд╛рддреА рд╣реИрдВ ... рддреЛ рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рдмрд╛рд╣рд░реА рдФрд░ рдЖрдВрддрд░рд┐рдХ рдШрдЯрдирд╛рдУрдВ рдХреЗ рдмреАрдЪ рдЕрдВрддрд░ рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИ, рд╕рд╛рде рд╣реА рд╕рд╛рде рдЙрдирдХреА рдкрд░рд┐рднрд╛рд╖рд╛ рдХреЛ рдПрдХ рдЕрд▓рдЧ рднрдВрдбрд╛рд░ рдореЗрдВ рдмрдВрдж рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИред рдХреЗрд╡рд▓ NuGet рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд▓рд┐рдВрдХ рдХрд░реЗрдВред
рдХреЛрдИ рддреИрдпрд╛рд░ рдЙрдкрдХрд░рдг рдирд╣реАрдВ
рдЗрд╡реЗрдВрдЯ рд╕реЛрд░реНрд╕рд┐рдВрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП рд╡рд┐рдХрд╛рд╕ рд╢реБрд░реВ рдХрд░рдирд╛, рдЗрд╕ рддрдереНрдп рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рд░рд╣реЗрдВ рдХрд┐ рдШрдЯрдирд╛рдУрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд╕рднреА рдЙрдкрдХрд░рдг рдЦреБрдж рдХреЛ рд▓рд┐рдЦрдирд╛ рд╣реЛрдЧрд╛ред рдмреЗрд╢рдХ, рдЬреЛрдирд╛рдерди рдУрд▓рд┐рд╡рд░ рдХрд╛ рдПрдХ
рдЗрд╡реЗрдВрдЯрд╕реНрдЯреЛрд░ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдХреЗрд╡рд▓ рдПрдХ рдЫреЛрдЯрд╛ рд╕рд╛ рд╣рд┐рд╕реНрд╕рд╛ рд╣реИред рдЙрдиреНрд╣реЗрдВ рдкреНрд░рдмрдВрдзрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЛ рдЧреНрд░рд╛рдлрд╝рд┐рдХрд▓ рдФрд░ рд╕реЙрдлрд╝реНрдЯрд╡реЗрдпрд░ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА: рджреЗрдЦрдиреЗ рдФрд░ рдЦреЛрдЬ рдХрд░рдиреЗ, рдирд┐рд░реНрдорд╛рдг рдХрд░рдиреЗ рдФрд░ рдЕрдкрдбреЗрдЯ рдХрд░рдиреЗ, рдкрдврд╝рдиреЗ рдХреЗ рдЕрдиреБрдХреВрд▓рди рдХреЗ рд▓рд┐рдП рд╕реНрдиреИрдкрд╢реЙрдЯ рдмрдирд╛рдиреЗ рдЖрджрд┐ред
рдШрдЯрдирд╛рдУрдВ рдХреА рдкрд╛рд░рд╕реНрдкрд░рд┐рдХ рд░реВрдк рд╕реЗ рднрд░рдкрд╛рдИ
рдХрд╣рддреЗ рд╣реИрдВ, рдпрджрд┐ рдХреЛрдИ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╕рдорд╛рдЪрд╛рд░ рд╕реЗ рд╕рджрд╕реНрдпрддрд╛ рд╕рдорд╛рдкреНрдд рдХрд░ рд▓реЗрддрд╛ рд╣реИ, рдФрд░ рдлрд┐рд░ рд╕рджрд╕реНрдпрддрд╛ рд▓реЗрддрд╛ рд╣реИ ... рдФрд░ рдРрд╕рд╛ 50 рдмрд╛рд░ (рдкреВрд░реЗ рд╡рд░реНрд╖ рдореЗрдВ) рд╣реЛрддрд╛ рд╣реИред рдирддреАрдЬрддрди, рдХреЗрд╡рд▓ рд╡рд░реНрддрдорд╛рди рд╕реНрдерд┐рддрд┐ рд╣реИ рдХрд┐ рдпрд╣ рд╣рд╕реНрддрд╛рдХреНрд╖рд░рд┐рдд рдпрд╛ рд╕рджрд╕реНрдпрддрд╛ рд╕рдорд╛рдкреНрдд рд╣реИ рдФрд░ рд╕рдм рдХреБрдЫ рдареАрдХ рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдпрджрд┐ рдЖрдкрдХреЛ рдПрдХ рдирдИ рд░рд┐рдкреЛрд░реНрдЯ рдпрд╛ рдкреНрд░рдХреНрд╖реЗрдкрдг рдмрдирд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдЬрд╣рд╛рдВ рдЗрд╕ рдбреЗрдЯрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдРрд╕реА рдШрдЯрдирд╛рдУрдВ рдХреЗ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ рдмреЗрдХрд╛рд░ рд╕рдордп рд▓рдЧреЗрдЧрд╛, рд▓реЗрдХрд┐рди рдпрд╣ рдорд╢реАрди рдХреЛ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рд▓реЛрдб рдХрд░реЗрдЧрд╛ред
рд╕рдорд░реНрдерди
рдЗрд╡реЗрдВрдЯ рд╕реЛрд░реНрд╕рд┐рдВрдЧ рд╕рдорд╛рдзрд╛рди рдХреЛ рдмрдирд╛рдП рд░рдЦрдирд╛ рдорд╣рдВрдЧрд╛ рдФрд░ рдХрдард┐рди рд╣реИред рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдбрд┐рдЬрд╛рдЗрди рдЪрд░рдг рдореЗрдВ рдХрд╛рдлреА рд╕рдордп, рд╕рд╛рде рд╣реА рд╕рд╛рде рдмрдбрд╝реА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рд╡рд┐рднрд┐рдиреНрди рдШрдЯрдирд╛рдУрдВ рдХреЗ рдХрд╛рд░рдг рдЬреЛ рдкреНрд░рддреНрдпреЗрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдкреНрд░рдХрд╛рд░ рдХреЗ рдСрдкрд░реЗрд╢рди рдХреЗ рд▓рд┐рдП рд╢рдмреНрджрд╛рд░реНрде рдХрд╛ рдкрд╛рд▓рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрдирд╛рдП рдЬрд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред
рдирд┐рд╖реНрдХрд░реНрд╖
рдЬреИрд╕рд╛ рдХрд┐ рдореЗрд░реЗ рдПрдХ рдорд┐рддреНрд░ рдиреЗ рдХрд╣рд╛: "рд╣рдо рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЛ рд╣рд▓ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЙрдиреНрд╣реЗрдВ рдЕрдкрдиреЗ рд▓рд┐рдП рдЕрдзрд┐рдХ рдЖрд░рд╛рдорджрд╛рдпрдХ рд╡рд┐рдорд╛рди рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рддреЗ рд╣реИрдВред" рдЖрдк рдЗрд╡реЗрдВрдЯ рд╕реЛрд░реНрд╕рд┐рдВрдЧ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рднреА рдХрд╣ рд╕рдХрддреЗ рд╣реИрдВред рд╕рднреА рдХреЛ рдпрд╣ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рдХрд┐рд╕реА рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрд╕рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдпрд╛ рдирд╣реАрдВред
рд▓реЗрдХрд┐рди рдореИрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХрд╣ рд╕рдХрддрд╛ рд╣реВрдВ: рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдЕрдзреНрдпрдпрди рдХрд┐рдП рдЧрдП рд╕рдВрд╕реНрдерд╛рдиреЛрдВ рдХреЗ рд▓рд┐рдП рдЗрд╡реЗрдВрдЯ рд╕реЛрд░реНрд╕рд┐рдВрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ, рдФрд░ рдмрд┐рдВрджреБ, рдЙрд╕ рдкрд░ рдкреВрд░реА рдкреНрд░рдгрд╛рд▓реА рдмрдирд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рди рдХрд░реЗрдВред рдпрд╣ рдЙрдЪрд┐рдд рд╣реИ рдЬрдм рдпрд╣ рдкрд╣рд▓рд╛ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рд╢рд╛рдпрдж рдЗрд╕рдХрд╛ рджреВрд╕рд░рд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдирд╣реАрдВ рд╣реИред