Должны ли доменные объекты реализовывать IXmlSerializable? - PullRequest
3 голосов
/ 04 декабря 2009

Я создаю REST API, который предоставляет данные в виде XML. У меня в доменном слое есть целая куча классов доменов, которые предназначены для использования как сервисным уровнем позади API, так и клиентским API, который мы будем предоставлять клиентам. (У клиентов есть возможность напрямую взаимодействовать с REST API, но клиентский API упрощает работу). Я хочу, чтобы мои доменные классы были чистыми от любой логики сохранения данных, но я пытаюсь выяснить, нормально ли для классов доменов реализовать IXmlSerializable, чтобы упростить процесс сериализации данных, которые передаются и извлекаются из API. Я начал с того, что думал, что буду хранить классы доменов свободными от какой-либо логики сериализации и вместо этого украсить их поведением сериализации, например обернуть объект домена внутри объекта, который обрабатывает сериализацию. Я делаю вещи более сложными, чем они должны быть? Любые мысли о том, как я должен подойти к этому? Спасибо!

1 Ответ

5 голосов
/ 04 декабря 2009

Доменные классы должны иметь дело только с бизнес-логикой, а не с постоянством или сериализацией.

Вам следует создать набор классов объектов передачи данных (DTO), каждый из которых соответствует одному из классов домена. Эти классы будут содержать только те свойства из классов домена, которые вы решили предоставить. Это позволяет доменным классам иметь свойства, которые не предоставляются через уровни персистентности или сериализации.

Только объекты DTO будут сериализованы и десериализованы.

Тогда вам может быть удобно создавать статические методы "translate" для преобразования между доменом и объектами DTO.

...