Я ищу обратную связь по определенной структуре каталогов для приложения. Я понимаю, что это не соответствует классическому формату переполнения стека, где есть такая вещь, как «правильный ответ», хотя думаю, что это интересно тем не менее. Чтобы дать значимую обратную связь, нужно сначала понять какой-то контекст, поэтому, пожалуйста, несите меня.Создание контекстов в структуре каталогов
-
Два моих коллеги и я создал приложение, использующий Clean Architecture. HTTP-запросы на маршруты превращаются в модели запросов, которые передаются для использования в случаях, которые затем выплевывают модель ответа, которая передается ведущему.
Код полностью из открытого источника и находится в on GitHub. У нас также есть some docs, описывающие основные каталоги.
Мы думаем о реорганизации нашего кода и хотели бы получить обратную связь о том, что мы придумали до сих пор. В первую очередь среди причин для этой реорганизации являются:
Прямо сейчас мы не имеем хорошее место, чтобы положить вещи, которые не являются частью нашего домена, но как-то привязать к нему. Например, код авторизации, который знает об идентификаторах пожертвований (с авторизацией, не являющейся частью основного домена, в то время как идентификаторы пожертвований).
Приятно объединять сплоченные вещи вместе. Наш код пожертвования является сплоченным, и наш код приложения для членства является сплоченным, хотя оба они не зависят друг от друга. Это тесно связано с понятием ограниченных контекстов в доменном дизайне. Прямо сейчас эти контексты явно не видны в нашем коде, поэтому легко сделать их зависимыми друг от друга, особенно если вы не знакомы с доменом.
Это те контексты, которые мы определили до сих пор. Это предварительный список и просто дать вам идею, а не ту часть, на которую я хочу получить отзывы.
- Пожертвование
- Членство
- поддержка Форма материал (проверка электронной почты, поколение IBAN и т.д.)
Часть Я хочу обратную связь на это структура каталога мы думаем о переходе на:
src/
Context_1/
DataAccess/
Domain/
Model/
Repositories/
UseCases/
Validation/
Presentation/
Authorization/
Context_2/
Factories/
Infrastructure/
tests/
Context_1/
Unit/
Integration/
EdgeToEdge/
System/
TestDoubles/
Context_2/
Папка Authorization/
непосредственно внутри контекста предоставит дом для наш в настоящее время странно размещенный код авторизации в инфраструктуре. Другой код, не являющийся частью нашего домена, но связанный с ним, может перейти непосредственно в контекстную папку и получить свою собственную папку, если между ними есть связная/связанная куча вещей, например авторизация.
Я рад предоставить дополнительную информацию, необходимую для предоставления полезной обратной связи.
Вы говорите, что авторизация не должна выполняться в usecases, но вместо этого вы делаете то, что вы называете материалом, который вызывает определенную usecase? –
Службы приложений обычно реализуют прецедент. Поэтому, если ваш случай использования заключался в том, чтобы «сделать пожертвование», у вас будет служба приложений (или, скорее, обработчик команд), чтобы справиться с этим. Внутри этого вы можете убедиться, что человек уполномочен сделать пожертвование. – tomliversidge
https://github.com/gregoryyoung/m-r/blob/master/SimpleCQRS/CommandHandlers.cs - пример обработчика команд. Здесь вы также можете передать конструктору то, что делает авторизацию. Еще лучший подход - использовать шаблон декоратора в самом классе обработчика команд. См. Этот пункт в видео, на которое я ссылаюсь [здесь] (https://youtu.be/whCk1Q87_ZI?t=4227) – tomliversidge