2013-03-26 2 views
0

Я создал свой WebAPI для обслуживания DTO для клиента как средство разделения моделей домена на клиентских моделях. Теперь я использую технологии на стороне клиента, такие как Breeze, и мне интересно, как использование Breeze повлияет на этот шаблон, и если это сценарий или сценарий. Когда это хорошая идея использовать как бриз, так и DTO, если вообще когда-либо?Когда полезно использовать как DTO, так и Breeze?

ответ

0

Breeze действительно не заботится о том, хотите ли вы использовать DTO или более полнофункциональный объект «Entity» модели домена. С точки зрения .NET, Бриз может применять весь спектр сервисов запросов к любой коллекции, которая может быть представлена ​​как IEnumerable или IQueryable. Если вы не хотите использовать запросы, вы можете разоблачить отдельные DTO или коллекции DTO через методы WebApi, которые принимают параметры.

У вас также есть возможность использовать запросы Breeze с проекциями для создания объектов DTO из объектов на сервере и работать только с DTO на клиенте.

Если запрос очень важен для вас, то основная проблема с моделью «Объекты» DTO в домене «Сущности» с вашей точки зрения заключается в том, насколько легко вам подвергать объекты DTO как «Queryable» и насколько эффективен этот запрос быть. Многие инструменты ORM, такие как Entity Framework, могут преобразовывать запрос, так что большая часть тяжелой обработки выполняется движком базы данных. Такая оптимизация может быть очень результативной по сравнению с альтернативой попытки итерации по коллекции DTO для выполнения запроса.

Один интересный вариант - использовать что-то вроде Entity Framework и WebApi, чтобы выставлять только отображенное подмножество вашей модели домена, которое вы хотите открыть на клиенте. т. е. вы используете Entity Framework для выполнения вашего DTO-сопоставления для вас. Таким образом, у вас есть две модели EF, модель полного домена и модель домена DTO. Преимущество этого заключается в том, что вы все еще получаете преимущество оптимизации запросов.

Надеюсь, это поможет.

+0

Thanks Jay. Сейчас мой проект использует EF и WebAPI для отображения DTO, которые я вручную сопоставлял. У меня есть тонкий (без детей) и толстый (с дочерними) DTO для каждого объекта с методами toEntity и toDto. Не могли бы вы подумать об этом излишестве в свете таких библиотек, как Breeze, которые могут просто запросить одну модель DTO/получить то, что нужно? – RobVious

+0

Я не уверен, что я понимаю вопрос, но один запрос бриза может вернуть весь граф объектов. т. е. набор родителей и любых детей, которых вы выберете. –

 Смежные вопросы

  • Нет связанных вопросов^_^