Лучшие практики / шаблоны для заполнения объектов 'ViewModel' - PullRequest
3 голосов
/ 25 марта 2011

Народ,

Я пытаюсь выяснить схему или лучшие практики для преобразования данных из объектов домена / источника данных в объект 'ViewModel'.В моем конкретном примере объект домена - это прокси-объекты WCF.Любой вызов методов WCF заполняет эти прокси-объекты, которые в конечном итоге передаются объектам ViewModel.См. Архитектурная схема

В этой статье Microsoft: http://msdn.microsoft.com/en-us/magazine/dd419663.aspx говорится об использовании шаблона репозитория.Он упоминается в разделе «Модель данных и репозиторий».Это лучший подход?Может кто-нибудь посоветовать мне?

Дорман

Ответы [ 3 ]

2 голосов
/ 25 марта 2011

Шаблон репозитория связан со слоем доступа к данным (который находится внутри вашего WCF).Это не имеет ничего общего с уровнем представления.

Я бы предложил вам объявить ваши классы Model и ViewModel в проекте MVC на основе требований к пользовательскому интерфейсу (без учета схемы вашей базы данных).Затем вы можете использовать AutoMapper , чтобы упростить код, необходимый для копирования значений из прокси-классов WCF в ваши Модели.Возможно, вы захотите инкапсулировать этот код в класс Adapter, который защитит остальную часть приложения от кода AutoMapper.

EDIT:

Не используйте прокси WCF в качестве классов модели.Объявите отдельные классы моделей на основе вашего пользовательского интерфейса и используйте AutoMapper для копирования данных между ними.

1 голос
/ 25 марта 2011

Да, вам нужно иметь хранилище. Это даст вам некоторые преимущества, такие как простое тестирование модели представления; также простое переключение на другое хранилище позже.

С точки зрения предоставленной вами статьи - это дало им преимущество модульного тестирования логики модели представления; и позже они могут переключаться с хранилища XML-файлов на хранилище SQL-сервера (в качестве примера).

Просто убедитесь, что абстрактный репозиторий внедрен в ViewModel.

0 голосов
/ 25 марта 2011

Сохраняйте это простым и несите одну ответственность за класс.

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

Если у вас есть служба WCF, тесно связанная с элементами пользовательского интерфейса, просто переведите из CO в VO.Так как представление привязано к VO, оно обновляется.

Если вам нужно вставить бизнес-или доменную логику на клиент, переведите объект промежуточного домена.Затем сделайте так, чтобы объект взаимодействовал с другими объектами модели предметной области (так называемое хранилище в упомянутой вами статье).ВО должен прислушиваться к изменениям домена и реагировать соответственно.Этот шаблон предполагает, что доменные объекты не зависят ни от WCF, ни от WPF.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...