• К какому слою относится Repository и как возвращать Business object?

    dmitriylanets
    @dmitriylanets
    веб-разработчик
    как правило Repository - уровень инфраструктуры а не домена, с доменом они связанны интерфейсами.
    например доменная сущность (по сути это BLL):
    Domains/User/User
    Domains/UserCollection
    Domains/User/RepositoryInterface (возвращает User, UserCollection)

    Инфраструктура:
    Infrastructure/User/Repository (реализует RepositoryInterface, работает с бд, использует DAL, mapping)

    ну и Application
    контроллеры, GUI , views
    Ответ написан
    Комментировать
  • К какому слою относится Repository и как возвращать Business object?

    @maltsever
    Привет! Многое зависит от деталей и количества абстракций. Попытаюсь ответить как это должно выглядеть в самом общем случае. UserRepository использует напрямую доступ к базе данных (это может быть raw sql, какая-то ORM, неважно). Поэтому логично, чтобы он находился в Data Access Layer. Он поэтому так и называется, потому что на практике их может быть несколько: SqlDataAccessLayer, MongoDbDataAccessLayer и т.д. Также если мы говорим про ООП, то интерфейс IUserRepository должен хранится именно там, где планируется его использование. В нашем случае это BLL, он же Domain Layer. Не всегда удаётся придерживаться этого правила с интерфейсом, но к этому нужно стремиться.
    По поводу того, что должен возвращать UserRepository: на самом деле без разницы. Смотря от ситуации мы можем либо возвращать просто контейнер c необходимыми данными (DTO), либо полноценного User'a. Если говорить о зависимостях, то главное понимать, что в общем случае наш Domain Layer не должен иметь зависимостей от каких-то других слоёв. А вот остальные части нашего проекта (например, DAL) могут использовать Domain Layer.
    Ответ написан
    2 комментария