где разместить данные контракты wcf? хорошо, чтобы положить на уровне данных?

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

 недостаток помещения ваших контрактов в ваш слой данных состоит в том, что вы связываете свой слой данных с вашими контрактами на обслуживание, хотя на самом деле они не должны быть связаны друг с другом. в идеале, ваш datalayer должен нести ответственность только за то, что он говорит на жестяной банке. то, что вы можете искать, являются объектами передачи данных (dto). они предназначены просто для передачи данных вашим клиентам. в вашем слое обслуживания вы можете преобразовать их обратно в соответствующие объекты для выполнения любых задач. однако это создает накладные расходы, и вам понадобится способ отображать dto и сущности туда и обратно, например, с помощью automapper.