WPF - 将 DAL 放在 MVVM 的 3 层架构设计中的啥位置?
Posted
技术标签:
【中文标题】WPF - 将 DAL 放在 MVVM 的 3 层架构设计中的啥位置?【英文标题】:WPF - Where to put DAL in 3-tier architecture design with MVVM?WPF - 将 DAL 放在 MVVM 的 3 层架构设计中的什么位置? 【发布时间】:2011-03-12 12:09:41 【问题描述】:我对整个 n 层架构还很陌生,我对将 MVVM 与 3 层应用程序一起使用有一些疑问。
据我了解,我们有:
视图或 UI 层,即 xaml 文件 模型,它是一个自定义类,包含“建模”数据对象的属性和方法 ViewModel,它是 View 和 Model 之间的“适配器” 一个 WCF 服务器,它应该处理数据库访问以及其他事情 用于存储数据的 SQL 数据库我的问题是,如何使用数据访问层将所有这些放在一起?使用 MVVM,我会让模型包含加载/更新自身的方法。相反,这应该是在 WCF 服务器上发生的事情吗?如果是这样,对服务器的引用应该存储在 Model 还是 ViewModel 中?又该如何称呼呢?
【问题讨论】:
【参考方案1】:严格来说,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);
【讨论】:
谢谢你,为我澄清了它【参考方案2】:数据访问是一个独立且独立的问题...您可以通过多种不同的方式和模式来实现它,但在所有情况下,最终结果都是您的 MVVM 类将使用的模型。 WCF 可能返回模型中使用的类,或者它可能返回设计为数据传输对象的更简单的类,在这种情况下,您可以将这些对象转换为模型中定义的类的实例... 实际数据访问(从数据库本身当然是在 WCF 的服务器端编码的......
【讨论】:
【参考方案3】:有大量非常冗长的博客文章和描述来组织这一切。这是我最近(今天)读到的一篇:
[链接文字][1]
[1]: http://dotnetslackers.com/articles/data-management/About-layers-separation-and-Entity-Framework.aspx "EF 和图层上的 Dino Esposito
【讨论】:
以上是关于WPF - 将 DAL 放在 MVVM 的 3 层架构设计中的啥位置?的主要内容,如果未能解决你的问题,请参考以下文章