Jestem w trakcie robienia projektu do CV. Chcę wykorzystać wzorzec czystej architektury.
Aplikacja będzie polegała na zarządzaniu (CRUD) produktami, kategoriami produktów, zamówieniami.
Nie robię żadnego DDD. Przeczytałem na forum, żeby nie robić dodatkowej warstwy abstrakcji zwanej przez niektórych "repozytoriami" (DAO), ponieważ Entity Framework DbContext to UoW, natomiast DbSety to repozytoria.
Mam sobie taką strukturę projektów w solucji:
Gdybym chciał implementować "repozytoria" (DAO), to wrzuciłbym je pewnie do projektu Infrastructure.Persistence, a następnie przy pomocy DI wstrzykiwałbym je do serwisów, w których mam logikę biznesową. Jednak nie chcę tego robić - będę korzystał bezpośrednio z DbContextu/DbSetów.
- Jak w takim razie rozdzielić logikę biznesową od operacji dostępu do danych (wywołań metod na DbContexcie)?
- Czy modele mapowane przez ORM na tabele w bazie danych powinny znajdować się w projekcie Domain, jeżeli nie, to gdzie?
- Czy logika biznesowa powinna znajdować się w projekcie Application?
- Czy jest sens rozdzielenia projektu Core na projekty Application oraz Domain?
- Czy mógłby mi ktoś wyjaśnić różnicę między logiką biznesowa, a logiką aplikacji (na przykładzie zarządzania produktami/zamówieniami)?