2013-11-20 2 views
0

Неплохо ли проходить передачу объекта DTO на уровень обслуживания?Передача DTO на уровень обслуживания

На данный момент мой метод обслуживание слоя выглядеть следующим образом:

public save(MyEntity entity); 

значение Mapping от DTO для субъекта предпринимательской деятельности (MyEntity) выполняются на уровне представления

Но я хочу изменить метод подпись к этому:

public save(MyEntityDTO dto, String author); 

И после этого сопоставление от DTO к бизнес-объекту произойдет на служебном уровне.

EDIT: Я хочу, потому что мне нужно открыть сеанс спящего режима при сопоставлении с DTO на бизнес-объект, поэтому все изменения в объекте будут автоматически очищены.

+0

это не преступление, все зависит от того, читайте некоторые статьи о программной многослойной архитектуре ... –

ответ

0

Все в порядке, все стандартные трехслойные архитектуры делают это. Dataaccess получает данные, бизнес-карты и манипулирует ими, презентация представляет ее. Это не нормально, но, как сказано, ни одно преступление - чтобы передать модели данных для представления - к этому моменту вы должны пройти бизнес-модели. Btw. «DTO» может означать что угодно, модели бизнес-уровня могут быть DTO, модель доступа к данным может быть DTO. DTO обычно являются POCO на C#. Обычно у вас есть модели данных, представляющие ваши объекты базы данных и ваши модели домена, которые передают данные вокруг вашего приложения. Доменные модели обычно являются DTO (или называются POCO). Это означает, что в речи Microsoft они полностью сериализуемы, поэтому вы можете передать их любому компоненту Microsoft .net. Вы можете сериализовать их также в xml, json и т. Д. ...

0

Неплохо ли передавать объект DTO на уровень обслуживания?

Не только вы могли бы передать DTO объекты на уровне услуг, но вы должны пройти DTO объекты вместо субъектов предпринимательства на уровне услуг.

Ваша служба должна получать DTO, сопоставлять их с бизнес-объектами и отправлять их в репозиторий. Он также должен извлекать бизнес-объекты из репозитория, сопоставлять их с DTO и возвращать DTO как reponses. Таким образом, ваши бизнес-подразделения никогда не выходят из бизнес-уровня, а только DTO.

Полный ответ на аналогичный вопрос here.

Смежные вопросы