Альтернативы для уровня перевода в SOA: WCF - PullRequest
3 голосов
/ 28 февраля 2012

Услуги не являются объектно-ориентированными. Предположим, у меня есть дизайн на основе OOAD. Мы можем преобразовать его в DTO (который не имеет никакого поведения), используя Уровень перевода . Но это может привести к очень большому увеличению объема кода. Каковы альтернативные идеи для этого в WCF (через C #)?

Пожалуйста, прокомментируйте, является ли хорошей идеей такой переход между SOA и OOAD. Должны ли мы вообще избегать OOAD, когда у нас есть SOA или мы используем такие методы отображения?

Целесообразно ли создавать «DTO для конкретной операции», а не «DTO непосредственно из домена после удаления поведения»? Есть ли какой-нибудь инструмент для «Оперативного подхода к DTO»?

Создает ли AutoMapper «Операция, специфичная для DTO» или «DTO из домена без поведения»?

Примечание. Подход DTO для конкретной операции можно найти в ответе в «Не используйте абстрактный базовый класс в Design; но в моделировании / анализе »

Извлечение из Рекомендации уровня обслуживания

Разработка объектов преобразования, которые переводятся между бизнес-объектами и договорами данных.

ЛИТЕРАТУРА

  1. Как ограничить свойства контракта данных веб-службы на основе роли пользователя
  2. SOA Вопрос: Экспонирующие объекты
  3. Каков наилучший способ использования DTO в SOA-приложении?
  4. Контракт сообщений и данных WCF, DTO, модель домена и общие сборки

Ответы [ 2 ]

4 голосов
/ 29 февраля 2012

Как и во всем остальном в разработке программного обеспечения (и особенно в архитектуре), нет единого правильного ответа на эти вопросы. Это зависит от архитектурных целей и ограничений.

WCF работает с DTO. Хотя возможно перейти на более примитивный уровень и работать непосредственно с сообщениями, для всех практических задач DTO являются фундаментальной частью работы с WCF. Поскольку WCF кажется одним из архитектурных ограничений в этом случае, на самом деле нет практического способа избежать DTO.

Тогда возникает вопрос: должен ли быть слой отображения или нет?

На этот вопрос довольно легко ответить, если мы можем ответить на другой вопрос: сопоставление с чем?

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

Если вы создаете совершенно новую систему, возможно, вам будет проще не переводить.

1 голос
/ 28 февраля 2012

Проверьте Automapper , мы используем это для той же задачи.

...