Разработка программного обеспечения: использование моделей данных и зависимость между службами - PullRequest
0 голосов
/ 20 января 2019

Я хочу услышать некоторые мнения о разработке программного обеспечения:

  1. Данные модели

В настоящее время я занимаюсь разработкой программного обеспечения на основе:

Controller
    Service
        Repository

и я не совсем уверен, является ли хорошей практикой использование разных моделей данных на каждом слое.

Controller -> Receives a DTO and converts it into a "service object"
    Service -> Receives a "service object" and converts it into a database entity
        Repository -> persists a database entity

Кажется, что много повторяющегося кода, так как обычно обмен информацией на каждом уровне не сильно отличается.

  1. Зависимость между услугами

Представьте, что у вас есть две службы Наличие: проверка на наличие дат Бронирование: делает бронирование

Теперь, если при обращении в службу доступности указана дата, эта дата должна быть забронирована. Как управлять этой зависимостью?

- Option 1: calling BookingService from inside AvailabilityService
    AvailabilityService {

        Calling BookingService

    }

- Option 2: calling BookingService after the response of AvailabilityService
    AvailabilityController {
        Calling AvailabilityService
        Calling BookingService (base on the response from AvailabilityService)
    }

1 Ответ

0 голосов
/ 25 января 2019

Вопрос 1: Модель зависит от того, кто «работает» с данными.Слой персистентности с O / R mapper имеет определенный способ моделирования объектов (или, если быть точным: классы).С другой стороны: представление в браузере (не в БД) обычно смешивает данные из разных объектов, поэтому вы создаете настраиваемый DTO для этого представления, содержащего именно то, что нужно отображать в этом представлении.Это также включает в себя не показывать данные, которые не требуются представлением, и избегать множественных запросов (сначала этот объект, затем тот ...).Если необходимы дальнейшие преобразования, необходимо решить, требуется ли кому-то другая структура данных.Я думаю, что это не обычный вариант использования, обычно вы должны отобразить структуры данных из БД на требуемые данные представления.

Вопрос 2. Если ваша служба доступности только проверяет доступность, она не должна бронировать.В противном случае имя будет ложным.В Варианте 2 неверно указано имя контроллера, это, очевидно, не Контроллер доступности, а что-то вроде OrderController, помните, что нужно выбирать хорошие имена (Чистый код).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...