MVVM应用程序的设计

时间:2011-10-20 10:56:24

标签: wpf mvvm system-design

我对这个应用程序的设计持怀疑态度......

这是我的应用程序的图表

Diagram of my Application

这是对的吗?我需要改变一些事情......

我将详细说明图表....:

Common Library:它包含类ErrorCodes,Utility Classes等 记录器:记录框架
异常处理:处理异常的框架

视图:包含:用户控件,Windows,弹出窗口等视图的所有不同XAML

ViewModel:包含差异视图的ViewModel。

模型:包含保存不同的层,如...业务层,数据访问层等

实体层:包含像员工,公司等实体对象......

文件框:它指定从文件/数据库读取/写入....

1 个答案:

答案 0 :(得分:2)

很难说出你要对你的问题做些什么,但在我看来MVVM层应该是这样的:

  • 模型:原始数据和原始数据验证。也许是INotifyPropertyChanged,但没有别的

  • ViewModel :业务逻辑,数据访问,基于业务规则的高级验证等

  • 观看次数:漂亮的UI图层,允许用户与ViewModel进行交互。没别了。

例如,Model可能具有File属性,但它不应负责显示文件对话框,将文件保存到数据库或验证文件是否具有.pdf扩展名。那种东西是ViewModel的工作。

修改

我看到您对问题所做的更新。这是一个好的开始,但这是我遇到的问题:

  • 您的模型应该是原始数据对象。它们不应包含任何比验证属性长度更高级的东西。

  • 老实说,我不建议将Views,Models和ViewModels分成3个单独的层。我曾经这样做过,结果证明这是一场维护噩梦。现在我把所有相关的对象放在一起。例如,我将FileModelFileViewModelFileView放在一起,SearchModelSearchViewModelSearchView放在一起

  • 我会创建一个数据访问层,负责向/从数据库执行所有读/写数据(我想这可能是你的“实体层”)。

  • 对于小型项目,我倾向于使用我的实体对象作为我的模型,因此模型成为我的DAL层的一部分,虽然我知道不建议这样做。

  • 不要忘记,使用MVVM,您的ViewModel是您的应用程序,而不是您的视图。 View应反映ViewModel中的内容,反之亦然。