Wpf 拆分应用程序';使用Prism时,在其自己的部件中放置零件

Wpf 拆分应用程序';使用Prism时,在其自己的部件中放置零件,wpf,silverlight,mvvm,assemblies,prism,Wpf,Silverlight,Mvvm,Assemblies,Prism,MVVM方法鼓励(或只是提供了将WPF或Silverlight应用程序拆分为Model、ViewModel和View项目的可能性),以便这三个应用程序都可以存在于各自的程序集中 另一方面,使用Prism(在我的例子中,MEF是一个依赖注入容器),可以构建一个模块化应用程序,该应用程序被划分为一组功能单元(命名模块),在这种情况下,每个单元都是一个独立的组件。 在这种情况下,我们只能在自己的组件中分离模型,但视图和视图模型应该位于一个组件中,代表一个功能模块,这是对的吗?是的,Prism鼓励您将所

MVVM方法鼓励(或只是提供了将WPF或Silverlight应用程序拆分为Model、ViewModel和View项目的可能性),以便这三个应用程序都可以存在于各自的程序集中

另一方面,使用Prism(在我的例子中,MEF是一个依赖注入容器),可以构建一个模块化应用程序,该应用程序被划分为一组功能单元(命名模块),在这种情况下,每个单元都是一个独立的组件。

在这种情况下,我们只能在自己的组件中分离模型,但视图和视图模型应该位于一个组件中,代表一个功能模块,这是对的吗?是的,Prism鼓励您将所有内容(模型、视图和视图模型)放在一个自包含的功能模块中

无论如何,我强烈建议不要将视图和视图模型拆分为单独的项目。这是因为它们紧密耦合在一起,并且是并行开发的


关于如何组织MVVM应用程序,有两种推荐的方法。首先是按图层组织项目,并将视图和视图模型放在项目内的单独文件夹中。第二,按要素创建文件夹时,不要将视图和视图模型分开,即它们并排位于同一文件夹中。我个人选择第二个,因为正如我所提到的,它们总是一起开发和维护的,这样很容易找到相应的视图或视图模型。

首先,模块不是相等的组件。可以在多个部件(包括模型、视图和视图模型)之间分布模块的零件。但是,通常将与模块相关的类放在一个DLL或XAP文件中(如果模块是单独的Silverlight应用程序,则在Silverlight中)

就您的情况而言,如果一个模型是一个可由多个模块使用的共享实体,Prism鼓励将其放置在所谓的基础结构组件中,该组件保留共享的非模块特定逻辑。否则,最好将MVVM部件放在一起,因为它们可以解决常见的业务任务。将来,如果需要替换MVVM的一个部分的实现,只需添加一个新的部分并调整容器的映射即可