2010-07-06 13 views
5

Soy bastante nuevo en la arquitectura de n niveles, y tenía algunas preguntas sobre el uso de MVVM con una aplicación de 3 niveles.WPF: ¿dónde poner DAL en el diseño de arquitectura de 3 niveles con MVVM?

Desde mi entender, tenemos:

  • The View, o capa de interfaz de usuario, que es el archivo XAML
  • El modelo, que es una clase personalizada que contiene propiedades y métodos que los "modelos" los datos objetar
  • el modelo de vista, que es el "adaptador" entre la vista y el modelo
  • Un servidor de WCF que se supone para manejar base de datos Access entre otras cosas
  • de base de datos SQL para almacenar datos

Mi pregunta es, ¿cómo puedo juntar todo esto usando la capa de acceso a datos? Con MVVM, quisiera que los modelos contengan los métodos para Cargar/Actualizar ellos mismos. En su lugar, ¿debería ser algo que sucede en el servidor WCF? De ser así, ¿la referencia al servidor debe almacenarse en el Modelo o en el Modelo de Vista? ¿Y cómo debería llamarse?

Respuesta

8

Estrictamente, DAL no es parte del patrón MVVM. DAL está en algún lugar 'detrás' del modelo, y vista y ver el modelo no debe saber nada sobre DAL.

Por ejemplo, exponer entidades como propiedades de su modelo que se cargan en el primer acceso.

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); 
    } 
} 
+0

Gracias, que aclaró que para mí – Rachel

0

El acceso a datos es un problema separado e independiente ... Puede implementarlo de diferentes maneras y patrones, pero en todos los casos, el resultado final es un modelo que será utilizado por sus clases MVVM.
El WCF puede devolver las clases utilizadas en su modelo, o puede devolver clases más simples que están diseñadas como objetos de transferencia de datos, en el que cxase tendrá que transformar estos objetos en instancias de las clases definidas en su modelo ...
El acceso a los datos reales (a partir de la propia DataBase está codificado en el lado del servidor de la WCF ...

Cuestiones relacionadas