Вопрос

Мне любопытно узнать, что Community чувствует на эту тему. Недавно я вступил в вопрос со сценарием Nhibernate/WCF (сущности сохранялись на уровне обслуживания) и понял, что я могу идти в неправильное направление здесь.

Мой вопрос ясно, что при использовании постоянного графа объектов (Nhibernate, Linq to SQL и т. Д.) За веб -службой (WCF в этом сценарии), вы предпочитаете отправлять эти объекты через проволоку? Или вы бы создали набор более легких DTO (без циклических ссылок)?

Это было полезно?

Решение

DTOS. Используйте Automapper для картирования объекта-объекта

Другие советы

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

Помимо любого взаимодействия, необходимость думать обо всех областях, которые отправляются через проволоку, очень полезно (для меня), чтобы убедиться, что я не отправляю данные, которые не нужны или хуже, не должны прийти к клиенту Анкет

Как упоминали другие, Automapper является отличным инструментом для картирования сущности.

Я почти всегда создавал DTOS для передачи через проволоку и использование объектов Рихтера на моем сервере и клиенте. На клиенте у них будет какая -то общая логика презентации, в то время как на сервере у них будет бизнес -логика. Картирование между DTO и сущностями может быть глупым, но это должно произойти. Инструменты, такие как Automapper, помогают вам.

Если вы спрашиваете, отправляю ли я сериализованные объекты из веб -службы во внешний мир? Тогда ответ определенно нет, вы получите минимальную совместимость, если вы это сделаете. DTOS помогает решить эту проблему, определяя набор «объектов», которые могут быть созданы на любом языке, независимо от того, используете ли вы C#, Java, JavaScript или что -либо еще.

У меня всегда были проблемы с отправкой объектов nhibernate через проволоку. Особенно, если вы используете модель Activerecord. и/или, если ваш объект имеет связи с сеансом (yuck). Другим неприятным результатом является то, что Nhibernate может попытаться загрузить объект при входе метода (прежде чем вы сможете добраться до него), что также может вызвать проблемы.

Итак ... получить здесь сообщение? Проблемы, проблемы ... DTO

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top