Какова цель DataService и IDataService в свете MVVM
Я начинаю использовать MVVM Light версии 4, и я не могу понять:
- почему я должен использовать DataService и IDataService?
- должен ли я создать dataservice для любого класса в модели?
1 ответов
прежде всего - как обычно - в MVVM вы не есть чтобы что-то сделать, это рекомендация или лучшая практика. В общем, вы можете свободно закодировать доступ к данным в свою модель представления - и это может быть хорошей практикой для небольших проектов или прототипических реализаций.
однако, вы должны учитывать, что это также имеет некоторые недостатки. Причина реализации службы данных заключается в том, что этот компонент можно использовать повторно и даже в других сценариях как приложение MVC. Кроме того, он отделяет проблему получения модели от хранилища данных.
причина реализации IDataService заключается в том, что вы можете обмениваться реализацией, когда вам нужно, например, для предоставления данных времени разработки. Когда вам это нужно, вы также должны рассмотреть инверсию шаблона управления, который сильно зависит от интерфейсов. В этом случае также контейнер МОК может быть интересным, хотя и не необходимым.
но, прежде всего выше приведены рекомендации, шаблоны, рекомендации по дизайну и лучшие практики, которые дают вам свободу разрабатывать приложение, которое наилучшим образом соответствует вашим требованиям.
Edit: размер службы данных
конструкция и объем вашего обслуживания данных зависят от вашего применения и требований. Он может варьироваться от одной службы данных для всех моделей до одной службы данных для каждой модели. Кроме того, дизайн интерфейсов службы данных может быть отдельным решение. Один класс обслуживания может реализовывать несколько интерфейсов сервиса, что позволяет скрывать определенные аспекты (методы) реализации от пользователя.
при разработке службы данных вы должны заглянуть в единица работы и хранилище шаблоны. Существует несколько примеров реализаций.
Если вам просто нужна очень простая единица шаблона работы, основанная на одном запросе, вы можете взглянуть на мой блог, где я писал о превращении IQueryable
в единицу шаблона работы. Однако это подходит только для очень простых случаев, как правило, целесообразнее полная реализация с репозиторием и надлежащей единицей рабочего элемента.