【问题标题】:Good reasons NOT to place ViewModels in separate assembly?不将 ViewModel 放在单独的程序集中的充分理由?
【发布时间】:2016-02-27 01:28:19
【问题描述】:

我正在 WPF 中使用 MVVM 模式开发一个项目。

MVVM 的主要优势之一是保持业务逻辑和表示之间的清晰分离。

为了测试所有内容的实际分离程度,周末我加快了将所有 ViewModel、模型和业务逻辑移动到单独的 .dll 的速度。 .exe 保留为薄的表示层。

这很顺利,第一次尝试

我已经看到了将视图(xaml、演示文稿)保存在 .exe 中并将核心逻辑保存在其自己的 dll 中的好处。例如,我不再考虑 any dilemma Xaml 中的代码隐藏是否是一个问题:如果有必要,我很满意,因为我知道它是特定于演示文稿的。

到目前为止,这种 exe/dll 分离效果很好,以至于我的问题是:有没有人经历过这种方法的任何缺点

相关问题:Implementing MVVM in WPF without using System.Windows.Input.ICommand

【问题讨论】:

  • 为什么拆分不起作用?这是相同的代码,只要访问级别正确,应该没有问题。对 VM 层的更好测试是,您能否为其附加不同的 UI,例如 Silverlight,或者甚至完全通过单元测试运行您的应用程序。
  • “为什么拆分不起作用” - 这正是我的问题。这里有什么技术问题吗?
  • 这样做有什么好处?除非您确实需要在另一个项目中使用该模型,否则这似乎是不必要的。

标签: wpf mvvm


【解决方案1】:

我们在所有产品中都使用这种分离,因为它可以帮助我们查看是否有任何代码违反 UI - 业务逻辑分离。

大多数情况下,我们都会按照您的建议进行操作:

  • Sample.Presentation.exe(包含所有 WPF 内容,精简程序集)

  • Sample.Applications.dll(负责应用的工作流程,这里都是ViewModel)

  • Sample.Domain.dll(这里是业务规则)

我们还没有遇到任何问题,我预计将来不会出现任何问题。

【讨论】:

    【解决方案2】:

    除了使用少/多项目的一般优点/缺点之外,我没有看到这种方法的任何具体问题。

    【讨论】:

      【解决方案3】:

      2 周后,我的模型和视图模型在 dll 中,我的 xaml 在 exe 中,没有任何问题。

      【讨论】:

        【解决方案4】:

        实际的问题是......组装是为了什么?

        除非您添加引用,否则它们是一种分离逻辑使其对其他代码不可用的方法,因此实际上它们是一种将部分代码隐藏在其他部分之外的方法。

        鉴于此目的以及您使用它的方式,我会说您做对了。

        话虽如此,我发现更容易在代码审查中验证视图没有任何代码,并将视图保持在同一个程序集中。更少的项目 = 更快的编译和加载时间。

        【讨论】:

          猜你喜欢
          • 2023-03-19
          • 2013-06-04
          • 2012-05-16
          • 2021-05-11
          • 1970-01-01
          • 1970-01-01
          • 2018-08-30
          • 2011-08-15
          相关资源
          最近更新 更多