您将如何在mvvm中设计与Viewmodel的业务逻辑交互

时间:2017-03-17 22:14:17

标签: wpf silverlight mvvm architecture

viewmodel可以获取业务逻辑的方式有哪些。可以说,我有3个模型,基于这3个模型数据,我将生成(基本上计算)一些新值(比如模型4),我将在View中显示这个模型4数据。

注意我不能将计算逻辑放在服务端,因为我没有控制权。我必须在我身边计算模型4.我应该在哪里计算这个模型4值?

问题 1)调用Service表单ViewModel是一种好的做法,即GetModel_1_Data,GetModel_2_Data,GetModel_3_Data,如果不是最佳做法?

2)根据mvvm,我不允许在ViewModel上拥有业务逻辑......那么我该怎么办?我们有什么不同的方式来实现这个目标?

3)在Mvvm中,我看到UI消耗的模型基本上是使用INotifyPropertychanged的模型..调用它们的正确单词是什么..我可以称之为UI模型吗?或UI模型对象?其他模型就像普通的CLR对象一样。

当我读到关于mvvm的许多人说要在Model..whic模型中保留逻辑时..他们的意思是普通的clr类......或者UI模型(他们有INotifyPropertyChanged) 如果不是,我们需要有一些层来从POCO模型生成UI模型吗?这层被称为..如此......

三江源,

1 个答案:

答案 0 :(得分:1)

我认为一旦你停止将Model视为一个单独的类,一切都应该清除。 MVVM就是表示层设计。为了专注于演示,它将整个业务逻辑层抽象为模型。从这个意义上讲,Model是一个层而不是单个类或组件。它本身可以有自己的设计模式(服务,DDD,CQRS,......)。

回答你的问题

  

注意我不能将计算逻辑放在服务端,因为我没有控制权。我必须在我身边计算模型4.我应该在哪里计算这个模型4值?

这取决于您认为计算逻辑是什么。如果它是业务逻辑,那么它应该被放入" Model"层。并不总是有明确的界限。有时候,这是你做出的决定/分类。

  

问题1)调用服务表单ViewModel是一个好习惯,即GetModel_1_Data,GetModel_2_Data,GetModel_3_Data,如果没有这个好习惯吗?

我不明白为什么不。另一种方法是添加一个额外的应用程序服务(或显示服务)层,以将ViewModel的创建与ViewModel本身分开。

  

2)根据mvvm,我不允许在ViewModel上拥有业务逻辑......那么我该怎么办?我们有什么不同的方式来实现这个目标?

如上所述,只要您认为计算逻辑是业务逻辑,就应将它们放入" Model"。除非,模型4是纯粹的演示。上面给出了另一种选择

  

3)在Mvvm中,我看到UI消耗的模型基本上是使用INotifyPropertychanged的模型..调用它们的正确单词是什么..我可以称之为UI模型吗?或UI模型对象?其他模型就像普通的CLR对象一样。

它们通常称为ViewModel

  

当我读到关于mvvm的许多人说要保持Model..whic模型中的逻辑..他们的意思是普通的clr类..或者UI模型(他们有INotifyPropertyChanged)如果没有,我们需要有一些层来产生UI POCO型号的型号?这层被称为..如此......

模型可以指业务逻辑对象或业务逻辑层,在上面的上下文中,它表示业务逻辑LAYER