Где разместить данные контракты WCF? Хорошо, чтобы положить на уровне данных? - PullRequest
2 голосов
/ 27 января 2012

Я видел, как некоторые люди рекомендуют, чтобы служба WCF вызывала уровень данных, имела объект, содержащий возвращенные данные, и затем помещала это в контракт данных.Мой вопрос: почему бы не вставить контракты данных в сам уровень данных и просто вернуть их вместо этого?Есть ли недостаток для этого?Причина, по которой я спрашиваю, состоит в том, что мой уровень данных - это просто библиотека классов, и я хочу иметь возможность вызывать его с нескольких платформ, которые могут не использовать веб-сервис.Я не могу найти лучшую практику по этому поводу.Есть идеи?

1 Ответ

5 голосов
/ 27 января 2012

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

...