Подтвердить что ты не робот

Какова цель DataService и IDataService в MVVM Light

Я начинаю использовать версию MVVM Light 4, и я не могу понять:

  • Почему я должен использовать DataService и IDataService?
  • Должен ли я создать dataservice для любого класса в модели?
4b9b3361

Ответ 1

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

Однако вы должны учитывать, что это также имеет некоторые недостатки. Причиной внедрения службы данных является то, что этот компонент является многоразовым и даже может использоваться в других сценариях, таких как приложение MVC. Кроме того, это отделяет проблему получения модели от хранилища данных.

Причиной внедрения IDataService является то, что вы можете обменять реализацию, когда вам нужно, например. для предоставления данных времени проектирования. Когда вам это нужно, вам также необходимо рассмотреть инверсию шаблона управления, которая в значительной степени зависит от интерфейсов. В этом случае также может быть интересен контейнер МОК, хотя это и не нужно.

Но, прежде всего, это рекомендации, шаблоны, рекомендации по разработке и лучшие практики, которые дают вам свободу в разработке приложения, которое наилучшим образом соответствует вашим требованиям.

Изменить: размер службы данных

Дизайн и объем вашей службы данных зависят от вашего приложения и его требований. Он может варьироваться от единой службы данных для всех ваших моделей до одной службы данных для каждой модели. Кроме того, дизайн ваших интерфейсов служб данных может быть отдельным решением. Один класс обслуживания может реализовывать несколько интерфейсов обслуживания, что позволяет скрыть определенные аспекты (методы) реализации от пользователя.

При создании службы данных вы должны изучить блок работы и repository. Существует несколько примеров реализации.

Если вам просто нужен простой шаблон работы, основанный на одном запросе, вы можете посмотреть мой блог , где я писал о том, чтобы IQueryable в единицу рабочего шаблона. Тем не менее, это подходит только для очень простых случаев, как правило, более полная реализация с репозиторием и правильная единица рабочего элемента более целесообразно.