Architecture-center: ProductCommandHandler (CQRS) рдФрд░ ProductRepository (рдкрд╛рд░рдВрдкрд░рд┐рдХ рдЖрд░реНрдХ) рдореЗрдВ рдХреНрдпрд╛ рдЕрдВрддрд░ рд╣реИ?

рдХреЛ рдирд┐рд░реНрдорд┐рдд 15 рдирд╡ре░ 2019  ┬╖  5рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: MicrosoftDocs/architecture-center

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

public class ProductRepository {
  void AddNewProduct(Product newProduct) {
    ...
  }
  void RateProduct(int productId, int userId, int rating) {
    var product = repository.Find(productId);
    if (product != null)
    {
      product.RateProduct(userId, rating);
      repository.Save(product);
    }
  }
}

рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рд╡рд┐рд╡рд░рдг

рдЗрд╕ рдЕрдиреБрднрд╛рдЧ рдХреЛ рд╕рдВрдкрд╛рджрд┐рдд рди рдХрд░реЗрдВред

Pri1 architecture-centesvc assigned-to-author cloud-fundamentalsubsvc product-question triaged

рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА

@martinmthomas рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХрдорд╛рдВрдб рд╣реИрдВрдбрд▓рд░ рдПрдХ рднрдВрдбрд╛рд░ рдирд╣реАрдВ рд╣реИред рдпрд╣ рдПрдХ рднрдВрдбрд╛рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред

рдХрдорд╛рдВрдб рд╣реИрдВрдбрд▓рд░ "рдЙрдкрдпреБрдХреНрдд рд╣реЛрдиреЗ рдкрд░ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдЖрджреЗрд╢реЛрдВ рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рдиреЗ" рдХреЗ рд▓рд┐рдП рд╣реИред рдЙрджрд╛рд╣рд░рдг рдореЗрдВ ProductsCommandHandler рд╡рд░реНрдЧ рдХреЛ рдЗрд╕рдХреЗ рдирд┐рд░реНрдорд╛рддрд╛ рдореЗрдВ IRepository<Product> рдкреНрд░рд╛рдкреНрдд рд╣реЛрддрд╛ рд╣реИред

рдорд╛рди рд▓реЗрдВ рдХрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЙрддреНрдкрд╛рдж рдХреЛ 5555 рд╕реЗ 4 рд╕реНрдЯрд╛рд░ рд░реЗрдЯ рдХрд░рдиреЗ рдЬрд╛ рд░рд╣рд╛ рд╣реИред

  • рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдПрдХ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рджреЗрдЦрддрд╛ рд╣реИред рдорд╛рди рд▓реЗрдВ рдХрд┐ рдПрдХ рд╡реЗрдм рдкреЗрдЬ (рдПрдХ рд╕реНрдерд╛рдиреАрдп .exe рдкреНрд░реЛрдЧреНрд░рд╛рдо рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдпрд╛ рдЬреЛ рднреА рд╣реЛ, рдЖрдЗрдП рдПрдХ рд╡реЗрдмрд╕рд╛рдЗрдЯ рдХреА рдХрд▓реНрдкрдирд╛ рдХрд░реЗрдВ)ред
  • рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдПрдХ рдмрдЯрди рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░рддрд╛ рд╣реИред рдорд╛рди рд▓реЗрдВ рдХрд┐ рдпрд╣ рдПрдХ AJAX POST рдХреЛ рдбреЗрдЯрд╛ {"product":"5555","stars":4} рд╕рд╛рде рд░реВрдЯ/рджрд░ рдкрд░ рдЬрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЯреНрд░рд┐рдЧрд░ рдХрд░рддрд╛ рд╣реИ
  • POST рдорд╛рд░реНрдЧ рдореЗрдВ рдПрдХ рдирд┐рдпрдВрддреНрд░рдХ рд╣реИред рдпрд╣ рдирд┐рдпрдВрддреНрд░рдХ "рд░рд╛рдЗрдЯ" рдСрдкрд░реЗрд╢рди рд╕реЗ рдЬреБрдбрд╝рд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ POST рдХреЙрд▓ рд╕реЗ рдЖрддрд╛ рд╣реИред
  • рд╢рд╛рд╕реНрддреНрд░реАрдп рджреГрд╖реНрдЯрд┐рдХреЛрдг рдореЗрдВ рдпрд╣рд╛рдВ рдирд┐рдпрдВрддреНрд░рдХ рдХреЗрд╡рд▓ рдХреНрд▓рд╛рд╕рд┐рдХ рдЙрддреНрдкрд╛рдж рднрдВрдбрд╛рд░ рдХреЛ рд▓реЛрдб рдХрд░реЗрдЧрд╛ рдФрд░ рдЙрддреНрдкрд╛рдж рдХреЛ 5555 рд▓реЛрдб рдХрд░реЗрдЧрд╛ред рдлрд┐рд░ рдЙрддреНрдкрд╛рдж рдХреЛ "рдЕрдм рдЖрдкрдХреЛ 4 рд╕реНрдЯрд╛рд░ рд░реЗрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ" рдФрд░ рд╕рд╣реЗрдЬреЗрдВред
  • рдЗрд╕ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдореЗрдВ, рдирд┐рдпрдВрддреНрд░рдХ RateProduct рдХрдорд╛рдВрдб рдмрдирд╛рддрд╛ рд╣реИ рдФрд░ рдЙрддреНрдкрд╛рдж 5555, рд╕рд┐рддрд╛рд░реЗ 4 рдореЗрдВ рднрд░рддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдореЗрдВ рдпрд╣ рдпрд╣ рднреА рднрд░рддрд╛ рд╣реИ рдХрд┐ рд░реЗрдЯрд┐рдВрдЧ рдХреМрди рд╣реИред
  • рдЗрд╕ рд╕рдордп, рдирд┐рдпрдВрддреНрд░рдХ "рдХрдорд╛рдВрдб рднреЗрдЬрддрд╛ рд╣реИ" рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдореЙрдбрд▓ред рдЖрдкрдХреЗ рдкрд╛рд╕ рдпрд╣рд╛рдВ 2 рд╡рд┐рдХрд▓реНрдк рд╣реИрдВ: рдПрдХ рдХрдорд╛рдВрдб рд╣реИрдВрдбрд▓рд░ рдХреЛ рдЖрдордВрддреНрд░рд┐рдд рдХрд░реЗрдВ рдпрд╛ рдЗрд╕реЗ рдХрддрд╛рд░рдмрджреНрдз рдХрд░реЗрдВред
  • рдХрд╣реЗрдВ рдХрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдХрддрд╛рд░ рдирд╣реАрдВ рд╣реИред рдлрд┐рд░ рдЖрдк рдЕрдкрдиреЗ рдирд┐рдпрдВрддреНрд░рдХ рдореЗрдВ CommandHandler рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ (рд╢рд╛рдпрдж рдирд┐рд░реНрднрд░рддрд╛ рдЗрдВрдЬреЗрдХреНрд╢рди рджреНрд╡рд╛рд░рд╛) рдФрд░ рдмрд╕ рд╡рд╣рд╛рдВ рдХрдорд╛рдВрдб рд░рдЦреЗрдВ: h.Handle(c); рдЬрд╣рд╛рдВ c рд░реЗрдЯрдкреНрд░реЛрдбрдХреНрдЯ рдХрдорд╛рдВрдб рд╣реИред
  • рдХрд╣реЛ рдЖрдкрдХреЗ рдкрд╛рд╕ рдПрдХ рдХрддрд╛рд░ рд╣реИред рдлрд┐рд░ рдЖрдк рдЕрдкрдиреЗ рдирд┐рдпрдВрддреНрд░рдХ (рд╢рд╛рдпрдж рдирд┐рд░реНрднрд░рддрд╛ рдЗрдВрдЬреЗрдХреНрд╢рди рджреНрд╡рд╛рд░рд╛) рдореЗрдВ рдХрддрд╛рд░ рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рд╡рд╣рд╛рдВ рдХреЗрд╡рд▓ рдЖрджреЗрд╢ рдХреЛ рд╕рдВрд▓рдЧреНрди рдХрд░рддреЗ рд╣реИрдВ: q.Queue(c);
  • рдЗрд╕ рдЕрдВрддрд┐рдо рд╕реНрдерд┐рддрд┐ рдореЗрдВ, рдХрддрд╛рд░ рдХрд╛ рд╢реНрд░реЛрддрд╛ рдХрдорд╛рдВрдб рдХреЛ рдХрддрд╛рд░ рд╕реЗ рдмрд╛рд╣рд░ рд▓реЗ рдЬрд╛рдПрдЧрд╛ рдФрд░ рдЗрд╕рдХреЗ рдмрдЬрд╛рдп рдХрдорд╛рдВрдб рд╣реИрдВрдбрд▓рд░ рдХреЛ рдХреЙрд▓ рдХрд░реЗрдЧрд╛ред
  • рдПрдХ рдерд┐рд░реНрд╕ рд╡рд┐рдХрд▓реНрдк (рдЕрдиреБрд╢рдВрд╕рд┐рдд) рдХреЗ рд░реВрдк рдореЗрдВ, рдЖрдкрдХрд╛ рдирд┐рдпрдВрддреНрд░рдХ рдпрд╣ рдирд╣реАрдВ рдЪреБрдирддрд╛ рд╣реИ рдХрд┐ рдХрдорд╛рдВрдб рдХреЛ рд╕рдордХрд╛рд▓рд┐рдХ рд░реВрдк рд╕реЗ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИ (рд╣реИрдВрдбрд▓рд░ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ) рдпрд╛ рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рд░реВрдк рд╕реЗ (рдХрддрд╛рд░ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ) рд▓реЗрдХрд┐рди рдПрдХ "рдЬреЗрдиреЗрд░рд┐рдХ рджреГрд╖реНрдЯрд┐рдХреЛрдг" рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП рдЬреЛ рдХрдорд╛рдВрдб рдмрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реИ рд░рдЦреЗ рдЧрдПред рдорд╛рди рд▓реЗрдВ рдХрд┐ рдХрдорд╛рдВрдб рдмрд╕ рдмреА рд╣реИ, рддреЛ рдЖрдк рдмреА рдХрд░реЗрдВрдЧреЗред рднреЗрдЬреЗрдВ (рд╕реА); рдЬрд╣рд╛рдВ c рд░реЗрдЯрдкреНрд░реЛрдбрдХреНрдЯ рдХрдорд╛рдВрдб рд╣реИред
  • рдЗрд╕ рддреАрд╕рд░реЗ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреЗ рд╕рд╛рде рдЖрдк рдХрдорд╛рдВрдб рд╣реИрдВрдбрд▓рд░ рдХреЛ рдмрд╕ рдХреЗ рдЕрдВрдд рдореЗрдВ рд░рдЦрддреЗ рд╣реИрдВ, рдФрд░ рдЖрдк рдорд┐рдбрд▓рд╡реЗрдпрд░ рдХреЛ "рдмрд╕ рд╕реЗ рдХрдорд╛рдВрдб рдирд┐рдХрд╛рд▓рдиреЗ рдФрд░ рдЗрд╕реЗ рдХрддрд╛рд░ рдореЗрдВ рд░рдЦрдиреЗ" рдХреЗ рд▓рд┐рдП рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рддреЛ 3 рд╡рд┐рдХрд▓реНрдк: рдП) рд╣реИрдВрдбрд▓рд░ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ, рдмреА) рдХрддрд╛рд░ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ, рд╕реА) рдПрдХ рдмрд╕ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ рдФрд░ рдЗрд╕реЗ рд╣реИрдВрдбрд▓рд░ рдпрд╛ рдХрддрд╛рд░ рдореЗрдВ рдЖрджреЗрд╢ рднреЗрдЬрдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рд▓реЗрдВред

рдЖрдк рдЬреЛ рднреА рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХрд░рддреЗ рд╣реИрдВ ... "рдПрдХ рд╢рд╛рд╕реНрддреНрд░реАрдп рднрдВрдбрд╛рд░" рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдореБрдЦреНрдп рдЕрдВрддрд░ рдпрд╣ рд╣реИ рдХрд┐ рдЖрдк рдХрднреА рднреА рдирд┐рдпрдВрддреНрд░рдХ рдореЗрдВ рд╣реА рднрдВрдбрд╛рд░ рдХрд╛ рдЖрд╣реНрд╡рд╛рди рдирд╣реАрдВ рдХрд░ рд░рд╣реЗ рд╣реИрдВред рдирд┐рдпрдВрддреНрд░рдХ "рд╕рдВрд╕реНрдерд╛рдУрдВ рдХреЛ рдкреНрд░рдмрдВрдзрд┐рдд рдХрд░рдиреЗ рдХреЗ рддрд░реАрдХреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдирд╣реАрдВ рдЬрд╛рдирддрд╛" (рд╢рд╛рд╕реНрддреНрд░реАрдп рднрдВрдбрд╛рд░) рд▓реЗрдХрд┐рди рдпрд╣ рдЬрд╛рдирддрд╛ рд╣реИ рдХрд┐ "рд╕рдВрд╕реНрдерд╛рдУрдВ рдХреЛ рдХрд░рдиреЗ рдХреЗ рдЗрд░рд╛рджреЗ рдХреИрд╕реЗ рдкреНрд░рдмрдВрдзрд┐рдд рдХрд░реЗрдВ" (рдХрдорд╛рдВрдб рд╣реИрдВрдбрд▓рд░)ред

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

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

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

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

рдпрджрд┐ рдЖрдк рдЖрджреЗрд╢реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдпрд╣ рд▓реЗрдЦрди рдирд┐рдпрдВрддреНрд░рдХ рдХреЛ рдХреЛрдИ рдЖрдкрддреНрддрд┐ рдирд╣реАрдВ рд╣реИред рд╡реЗрдм, рдПрдкреАрдЖрдИ рдФрд░ рд╕реАрдПрд▓рдЖрдИ рд╕рднреА рдХрдорд╛рдВрдб рд╣реИрдВрдбрд▓рд░ рдХреЛ "рдХрдорд╛рдВрдб" рднреЗрдЬреЗрдВрдЧреЗ (рдпрд╛ рддреЛ рд╕реАрдзреЗ, рдХрддрд╛рд░ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдпрд╛ рдХрдорд╛рдВрдб рдмрд╕ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЬреЛ рд╣реИрдВрдбрд▓рд░ рдпрд╛ рдХрддрд╛рд░ рдореЗрдВ рдмрджрд▓реЗ рдореЗрдВ рд░реВрдЯ рдХрд░реЗрдЧрд╛) рдФрд░ рд╡реЗ рднреВрд▓ рдЬрд╛рддреЗ рд╣реИрдВред рдлрд┐рд░ рдХрдорд╛рдВрдб рд╣реИрдВрдбрд▓рд░ рдпрд╣ рддрдп рдХрд░реЗрдЧрд╛ рдХрд┐ рдЖрдкрдХреЗ рд╕реНрд░реЛрдд рдХреЛрдб рдХреЗ рдХреЗрдВрджреНрд░реАрдХреГрдд рдФрд░ рдЫреЛрдЯреЗ рдмрд┐рдВрджреБ рдореЗрдВ "RateProductCommand" рдХреЗ рд╕рд╛рде рдХреНрдпрд╛ рдХрд░рдирд╛ рд╣реИ, рдпрд╣ рдЬрд┐рд╕ рддрд░рд╣ рд╕реЗ рдЗрд╕реЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛрдб рд╕реЗ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЗрд╕ рдкреНрд░рдХрд╛рд░ mantainability рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ред

рдлрд┐рд░ рд╣реИрдВрдбрд▓рд░ рддрдп рдХрд░реЗрдЧрд╛ рдХрд┐ рдХреНрдпрд╛ рдпрд╣ рдЙрддреНрдкрд╛рдж рд░рд┐рдкреЛрдЬрд┐рдЯрд░реА рдпрд╛ "рдЙрддреНрдкрд╛рдж рдХреА рд░реЗрдЯрд┐рдВрдЧ" рдХреЛ рд╕реНрдЯреЛрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдиреНрдп рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреБрдХреНрдд рд╣реИ рдпрд╛ рдирд╣реАрдВред

рддреЛ, рдЬрд╡рд╛рдм рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП:

рдХрдорд╛рдВрдбрд╣реИрдВрдбрд▓рд░ => рдХрд╛ рдПрдВрдЯрд╛рдЗрдЯреНрд╕ рд╕реЗ рдХреЛрдИ рд▓реЗрдирд╛-рджреЗрдирд╛ рдирд╣реАрдВ рд╣реИред рдпрд╣ "рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рдЗрд░рд╛рджреЗ" рдХреЛ рд╕рдВрднрд╛рд▓рддрд╛ рд╣реИ (рдЬреЛ рдЕрдВрддрддрдГ рд╕рдВрд╕реНрдерд╛рдУрдВ рдХреЛ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╕рдВрднрд╡рддрдГ рдХрдорд╛рдВрдб рд╣реИрдВрдбрд▓рд░ рдПрдХ рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ)ред
рд░рд┐рдкреЛрдЬрд┐рдЯрд░реА => рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рдЗрдХрд╛рдИ рдХреЗ рд▓рд┐рдП рд╡рд╛рд╕реНрддрд╡рд┐рдХ рднрдВрдбрд╛рд░рдгред

рдорджрдж рдХрд░рдиреЗ рдХреА рдЙрдореНрдореАрдж рд╣реИред
рдЬрд╝рд╛рд╡реАред

рд╕рднреА 5 рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

@martinmthomas рдЖрдкрдХреЗ рдкреНрд░рд╢реНрди рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж! рд╣рдо рд╕рдореАрдХреНрд╖рд╛ рдХрд░реЗрдВрдЧреЗ рдФрд░ рдЙрдкрдпреБрдХреНрдд рдХреЗ рд░реВрдк рдореЗрдВ рдПрдХ рдЕрджреНрдпрддрди рдкреНрд░рджрд╛рди рдХрд░реЗрдВрдЧреЗред

@MikeWasson рдпрд╣рд╛рдБ рдХреЛрдИ рд╡рд┐рдЪрд╛рд░?

AB#160217 - рд░рд┐рдкреЛрд░реНрдЯрд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж - рдЗрд╕ рдореБрджреНрджреЗ рдХреА рд╕рдореАрдХреНрд╖рд╛ рдХреА рдЬрд╛ рд░рд╣реА рд╣реИ

@martinmthomas рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХрдорд╛рдВрдб рд╣реИрдВрдбрд▓рд░ рдПрдХ рднрдВрдбрд╛рд░ рдирд╣реАрдВ рд╣реИред рдпрд╣ рдПрдХ рднрдВрдбрд╛рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред

рдХрдорд╛рдВрдб рд╣реИрдВрдбрд▓рд░ "рдЙрдкрдпреБрдХреНрдд рд╣реЛрдиреЗ рдкрд░ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдЖрджреЗрд╢реЛрдВ рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рдиреЗ" рдХреЗ рд▓рд┐рдП рд╣реИред рдЙрджрд╛рд╣рд░рдг рдореЗрдВ ProductsCommandHandler рд╡рд░реНрдЧ рдХреЛ рдЗрд╕рдХреЗ рдирд┐рд░реНрдорд╛рддрд╛ рдореЗрдВ IRepository<Product> рдкреНрд░рд╛рдкреНрдд рд╣реЛрддрд╛ рд╣реИред

рдорд╛рди рд▓реЗрдВ рдХрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЙрддреНрдкрд╛рдж рдХреЛ 5555 рд╕реЗ 4 рд╕реНрдЯрд╛рд░ рд░реЗрдЯ рдХрд░рдиреЗ рдЬрд╛ рд░рд╣рд╛ рд╣реИред

  • рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдПрдХ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рджреЗрдЦрддрд╛ рд╣реИред рдорд╛рди рд▓реЗрдВ рдХрд┐ рдПрдХ рд╡реЗрдм рдкреЗрдЬ (рдПрдХ рд╕реНрдерд╛рдиреАрдп .exe рдкреНрд░реЛрдЧреНрд░рд╛рдо рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдпрд╛ рдЬреЛ рднреА рд╣реЛ, рдЖрдЗрдП рдПрдХ рд╡реЗрдмрд╕рд╛рдЗрдЯ рдХреА рдХрд▓реНрдкрдирд╛ рдХрд░реЗрдВ)ред
  • рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдПрдХ рдмрдЯрди рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░рддрд╛ рд╣реИред рдорд╛рди рд▓реЗрдВ рдХрд┐ рдпрд╣ рдПрдХ AJAX POST рдХреЛ рдбреЗрдЯрд╛ {"product":"5555","stars":4} рд╕рд╛рде рд░реВрдЯ/рджрд░ рдкрд░ рдЬрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЯреНрд░рд┐рдЧрд░ рдХрд░рддрд╛ рд╣реИ
  • POST рдорд╛рд░реНрдЧ рдореЗрдВ рдПрдХ рдирд┐рдпрдВрддреНрд░рдХ рд╣реИред рдпрд╣ рдирд┐рдпрдВрддреНрд░рдХ "рд░рд╛рдЗрдЯ" рдСрдкрд░реЗрд╢рди рд╕реЗ рдЬреБрдбрд╝рд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ POST рдХреЙрд▓ рд╕реЗ рдЖрддрд╛ рд╣реИред
  • рд╢рд╛рд╕реНрддреНрд░реАрдп рджреГрд╖реНрдЯрд┐рдХреЛрдг рдореЗрдВ рдпрд╣рд╛рдВ рдирд┐рдпрдВрддреНрд░рдХ рдХреЗрд╡рд▓ рдХреНрд▓рд╛рд╕рд┐рдХ рдЙрддреНрдкрд╛рдж рднрдВрдбрд╛рд░ рдХреЛ рд▓реЛрдб рдХрд░реЗрдЧрд╛ рдФрд░ рдЙрддреНрдкрд╛рдж рдХреЛ 5555 рд▓реЛрдб рдХрд░реЗрдЧрд╛ред рдлрд┐рд░ рдЙрддреНрдкрд╛рдж рдХреЛ "рдЕрдм рдЖрдкрдХреЛ 4 рд╕реНрдЯрд╛рд░ рд░реЗрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ" рдФрд░ рд╕рд╣реЗрдЬреЗрдВред
  • рдЗрд╕ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдореЗрдВ, рдирд┐рдпрдВрддреНрд░рдХ RateProduct рдХрдорд╛рдВрдб рдмрдирд╛рддрд╛ рд╣реИ рдФрд░ рдЙрддреНрдкрд╛рдж 5555, рд╕рд┐рддрд╛рд░реЗ 4 рдореЗрдВ рднрд░рддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдореЗрдВ рдпрд╣ рдпрд╣ рднреА рднрд░рддрд╛ рд╣реИ рдХрд┐ рд░реЗрдЯрд┐рдВрдЧ рдХреМрди рд╣реИред
  • рдЗрд╕ рд╕рдордп, рдирд┐рдпрдВрддреНрд░рдХ "рдХрдорд╛рдВрдб рднреЗрдЬрддрд╛ рд╣реИ" рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдореЙрдбрд▓ред рдЖрдкрдХреЗ рдкрд╛рд╕ рдпрд╣рд╛рдВ 2 рд╡рд┐рдХрд▓реНрдк рд╣реИрдВ: рдПрдХ рдХрдорд╛рдВрдб рд╣реИрдВрдбрд▓рд░ рдХреЛ рдЖрдордВрддреНрд░рд┐рдд рдХрд░реЗрдВ рдпрд╛ рдЗрд╕реЗ рдХрддрд╛рд░рдмрджреНрдз рдХрд░реЗрдВред
  • рдХрд╣реЗрдВ рдХрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдХрддрд╛рд░ рдирд╣реАрдВ рд╣реИред рдлрд┐рд░ рдЖрдк рдЕрдкрдиреЗ рдирд┐рдпрдВрддреНрд░рдХ рдореЗрдВ CommandHandler рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ (рд╢рд╛рдпрдж рдирд┐рд░реНрднрд░рддрд╛ рдЗрдВрдЬреЗрдХреНрд╢рди рджреНрд╡рд╛рд░рд╛) рдФрд░ рдмрд╕ рд╡рд╣рд╛рдВ рдХрдорд╛рдВрдб рд░рдЦреЗрдВ: h.Handle(c); рдЬрд╣рд╛рдВ c рд░реЗрдЯрдкреНрд░реЛрдбрдХреНрдЯ рдХрдорд╛рдВрдб рд╣реИред
  • рдХрд╣реЛ рдЖрдкрдХреЗ рдкрд╛рд╕ рдПрдХ рдХрддрд╛рд░ рд╣реИред рдлрд┐рд░ рдЖрдк рдЕрдкрдиреЗ рдирд┐рдпрдВрддреНрд░рдХ (рд╢рд╛рдпрдж рдирд┐рд░реНрднрд░рддрд╛ рдЗрдВрдЬреЗрдХреНрд╢рди рджреНрд╡рд╛рд░рд╛) рдореЗрдВ рдХрддрд╛рд░ рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рд╡рд╣рд╛рдВ рдХреЗрд╡рд▓ рдЖрджреЗрд╢ рдХреЛ рд╕рдВрд▓рдЧреНрди рдХрд░рддреЗ рд╣реИрдВ: q.Queue(c);
  • рдЗрд╕ рдЕрдВрддрд┐рдо рд╕реНрдерд┐рддрд┐ рдореЗрдВ, рдХрддрд╛рд░ рдХрд╛ рд╢реНрд░реЛрддрд╛ рдХрдорд╛рдВрдб рдХреЛ рдХрддрд╛рд░ рд╕реЗ рдмрд╛рд╣рд░ рд▓реЗ рдЬрд╛рдПрдЧрд╛ рдФрд░ рдЗрд╕рдХреЗ рдмрдЬрд╛рдп рдХрдорд╛рдВрдб рд╣реИрдВрдбрд▓рд░ рдХреЛ рдХреЙрд▓ рдХрд░реЗрдЧрд╛ред
  • рдПрдХ рдерд┐рд░реНрд╕ рд╡рд┐рдХрд▓реНрдк (рдЕрдиреБрд╢рдВрд╕рд┐рдд) рдХреЗ рд░реВрдк рдореЗрдВ, рдЖрдкрдХрд╛ рдирд┐рдпрдВрддреНрд░рдХ рдпрд╣ рдирд╣реАрдВ рдЪреБрдирддрд╛ рд╣реИ рдХрд┐ рдХрдорд╛рдВрдб рдХреЛ рд╕рдордХрд╛рд▓рд┐рдХ рд░реВрдк рд╕реЗ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИ (рд╣реИрдВрдбрд▓рд░ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ) рдпрд╛ рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рд░реВрдк рд╕реЗ (рдХрддрд╛рд░ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ) рд▓реЗрдХрд┐рди рдПрдХ "рдЬреЗрдиреЗрд░рд┐рдХ рджреГрд╖реНрдЯрд┐рдХреЛрдг" рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП рдЬреЛ рдХрдорд╛рдВрдб рдмрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реИ рд░рдЦреЗ рдЧрдПред рдорд╛рди рд▓реЗрдВ рдХрд┐ рдХрдорд╛рдВрдб рдмрд╕ рдмреА рд╣реИ, рддреЛ рдЖрдк рдмреА рдХрд░реЗрдВрдЧреЗред рднреЗрдЬреЗрдВ (рд╕реА); рдЬрд╣рд╛рдВ c рд░реЗрдЯрдкреНрд░реЛрдбрдХреНрдЯ рдХрдорд╛рдВрдб рд╣реИред
  • рдЗрд╕ рддреАрд╕рд░реЗ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреЗ рд╕рд╛рде рдЖрдк рдХрдорд╛рдВрдб рд╣реИрдВрдбрд▓рд░ рдХреЛ рдмрд╕ рдХреЗ рдЕрдВрдд рдореЗрдВ рд░рдЦрддреЗ рд╣реИрдВ, рдФрд░ рдЖрдк рдорд┐рдбрд▓рд╡реЗрдпрд░ рдХреЛ "рдмрд╕ рд╕реЗ рдХрдорд╛рдВрдб рдирд┐рдХрд╛рд▓рдиреЗ рдФрд░ рдЗрд╕реЗ рдХрддрд╛рд░ рдореЗрдВ рд░рдЦрдиреЗ" рдХреЗ рд▓рд┐рдП рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рддреЛ 3 рд╡рд┐рдХрд▓реНрдк: рдП) рд╣реИрдВрдбрд▓рд░ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ, рдмреА) рдХрддрд╛рд░ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ, рд╕реА) рдПрдХ рдмрд╕ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ рдФрд░ рдЗрд╕реЗ рд╣реИрдВрдбрд▓рд░ рдпрд╛ рдХрддрд╛рд░ рдореЗрдВ рдЖрджреЗрд╢ рднреЗрдЬрдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рд▓реЗрдВред

рдЖрдк рдЬреЛ рднреА рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХрд░рддреЗ рд╣реИрдВ ... "рдПрдХ рд╢рд╛рд╕реНрддреНрд░реАрдп рднрдВрдбрд╛рд░" рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдореБрдЦреНрдп рдЕрдВрддрд░ рдпрд╣ рд╣реИ рдХрд┐ рдЖрдк рдХрднреА рднреА рдирд┐рдпрдВрддреНрд░рдХ рдореЗрдВ рд╣реА рднрдВрдбрд╛рд░ рдХрд╛ рдЖрд╣реНрд╡рд╛рди рдирд╣реАрдВ рдХрд░ рд░рд╣реЗ рд╣реИрдВред рдирд┐рдпрдВрддреНрд░рдХ "рд╕рдВрд╕реНрдерд╛рдУрдВ рдХреЛ рдкреНрд░рдмрдВрдзрд┐рдд рдХрд░рдиреЗ рдХреЗ рддрд░реАрдХреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдирд╣реАрдВ рдЬрд╛рдирддрд╛" (рд╢рд╛рд╕реНрддреНрд░реАрдп рднрдВрдбрд╛рд░) рд▓реЗрдХрд┐рди рдпрд╣ рдЬрд╛рдирддрд╛ рд╣реИ рдХрд┐ "рд╕рдВрд╕реНрдерд╛рдУрдВ рдХреЛ рдХрд░рдиреЗ рдХреЗ рдЗрд░рд╛рджреЗ рдХреИрд╕реЗ рдкреНрд░рдмрдВрдзрд┐рдд рдХрд░реЗрдВ" (рдХрдорд╛рдВрдб рд╣реИрдВрдбрд▓рд░)ред

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

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

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

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

рдпрджрд┐ рдЖрдк рдЖрджреЗрд╢реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдпрд╣ рд▓реЗрдЦрди рдирд┐рдпрдВрддреНрд░рдХ рдХреЛ рдХреЛрдИ рдЖрдкрддреНрддрд┐ рдирд╣реАрдВ рд╣реИред рд╡реЗрдм, рдПрдкреАрдЖрдИ рдФрд░ рд╕реАрдПрд▓рдЖрдИ рд╕рднреА рдХрдорд╛рдВрдб рд╣реИрдВрдбрд▓рд░ рдХреЛ "рдХрдорд╛рдВрдб" рднреЗрдЬреЗрдВрдЧреЗ (рдпрд╛ рддреЛ рд╕реАрдзреЗ, рдХрддрд╛рд░ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдпрд╛ рдХрдорд╛рдВрдб рдмрд╕ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЬреЛ рд╣реИрдВрдбрд▓рд░ рдпрд╛ рдХрддрд╛рд░ рдореЗрдВ рдмрджрд▓реЗ рдореЗрдВ рд░реВрдЯ рдХрд░реЗрдЧрд╛) рдФрд░ рд╡реЗ рднреВрд▓ рдЬрд╛рддреЗ рд╣реИрдВред рдлрд┐рд░ рдХрдорд╛рдВрдб рд╣реИрдВрдбрд▓рд░ рдпрд╣ рддрдп рдХрд░реЗрдЧрд╛ рдХрд┐ рдЖрдкрдХреЗ рд╕реНрд░реЛрдд рдХреЛрдб рдХреЗ рдХреЗрдВрджреНрд░реАрдХреГрдд рдФрд░ рдЫреЛрдЯреЗ рдмрд┐рдВрджреБ рдореЗрдВ "RateProductCommand" рдХреЗ рд╕рд╛рде рдХреНрдпрд╛ рдХрд░рдирд╛ рд╣реИ, рдпрд╣ рдЬрд┐рд╕ рддрд░рд╣ рд╕реЗ рдЗрд╕реЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛрдб рд╕реЗ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЗрд╕ рдкреНрд░рдХрд╛рд░ mantainability рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ред

рдлрд┐рд░ рд╣реИрдВрдбрд▓рд░ рддрдп рдХрд░реЗрдЧрд╛ рдХрд┐ рдХреНрдпрд╛ рдпрд╣ рдЙрддреНрдкрд╛рдж рд░рд┐рдкреЛрдЬрд┐рдЯрд░реА рдпрд╛ "рдЙрддреНрдкрд╛рдж рдХреА рд░реЗрдЯрд┐рдВрдЧ" рдХреЛ рд╕реНрдЯреЛрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдиреНрдп рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреБрдХреНрдд рд╣реИ рдпрд╛ рдирд╣реАрдВред

рддреЛ, рдЬрд╡рд╛рдм рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП:

рдХрдорд╛рдВрдбрд╣реИрдВрдбрд▓рд░ => рдХрд╛ рдПрдВрдЯрд╛рдЗрдЯреНрд╕ рд╕реЗ рдХреЛрдИ рд▓реЗрдирд╛-рджреЗрдирд╛ рдирд╣реАрдВ рд╣реИред рдпрд╣ "рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рдЗрд░рд╛рджреЗ" рдХреЛ рд╕рдВрднрд╛рд▓рддрд╛ рд╣реИ (рдЬреЛ рдЕрдВрддрддрдГ рд╕рдВрд╕реНрдерд╛рдУрдВ рдХреЛ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╕рдВрднрд╡рддрдГ рдХрдорд╛рдВрдб рд╣реИрдВрдбрд▓рд░ рдПрдХ рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ)ред
рд░рд┐рдкреЛрдЬрд┐рдЯрд░реА => рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рдЗрдХрд╛рдИ рдХреЗ рд▓рд┐рдП рд╡рд╛рд╕реНрддрд╡рд┐рдХ рднрдВрдбрд╛рд░рдгред

рдорджрдж рдХрд░рдиреЗ рдХреА рдЙрдореНрдореАрдж рд╣реИред
рдЬрд╝рд╛рд╡реАред

рдЬреИрд╕рд╛ рдХрд┐ @xmontero рдиреЗ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рд╣реИ,

рдпрджрд┐ рдЖрдк рдХрдорд╛рдВрдб рдХреЛ рдХреНрд╡реЗрд░реА рд╕реЗ рдЕрд▓рдЧ рд░рдЦрддреЗ рд╣реИрдВ, рддреЛ рдЖрдкрдиреЗ рдЕрдкрдиреЗ рдЖрд╡реЗрджрди рдореЗрдВ CQRS рдбрд┐рдЬрд╝рд╛рдЗрди рдкреИрдЯрд░реНрди рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рд╣реИред рдпрд╣ рдЖрдкрдХреЛ рд▓реЗрдЦреЛрдВ рдореЗрдВ рдЙрд▓реНрд▓рд┐рдЦрд┐рдд CQRS рдХреЗ рд╕рднреА рд▓рд╛рднреЛрдВ рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреА рджрд┐рд╢рд╛ рдореЗрдВ рд▓реЗ рдЬрд╛рддрд╛ рд╣реИред

рдХреНрдпрд╛ рдпрд╣ рдкреГрд╖реНрда рдЙрдкрдпреЛрдЧреА рдерд╛?
0 / 5 - 0 рд░реЗрдЯрд┐рдВрдЧреНрд╕

рд╕рдВрдмрдВрдзрд┐рдд рдореБрджреНрджреЛрдВ

t2kx picture t2kx  ┬╖  4рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

JannieSA picture JannieSA  ┬╖  7рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

joslat picture joslat  ┬╖  4рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

adrianwells picture adrianwells  ┬╖  5рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

brshallo picture brshallo  ┬╖  16рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ