Управление DTO и отображение в большой проект .NET

Моя команда и я создаем большие приложения .NET WinForms. Приложение использует различные «Сервисы» для получения данных в нашу базу данных и из нее. Каждая «служба» живет в своем собственном решении и обрабатывает определенный тип данных. Так, например, наша «ContactsService» управляет получением / сохранением контактов в нашей базе данных.

Обычно мы строим DTO для каждой службы. Итак, у нас может быть «ContactDTO», который имеет простые строковые свойства для каждой части данных в контакте. Теперь у нас также есть класс «Контакт» бизнес-уровня, который имеет точно такие же свойства, и, возможно, несколько дополнительных методов с некоторой бизнес-логикой. Вдобавок к этому «ContactsService» имеет свой собственный класс Contact, который гидратирован из ContactDTO.

Управление всеми нашими DTO и отображениями стало огромной проблемой. В настоящее время отправка контакта для сохранения в базе данных выглядит следующим образом:

  • Сопоставить контакт с клиентом ContactDTO
  • Сопоставить ContactDTO с сервисом Контакт
  • Сохранить контакт
  • Картографический сервис Контакт с ContactDTO
  • Сопоставить ContactDTO с клиент Контакт

Это просто ужасно. Если мы добавим свойство в наш клиентский класс Contact, нам придется добавить свойство и сопоставления в 3-4 местах.

Что мы делаем не так и как мы можем облегчить себе жизнь? Было бы проще использовать что-то вроде Json.NET и иметь JSON DTO? Мы проверили AutoMapper, но некоторые члены команды сочли его слишком сложным.

8
задан TaylorOtwell 6 July 2011 в 18:53
поделиться