Я разрабатываю консольное приложение, используя луковую архитектуру и дизайн, управляемый доменом. У меня есть два домена, где мне нужно реализовать ведение журнала, я запутался, где я могу разместить компонент ведения журнала. Могу ли я разместить это в соответствующей инфраструктуре двух доменов? Или в общем ядре, на которое можно ссылаться в обоих доменах? Если мне нужно поместить его в общее ядро, какой структуре я должен следовать? Я имею в виду ядро, инфраструктуру.
Где должно вестись ведение журнала в луковой архитектуре с DDD
Ответы (3)
Ведение журнала является сквозной проблемой. Аспектно-ориентированное программирование направлено на то, чтобы инкапсулировать сквозные проблемы в аспекты. Это позволяет полностью изолировать и повторно использовать код, решающий сквозную проблему.
Вам нужно создать библиотеку и реализовать свои классы ведения журнала, что-то вроде «MyProject.CrossCutting.Logging». И использовать аспектно-ориентированные подходы для регистрации событий с использованием этой библиотеки.
infrasture
, и совокупный корень вызывает его, чтобы сохранить мои события, но как регистратор решит, где хранить?
- person Prokurors; 08.10.2016
Ведение журнала является сквозным для всех ваших приложений. Это должно быть частью вашей структуры. Все уровни всех ваших проектов приложений могут зависеть от вашей среды точно так же, как они зависят от .Net Framework, Spring и т. д. Ваша среда должна иметь абстракции для сквозных задач, на которые вы можете легко положиться, и тогда реализация просто должна быть указана в корне композиции приложения, которое находится в инфраструктуре.
Если вы следуете DDD и луковой архитектуре, не имеет значения, сколько у вас доменов. Каждый домен может реализовать свою собственную версию регистратора, если это необходимо. Скорее всего, вы создадите интерфейс ведения журнала и, возможно, статическую реализацию, которая хранится на общем уровне и может быть вызвана любым из уровней, которые в ней нуждаются. В изображении, которое было опубликовано ранее, оно будет храниться на сквозном слое. Как упоминалось ранее, ведение журнала касается всех уровней.