Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/257.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# MVVM中的模型_C#_.net_Wpf_Mvvm - Fatal编程技术网

C# MVVM中的模型

C# MVVM中的模型,c#,.net,wpf,mvvm,C#,.net,Wpf,Mvvm,除非我误解了——我读到的关于MVVM的大多数文章都将MVVM中的模型解释为包含域/业务逻辑的部分,但让我困惑的是MVVM是一种表示层模式,而表示层并不完整地包含业务逻辑。请帮助我理解业务层中的域逻辑如何映射到表示层中的模型,MVVM中的模型实际上是DTO吗? 如果有人能举例说明业务层如何映射到SOA中的MVVM模型(业务逻辑位于web服务后面),我将不胜感激。谢谢。模型通常由ViewModel本身封装。您必须将模型和ViewModel分开,因为根据设计,单个ViewModel可能使用不同的模型。

除非我误解了——我读到的关于MVVM的大多数文章都将MVVM中的模型解释为包含域/业务逻辑的部分,但让我困惑的是MVVM是一种表示层模式,而表示层并不完整地包含业务逻辑。请帮助我理解业务层中的域逻辑如何映射到表示层中的模型,MVVM中的模型实际上是DTO吗?
如果有人能举例说明业务层如何映射到SOA中的MVVM模型(业务逻辑位于web服务后面),我将不胜感激。谢谢。

模型通常由ViewModel本身封装。您必须将模型和ViewModel分开,因为根据设计,单个ViewModel可能使用不同的模型。但实际上这是一种罕见的情况,因此ViewModel可以直接使用服务


如果单个ViewModel可以服务于不同类型的模型,这些模型可以被一个接一个地替代-引入单独的模型层,通过接口将它们抽象出来并注入适当的ViewModels,否则View和ViewModel就足够了。

MVVM,如MVC,只是一种分离的表示形式,其目的是实现应用程序中与UI的逻辑和状态相关的部分与应用程序中与业务领域的逻辑和状态相关的部分之间的关注点分离。因此,只要模型部分与表示关注点分离,MVVM就不会真正规定模型部分所采用的形式

该模型有意不以任何方式耦合或依赖于应用程序的表示方面,但除此之外,还有许多不同的方法来实现triad的“M”部分。特别是,它不必映射到单个对象:它可能意味着与返回DTO的服务交互,可能意味着在消息总线上发布和订阅消息,也可能意味着检索表示域中实体的域对象,对它们调用方法,然后持久化它们


MVVM模式的真正独特之处在于ViewModel在其中的作用,因为它的目的是以一种可以被具有丰富数据绑定功能的视图技术使用的方式来表示UI的状态。如果没有丰富的数据绑定支持,您可能会使用不同形式的分离表示,如MVC或MVP,但“M”部分仍然可以是相同的,因为它从定义上独立于UI技术。这是一个重要的因素。

MVVM中的模型根本不是DTO。DTO是数据可转移对象。它更像实体类。它基本上用于将数据从一层传输到另一层;例如表示层到业务层或业务层到数据访问层


该模型主要由业务逻辑组成。表示层通过视图模型在需要时调用模型的业务逻辑

在这里看到我的答案和人们对它的评论。我认为MVC和MVVM经常被误解,人们认为模型和控制器正在取代数据模型和业务逻辑。在我的设想中,MVVM和MVC都只是在UI级别上,通过一些基本的实体操作或其他UI逻辑来保持UI组合的分离,因此我认为我在那里的回答适用于MVC和MVVM。对不起,我看不到任何URL,请您编辑并重新发布。谢谢。对不起,我忘了