【问题标题】:Can the Model part of the MVVM application be active?MVVM 应用程序的模型部分可以处于活动状态吗?
【发布时间】:2013-05-13 14:30:23
【问题描述】:

我将开始开发用于证券交易所交易的 WPF 实时 C# 应用程序。我将根据 MVVM 模式开发这个应用程序。所以在 MVVM 应用程序的模型部分,我应该创建视图模型部分应该处理的数据结构,填充数据等等。

证券交易所交易应用程序的主要部分之一是通过专用门软件库从证券交易所接收交易数据。

所以我想知道我应该在我的应用程序中分配这个交易数据接收的位置:在模型部分,接收操作将填充模型数据结构,而视图模型将采用这些填充的数据结构来处理它们?或者我应该在应用程序的视图模型部分分配这个交易数据接收,其中视图模型本身将填充最初从模型中获得的已处理数据结构?

从 MVVM 模式的角度来看,哪种方式更规范?

【问题讨论】:

  • 如果你有 Visual Studio 2010,我强烈推荐MVVM in the box,它太棒了!
  • 我想使用 Visual Studio 2012,因为这个版本的 Visual Studio 有很好的 MVVM Toolkit Light。

标签: wpf mvvm


【解决方案1】:

IMO 这将由Model 负责。 VM 是ModelView 之间的桥梁,它主要负责处理视图的逻辑(用户调用的东西)。

业务逻辑(不是由用户调用)应该驻留在Model

在您的情况下,当您说有用于获取数据的 Web 服务时,这些服务应该与模型交互,并且应该是模型应该访问以获取更新数据的服务。

【讨论】:

  • 我不同意将 Web 服务添加到实际模型中;让 VM 执行工作并根据需要更新模型值。这将有助于将模型与任何类型的数据逻辑分离,并允许模型被重用,而无需合并嵌入式 Web 服务。
  • 好吧,您没有将服务“添加”到模型中。您所做的只是将“接收更新的股票数据”的操作包装到模型“使用”而不是“包含在其中”的服务中。同样在 VM 中具有此逻辑(这不是用户调用的操作),如果 OP 为不同的布局视图添加新 VM,将来会发生什么?我们需要将此 VM 中的代码复制到新 VM 或抽象功能。如果代码在模型中,那么虚拟机只是“插入”当前应用程序,而不是涉及更多重构。我猜这归结为个人喜好
  • 谢谢。我将更专注地研究应用程序结构。在 Web 或 Windows 服务的情况下 - 服务将如何与应用程序的模型部分进行交互?不幸的是,我以前没有处理过 Web 或 Windows 服务编程。
  • MVVM 应用程序的模型部分能否在不减慢服务运行速度的情况下与 Web 或 Windows 服务交互?让通过专门的门库接收交易数据在Windows服务上实现。由于交易数据来自证券交易所的频率很高,因此模型经常引用数据服务。因此它可以显着减慢服务的工作速度。我说的对吗?
  • @user1688773 好吧,这取决于您的代码如何。如果您的线程高效并且不经常在 UI 线程上做密集的工作并且在适当的时候委派给工作人员,那么事情应该是顺利的。说你做 X 和 Y 来解决你的问题,这个问题太宽泛了。至于交互,您可以让您的服务根据您的偏好实现模型/VM 持有和使用的接口,从而不直接依赖于固定类型。
猜你喜欢
  • 2011-06-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-07-04
  • 2013-05-08
  • 2016-02-04
相关资源
最近更新 更多