рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ рдЬрд╣рд╛рдВ рдкреНрдпрд╛рдЬ рднрдВрдбрд╛рд░ рдФрд░ рдбреАрдбреАрдбреА рдореЗрдВ рд░рд┐рдкреЛрдЬрд┐рдЯрд░реА рдбрд╛рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП


рд╣реЗрд▓реЛ, рд╣реИрдмрд░ред рдореИрдВ рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдХрд┐ рдКрдкрд░ рдХреА рдЖрдХреГрддрд┐ рдореЗрдВ, рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдХрд╣рд╛рдВ рд░рдЦреА рдЧрдИ рд╣реИред рдбреАрдЖрдИрдкреА, рдЖрдИрдУрд╕реА рдФрд░ рдкрд░рд┐рдпреЛрдЬрдирд╛ рд╕рдВрд░рдЪрдирд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдереЛрдбрд╝рд╛ рдФрд░ рдЕрдзрд┐рдХред рдПрдХ рдорд╛рдирдХ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╣реИ рдЬрд┐рд╕рдХреЗ рдЕрдиреБрд╕рд╛рд░ IRepository рдЗрдВрдЯрд░рдлреЗрд╕ рдХреЛ рдбреЛрдореЗрди рдкрд░рдд рдореЗрдВ DomainServices рдореЗрдВ рдФрд░ Infrastructure рдореЗрдВ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рд╕рд╛рде рд╣рд╕реНрддрдХреНрд╖реЗрдк рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдпрд╣рд╛рдВ рд╣рдо рдорд╛рдирдХ рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдЬреЛ рдХреЗрд╡рд▓ рд╡рд╕реНрддреБрдУрдВ рдХрд╛ рдПрдХ рд╕рд╛рд░ рд╕рдВрдЧреНрд░рд╣ рд╣реИ рдЬреЛ рд▓реЗрдирджреЗрди рдФрд░ UnitOfWork рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдирд╣реАрдВ рдЬрд╛рдирддрд╛ рд╣реИ рдФрд░ рдЗрддрдиреЗ рдкрд░ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, IList рдФрд░ рдЗрд╕рдХрд╛ рд╕рд╛рдорд╛рдиреНрдп рд╕рдВрд╕реНрдХрд░рдг рдПрдХ рдЕрдореВрд░реНрдд рднрдВрдбрд╛рд░ рдХрд╛ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рд╣реИ)ред рдореИрдВ рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реВрдк рд╕реЗ рдЙрд╕рд╕реЗ рдЕрд╕рд╣рдордд рд╣реВрдВ рдХреНрдпреЛрдВрдХрд┐ рдЖрдорддреМрд░ рдкрд░ рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдПрдХ рд╡рд┐рд╢реЗрд╖ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рд▓рд┐рдП рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЗ рд╕рд╛рде рдЕрддрд┐рд╡реГрджреНрдзрд┐ рд╣реЛрддреА рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореИрдВрдиреЗ рдЙрдирдХреЗ рдЗрдВрдЯрд░рдлреЗрд╕ рдХреЛ ApplicationServices рдореЗрдВ рдбрд╛рд▓ рджрд┐рдпрд╛ред рдкрд╛рдареНрдпрдХреНрд░рдо рдХрд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдЗрдиреНрдлреНрд░рд╛рд╕реНрдЯреНрд░рдХреНрдЪрд░ рдкрд░рдд рдореЗрдВ рд░рд╣рддрд╛ рд╣реИред рдпрджрд┐ рдЖрдк рд░реБрдЪрд┐ рд░рдЦрддреЗ рд╣реИрдВ, рддреЛ рдмрд┐рд▓реНрд▓реА рдореЗрдВ рдЖрдкрдХрд╛ рд╕реНрд╡рд╛рдЧрдд рд╣реИред

рдЕрдХреНрд╕рд░ рд░реЙрдмрд░реНрдЯ рдорд╛рд░реНрдЯрд┐рди рдХреА рдкреБрд░рд╛рдиреА рддрд╕реНрд╡реАрд░ рд╕реЗ рдХрдИ рднреНрд░рдорд┐рдд рд╣реЛрддреЗ рд╣реИрдВ:

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

рдЗрд╕рд▓рд┐рдП, рдпрд╣ рдкрддрд╛ рдЪрд▓рд╛ рд╣реИ рдХрд┐ рдпрд╣ рдХреЗрд╡рд▓ Entities рдкрд░рддреЛрдВ рдХреЛ DomainServices рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред рдЦреИрд░, UseCases == ApplicationServicesред Gateways == UserPepository, EmailService, Loggerред рдФрд░ рдЕрдзрд┐рдХ рдкрдврд╝реЗрдВ рдпрд╣рд╛рдБ ред

  1. Serivice рдХрд┐рд╕реА рднреА рд╕реНрдЯреЗрдЯрд▓реЗрд╕ рдХреНрд▓рд╛рд╕ рд╣реИред InfrastructureService рдПрдХ рдПрдВрдЯреА-рдХрд░рдкреНрд╢рди рд▓реЙрдпрд░ рд╣реИ рдЬреЛ рдЖрдкрдХреЛ рдлрд╝рд╛рдЗрд▓ рд╕рд┐рд╕реНрдЯрдо, SMTP рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдФрд░, рдмреЗрд╢рдХ, ORM рдпрд╛ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рд╕реЗ рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрд▓рдЧ рдХрд░рддрд╛ рд╣реИ, рдЖрджрд┐ред
  2. Repository . . List Repository T[] ValueObject Entities. Repository InfrastructureService InfrastructureService Repository. : Logger, EmailSender.
  3. Repository InfrastructureService - EmailSender EmailService, FileService ( File.Open(тАж ) . .) .


рдпрд╣ рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рдЕрдореВрд░реНрдд рд╕реНрдерд╛рди рдХрд╣рд╛рдБ рд░рдЦрд╛ рдЬрд╛рдП, рд╣рдореЗрдВ рдбрд┐рдкреЗрдВрдбреЗрдВрд╕реА рдЗрдирд╡рд░реНрд╕рди рдПрдВрдб рдХрдВрдЯреНрд░реЛрд▓ рдСрдл рдХрдВрдЯреНрд░реЛрд▓ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реЛрдЪрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдЙрдирдХреЗ рдЕрдиреБрд╕рд╛рд░, рд╣рдорд╛рд░реЗ ApplicationService рдЗрдВрдлреНрд░рд╛рд╕реНрдЯреНрд░рдХреНрдЪрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдореБрдЭреЗ рдирд╣реАрдВ рдкрддрд╛ рдХрд┐ рдЗрд╕рдХрд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдЗрд╕ рддрд░рд╣ рд╕реЗ рдХреНрдпрд╛ рд╣реИ:
  1. рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░реЗрдВ рдЬреЛ рдЗрдиреНрдлреНрд░рд╛рд╕реНрдЯреНрд░рдХреНрдЪрд░ рдХреЛ рд▓рд╛рдЧреВ рдХрд░реЗрдЧрд╛ рдФрд░ рдЗрд╕рдХреЗ рд╕рд╛рде рдмрд╛рддрдЪреАрдд рдХрд░реЗрдЧрд╛ред
  2. рдмрд╕ рдПрдХреНрд╢рди рдФрд░ рдлрдВрдХ рдЬреИрд╕реЗ рдкреНрд░рддрд┐рдирд┐рдзрд┐рдпреЛрдВ рдХреЛ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░реЗрдВред


рд╡рд╛рдпрд╛ рдЗрдВрдЯрд░рдлреЗрд╕:

    interface IRepository
    {
        int Get();
    }

    class ApplicationService
    {
        private readonly IRepository _repository;

        public ApplicationService(IRepository repository)
        {
            _repository = repository;
        }

        public int GetInt() => _repository.Get();
    }

рдкреНрд░рддрд┐рдирд┐рдзрд┐рдпреЛрдВ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ:

    class ApplicationService
    {
        private readonly Func<int> _getIntFromDb;

        public ApplicationService(Func<int> getIntFromDb)
        {
            _getIntFromDb = getIntFromDb;
        }

        public int GetInt() => _getIntFromDb();
    }

рдЕрдм рдХреЛрдб рдХреА рд╕рдВрд░рдЪрдирд╛ рдХреИрд╕реЗ рдХрд░реЗрдВред рд╡рд┐рдЪрд╛рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рджреЛ рдорд╛рдорд▓реЗ рд╣реИрдВ:
  1. рд╕рдм рдХреБрдЫ рдлрд╝реЛрд▓реНрдбрд░реНрд╕ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рд╣реИред
  2. рд╕рдм рдХреБрдЫ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рд╣реИред

рд╢рдмреНрджрд╛рд╡рд▓реА рдХрд╛ рд╡рд┐рд╡рд░рдг рдпрд╣рд╛рдВ рдкрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ ред

рдПрдХ рд╣реА рдЖрд╡реЗрджрди рдХреЗ рднреАрддрд░ рдлрд╝реЛрд▓реНрдбрд░


рд╕реНрдиреЗрдХрдЧреИрдо рдХреЛрдб рдЙрджрд╛рд╣рд░рдг


рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рджреНрд╡рд╛рд░рд╛


рд╣рдордиреЗ InfrastructureServices (IRepository) рдЗрдВрдЯрд░рдлреЗрд╕ рдХреЛ ApplicationServices рд▓рд╛рдЗрдмреНрд░реЗрд░реА, рдФрд░ Infrastructure рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдореЗрдВ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди (рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА) рдбрд╛рд▓ рджрд┐рдпрд╛ред рдХрд┐рд╕реА рд╡реНрдпрдХреНрддрд┐ рджреНрд╡рд╛рд░рд╛ рдореЗрд░реЗ рд▓реЗрдЦ



рдХреА рдЕрдВрддрд┐рдо рддрд╕реНрд╡реАрд░ рдЬреЛ рдореЗрд░реЗ рд╕реЗ рдЕрдзрд┐рдХ рд╡рд┐рдХрд╛рд╕ рдХреЗ рдЕрдиреБрднрд╡ рдХреЗ рд╕рд╛рде рд╣реИ рдФрд░ рдЬреЛ рдпрд╣ рднреА рд╕реЛрдЪрддрд╛ рд╣реИ рдХрд┐ IRepository рдХреЛ Application Lervices рдореЗрдВ ApplicationServices рдореЗрдВ рд░рдЦрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП (рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╕реНрд╡рдпрдВ рднреА Infrastructure рд╣реИ)ред


рдЬрд╛рдБрдЪ - рдкрд░рд┐рдгрд╛рдо


рдЗрдиреНрдлреНрд░рд╛рд╕реНрдЯреНрд░рдХреНрдЪрд░ рд╕рд░реНрд╡рд┐рд╕реЗрдЬ рдЗрдВрдЯрд░рдлреЗрд╕ (IRepository, IEmailSender) рдХреЛ ApplicationServices.dll рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдореЗрдВ рд░рдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдФрд░ Infrastructure.dll рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдореЗрдВ рдЙрдирдХреЗ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди (рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА, EMailSender) рдХреЛред

All Articles