WPF - Куда поместить DAL в 3-уровневый дизайн архитектуры с MVVM?

Я довольно плохо знаком с целой n-tier вещью архитектуры, и у меня были некоторые вопросы об использовании MVVM с 3-уровневым приложением.

От моего понимания мы имеем:

  • Представление или уровень UI, который является xaml файлом
  • Модель, которая является пользовательским классом, содержащим свойства и методы, это "моделирует" объект данных
  • ViewModel, который является "адаптером" между Представлением и Моделью
  • Сервер WCF, который, как предполагается, обрабатывает Доступ к базе данных среди прочего
  • База данных SQL для того, чтобы хранить данные

Мой вопрос, как я помещаю это все вместе использование Уровня доступа к данным? С MVVM у меня были бы модели, содержат методы для Загружения/Обновления себя. Вместо этого это должно быть чем-то, что происходит на Сервере WCF? Если так, должен ссылка на сервер быть сохраненной в Модели или ViewModel? И как это нужно назвать?

6
задан Rachel 6 July 2010 в 19:51
поделиться

3 ответа

Строго говоря, DAL не является частью шаблона MVVM. DAL находится где-то «позади» модели, а модель просмотра и просмотра ничего не должна знать о DAL.

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

public class ProductListModel
{
    public List<Product> AllProducts 
    {
       get
       { 
          if (_AllProducts == null)
              _AllProducts = MyServiceProxy.LoadAllProducts(...)  
          return _AllProducts;
       }
    }

    public void SaveChanges()
    {
         if (_AllProducts != null)
           MyServiceProxy.SaveProducts(AllProducts);
    }
} 
9
ответ дан 10 December 2019 в 00:32
поделиться

Есть тонны очень длинных постов в блогах и описаний по организации всего этого. Вот то, что я прочитал совсем недавно (сегодня):

[текст ссылки][1]

[1] http://dotnetslackers.com/articles/data-management/About-layers-separation-and-Entity-Framework.aspx "Дино Эспозито о EF и слоях

0
ответ дан 10 December 2019 в 00:32
поделиться

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

1
ответ дан 10 December 2019 в 00:32
поделиться
Другие вопросы по тегам:

Похожие вопросы: