
рд╣реЗрд▓реЛ, рд╣реИрдмрд░ред рдореИрдВ рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдХрд┐ рдКрдкрд░ рдХреА рдЖрдХреГрддрд┐ рдореЗрдВ, рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдХрд╣рд╛рдВ рд░рдЦреА рдЧрдИ рд╣реИред рдбреАрдЖрдИрдкреА, рдЖрдИрдУрд╕реА рдФрд░ рдкрд░рд┐рдпреЛрдЬрдирд╛ рд╕рдВрд░рдЪрдирд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдереЛрдбрд╝рд╛ рдФрд░ рдЕрдзрд┐рдХред рдПрдХ рдорд╛рдирдХ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╣реИ рдЬрд┐рд╕рдХреЗ рдЕрдиреБрд╕рд╛рд░ IRepository рдЗрдВрдЯрд░рдлреЗрд╕ рдХреЛ рдбреЛрдореЗрди рдкрд░рдд рдореЗрдВ DomainServices рдореЗрдВ рдФрд░ Infrastructure рдореЗрдВ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рд╕рд╛рде рд╣рд╕реНрддрдХреНрд╖реЗрдк рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдпрд╣рд╛рдВ рд╣рдо рдорд╛рдирдХ рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдЬреЛ рдХреЗрд╡рд▓ рд╡рд╕реНрддреБрдУрдВ рдХрд╛ рдПрдХ рд╕рд╛рд░ рд╕рдВрдЧреНрд░рд╣ рд╣реИ рдЬреЛ рд▓реЗрдирджреЗрди рдФрд░ UnitOfWork рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдирд╣реАрдВ рдЬрд╛рдирддрд╛ рд╣реИ рдФрд░ рдЗрддрдиреЗ рдкрд░ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, IList рдФрд░ рдЗрд╕рдХрд╛ рд╕рд╛рдорд╛рдиреНрдп рд╕рдВрд╕реНрдХрд░рдг рдПрдХ рдЕрдореВрд░реНрдд рднрдВрдбрд╛рд░ рдХрд╛ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рд╣реИ)ред рдореИрдВ рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реВрдк рд╕реЗ рдЙрд╕рд╕реЗ рдЕрд╕рд╣рдордд рд╣реВрдВ рдХреНрдпреЛрдВрдХрд┐ рдЖрдорддреМрд░ рдкрд░ рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдПрдХ рд╡рд┐рд╢реЗрд╖ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рд▓рд┐рдП рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЗ рд╕рд╛рде рдЕрддрд┐рд╡реГрджреНрдзрд┐ рд╣реЛрддреА рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореИрдВрдиреЗ рдЙрдирдХреЗ рдЗрдВрдЯрд░рдлреЗрд╕ рдХреЛ ApplicationServices рдореЗрдВ рдбрд╛рд▓ рджрд┐рдпрд╛ред рдкрд╛рдареНрдпрдХреНрд░рдо рдХрд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдЗрдиреНрдлреНрд░рд╛рд╕реНрдЯреНрд░рдХреНрдЪрд░ рдкрд░рдд рдореЗрдВ рд░рд╣рддрд╛ рд╣реИред рдпрджрд┐ рдЖрдк рд░реБрдЪрд┐ рд░рдЦрддреЗ рд╣реИрдВ, рддреЛ рдмрд┐рд▓реНрд▓реА рдореЗрдВ рдЖрдкрдХрд╛ рд╕реНрд╡рд╛рдЧрдд рд╣реИредрдЕрдХреНрд╕рд░ рд░реЙрдмрд░реНрдЯ рдорд╛рд░реНрдЯрд┐рди рдХреА рдкреБрд░рд╛рдиреА рддрд╕реНрд╡реАрд░ рд╕реЗ рдХрдИ рднреНрд░рдорд┐рдд рд╣реЛрддреЗ рд╣реИрдВ:
рдЙрдирдХреЗ рдкрд╛рд╕ рд▓реЗрдЦ рдореЗрдВ рд╢рдмреНрдж рд╣реИрдВрдПрдВрдЯрд┐рдЯреАрдЬ рдПрдВрдЯрд░рдкреНрд░рд╛рдЗрдЬ рдХреЗ рд╡реНрдпрд╛рдкрдХ рд╡реНрдпрд╛рд╡рд╕рд╛рдпрд┐рдХ рдирд┐рдпрдореЛрдВ рдХрд╛ рдЙрд▓реНрд▓рдВрдШрди рдХрд░рддреА рд╣реИрдВред рдПрдХ рдЗрдХрд╛рдИ рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рдПрдХ рд╡рд╕реНрддреБ рд╣реЛ рд╕рдХрддреА рд╣реИ, рдпрд╛ рдпрд╣ рдбреЗрдЯрд╛ рд╕рдВрд░рдЪрдирд╛рдУрдВ рдФрд░ рдХрд╛рд░реНрдпреЛрдВ рдХрд╛ рдПрдХ рд╕реЗрдЯ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдпрд╣ рддрдм рддрдХ рдорд╛рдпрдиреЗ рдирд╣реАрдВ рд░рдЦрддрд╛ рд╣реИ рдЬрдм рддрдХ рдХрд┐ рдЙрджреНрдпрдо рдореЗрдВ рдХрдИ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рджреНрд╡рд╛рд░рд╛ рд╕рдВрд╕реНрдерд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХреЗред
рдЗрд╕рд▓рд┐рдП, рдпрд╣ рдкрддрд╛ рдЪрд▓рд╛ рд╣реИ рдХрд┐ рдпрд╣ рдХреЗрд╡рд▓ Entities рдкрд░рддреЛрдВ рдХреЛ DomainServices рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред рдЦреИрд░, UseCases == ApplicationServicesред Gateways == UserPepository, EmailService, Loggerред рдФрд░ рдЕрдзрд┐рдХ рдкрдврд╝реЗрдВ рдпрд╣рд╛рдБ ред- Serivice рдХрд┐рд╕реА рднреА рд╕реНрдЯреЗрдЯрд▓реЗрд╕ рдХреНрд▓рд╛рд╕ рд╣реИред InfrastructureService рдПрдХ рдПрдВрдЯреА-рдХрд░рдкреНрд╢рди рд▓реЙрдпрд░ рд╣реИ рдЬреЛ рдЖрдкрдХреЛ рдлрд╝рд╛рдЗрд▓ рд╕рд┐рд╕реНрдЯрдо, SMTP рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдФрд░, рдмреЗрд╢рдХ, ORM рдпрд╛ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рд╕реЗ рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрд▓рдЧ рдХрд░рддрд╛ рд╣реИ, рдЖрджрд┐ред
- Repository . . List Repository T[] ValueObject Entities. Repository InfrastructureService InfrastructureService Repository. : Logger, EmailSender.
- Repository InfrastructureService - EmailSender EmailService, FileService ( File.Open(тАж ) . .) .
рдпрд╣ рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рдЕрдореВрд░реНрдд рд╕реНрдерд╛рди рдХрд╣рд╛рдБ рд░рдЦрд╛ рдЬрд╛рдП, рд╣рдореЗрдВ рдбрд┐рдкреЗрдВрдбреЗрдВрд╕реА рдЗрдирд╡рд░реНрд╕рди рдПрдВрдб рдХрдВрдЯреНрд░реЛрд▓ рдСрдл рдХрдВрдЯреНрд░реЛрд▓ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реЛрдЪрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдЙрдирдХреЗ рдЕрдиреБрд╕рд╛рд░, рд╣рдорд╛рд░реЗ ApplicationService рдЗрдВрдлреНрд░рд╛рд╕реНрдЯреНрд░рдХреНрдЪрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдореБрдЭреЗ рдирд╣реАрдВ рдкрддрд╛ рдХрд┐ рдЗрд╕рдХрд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдЗрд╕ рддрд░рд╣ рд╕реЗ рдХреНрдпрд╛ рд╣реИ:- рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░реЗрдВ рдЬреЛ рдЗрдиреНрдлреНрд░рд╛рд╕реНрдЯреНрд░рдХреНрдЪрд░ рдХреЛ рд▓рд╛рдЧреВ рдХрд░реЗрдЧрд╛ рдФрд░ рдЗрд╕рдХреЗ рд╕рд╛рде рдмрд╛рддрдЪреАрдд рдХрд░реЗрдЧрд╛ред
- рдмрд╕ рдПрдХреНрд╢рди рдФрд░ рдлрдВрдХ рдЬреИрд╕реЗ рдкреНрд░рддрд┐рдирд┐рдзрд┐рдпреЛрдВ рдХреЛ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░реЗрдВред
рд╡рд╛рдпрд╛ рдЗрдВрдЯрд░рдлреЗрд╕: 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();
}
рдЕрдм рдХреЛрдб рдХреА рд╕рдВрд░рдЪрдирд╛ рдХреИрд╕реЗ рдХрд░реЗрдВред рд╡рд┐рдЪрд╛рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рджреЛ рдорд╛рдорд▓реЗ рд╣реИрдВ:- рд╕рдм рдХреБрдЫ рдлрд╝реЛрд▓реНрдбрд░реНрд╕ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рд╣реИред
- рд╕рдм рдХреБрдЫ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рд╣реИред
рд╢рдмреНрджрд╛рд╡рд▓реА рдХрд╛ рд╡рд┐рд╡рд░рдг рдпрд╣рд╛рдВ рдкрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ редрдПрдХ рд╣реА рдЖрд╡реЗрджрди рдХреЗ рднреАрддрд░ рдлрд╝реЛрд▓реНрдбрд░
рд╕реНрдиреЗрдХрдЧреИрдо рдХреЛрдб рдЙрджрд╛рд╣рд░рдг
рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рджреНрд╡рд╛рд░рд╛
рд╣рдордиреЗ InfrastructureServices (IRepository) рдЗрдВрдЯрд░рдлреЗрд╕ рдХреЛ ApplicationServices рд▓рд╛рдЗрдмреНрд░реЗрд░реА, рдФрд░ Infrastructure рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдореЗрдВ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди (рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА) рдбрд╛рд▓ рджрд┐рдпрд╛ред рдХрд┐рд╕реА рд╡реНрдпрдХреНрддрд┐ рджреНрд╡рд╛рд░рд╛ рдореЗрд░реЗ рд▓реЗрдЦ
рдХреА рдЕрдВрддрд┐рдо рддрд╕реНрд╡реАрд░ рдЬреЛ рдореЗрд░реЗ рд╕реЗ рдЕрдзрд┐рдХ рд╡рд┐рдХрд╛рд╕ рдХреЗ рдЕрдиреБрднрд╡ рдХреЗ рд╕рд╛рде рд╣реИ рдФрд░ рдЬреЛ рдпрд╣ рднреА рд╕реЛрдЪрддрд╛ рд╣реИ рдХрд┐ IRepository рдХреЛ Application Lervices рдореЗрдВ ApplicationServices рдореЗрдВ рд░рдЦрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП (рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╕реНрд╡рдпрдВ рднреА Infrastructure рд╣реИ)ред
рдЬрд╛рдБрдЪ - рдкрд░рд┐рдгрд╛рдо
рдЗрдиреНрдлреНрд░рд╛рд╕реНрдЯреНрд░рдХреНрдЪрд░ рд╕рд░реНрд╡рд┐рд╕реЗрдЬ рдЗрдВрдЯрд░рдлреЗрд╕ (IRepository, IEmailSender) рдХреЛ ApplicationServices.dll рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдореЗрдВ рд░рдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдФрд░ Infrastructure.dll рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдореЗрдВ рдЙрдирдХреЗ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди (рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА, EMailSender) рдХреЛред