Одна из вопросов для меня о DTO / BO заключается в том, когда передавать / возвращать DTO, а когда передавать / возвращать BO.
Моя интуиция подсказывает мне всегда сопоставлять NHibernate с DTO, а не с BO, и всегда передавать / возвращать DTO. Затем всякий раз, когда мне нужно было выполнить бизнес-логику, я преобразовывал свой DTO в BO.
Я бы сделал это так, что у моего BO был бы конструктор, который принимает параметр, который является типом моего интерфейса (который определяет обязательные поля / свойства), который как мой DTO, так и BO реализуют в качестве единственного аргумента.
Тогда я смогу создать свой BO, передав ему DTO в конструкторе (поскольку оба реализуют один и тот же интерфейс, они оба имеют одинаковые свойства), а затем смогу выполнять свою бизнес-логику с этим BO. Тогда у меня также был бы способ преобразовать BO в DTO.
Однако я также видел, что люди, похоже, работают только с BO и работают только с DTO в фоновом режиме, тогда как для пользователя кажется, что DTO нет.
Какие преимущества / недостатки есть у этой архитектуры по сравнению с постоянным использованием BO?
Должен ли я всегда передавать / возвращать DTO или BO или смешивать и сопоставлять (похоже, что смешивание и сопоставление могут сбивать с толку)?