【问题标题】:Business Logics of projects under MVVM in WPF?WPF中MVVM下项目的业务逻辑?
【发布时间】:2011-07-01 03:38:16
【问题描述】:

我正在使用 MVVM 模式在 WPF 中开发应用程序。例如,如果我有 Student 作为数据模型,我可以在哪里添加添加新学生、删除学生和更新学生信息、计算分数等业务逻辑?

所有的业务逻辑都属于model还是viewmodel

如果它在模型中,我们该怎么做?请问有示例代码吗?我需要完整的示例代码!

【问题讨论】:

  • 请注意,此问题并未说明完整解决方案的架构。 MVVM 只是客户端应用程序的一种模式。如果客户端连接到服务,这些服务将需要实现业务规则和逻辑。

标签: wpf mvvm business-logic


【解决方案1】:

我不太相信微软在 Patterns 上所说的话,因为他们的文章经常过时,或者被修改以支持他们自己的专有框架或产品。此外,我发现 MS 的想法/方法在他们不同的团队中以及在软件中普遍接受的方法中也是矛盾的。

不是所有的都是好的,也不是所有的都是坏的。

回答你的问题。我会使用业务逻辑服务。我会在 ViewModel 中实例化对它的引用,并且不会在 ViewModel 或 Model 中放置与它们的角色没有任何关系的任何逻辑。即表示逻辑是好的,取决于它是什么,它可能最好放在 ViewModel 中,因为它与相关视图高度相关。模型也是如此。

牢记这些角色,您将拥有一个可扩展且可测试的应用程序。

【讨论】:

    【解决方案2】:

    我建议您阅读 PRISM 关于此主题的文档:Chapter 5: Implementing the MVVM Pattern

    即使您不打算使用 PRISM,这篇文章也写得非常好,并详细介绍了 Microsoft 技术术语中的模式。

    【讨论】:

      【解决方案3】:

      业务逻辑应该是模型的一部分,因为所有这些代码都应该可以跨不同的技术平台重用。例如,您可能希望在 ASP.NET MVC 中的网站和 WPF 中的桌面应用程序中重用您的模型,因此在视图模型中包含业务逻辑是没有意义的。

      视图模型应该包含特定于特定应用程序实例的表示逻辑。

      对于示例代码,这将特定于您正在建模的领域,因此您必须就您要建模的内容提出更具体的问题。

      【讨论】:

      • 谢谢,实际上我正在开发一个产品信息系统,我可以得到代码吗?我的意思是示例代码
      • 如果没有您所在领域的专业领域知识,这实际上是不可能的。我会开始创建您的模型,当您遇到特定问题时,请在此处发布另一个问题。
      • 好吧,我们的模型实际上是 CSLA 对象 (lhotka.net/cslanet),但您可以只使用 POCO 类 - 例如,您可能有一个 Student 类,其中包含 Forename、Surname、DateOfBirth 等属性,也许还有一个StudentList 是一个 List 并提供您的聚合方法。
      • 另外,看看这篇关于 MVVM 的精彩文章 - csharperimage.jeremylikness.com/2010/04/…
      猜你喜欢
      • 2013-02-12
      • 2017-04-29
      • 1970-01-01
      • 2012-06-13
      • 1970-01-01
      • 2013-01-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多