【发布时间】:2015-12-07 19:18:12
【问题描述】:
我正在使用一套在医疗保健环境中执行数据采集的应用程序。这个想法是拥有一个通用的基础架构(包括硬件 IO、文件 IO、通用域模型)和一个瘦顶层,其中包含针对每个健康专业的具体项目的单独项目。
模型层是一个富域模型,主要包含域数据类型。
在模型层之上是业务层,主要处理工作流。例如,有CaptureConductor 类,采用ICaptureDevice、IPlotterModel 和IFileWriter 类(每个都来自域模型),并使它们一起工作。我还有 AnalysisConductor、AnalysisReportModel、DeviceConfigurationConductor 和其他处理更高级别工作流的类。
然后我有一些 ViewModel,其中每个都倾向于映射到来自业务层的一个或少数几个对象(我认为它们仍然在 MVVM 的“模型”部分中)。所以,“SomeFeatureViewModel”映射到“SomeFeatureModel”,“OtherFeatureViewModel”映射到“OtherFeatureViewModel”等等。
由于我使用的是 MVVM 框架(在本例中为 MVVM Light),因此我决定将这种依赖关系“集中”在一个项目中,因此我创建了一个包含许多有些不相关的 ViewModel 的 ViewModel 项目。
所以我的问题是:这是一个好的分区吗?
一方面,在这样做(水平分区)时,我将框架依赖集中在 ViewModel 层及以上,因此模型层可以是“纯”的。但这给了我低内聚(ViewModel 项目包含许多不相关的东西)和高耦合(每次我需要一个 ViewModel,我都需要引用那个大型项目。
另一方面,如果我垂直分区,也就是说,我让 View 和 ViewModel 在每个项目中一起存在,按功能分组,我会获得更好的 (IMO) 内聚和更低的耦合,缺点是引用框架几乎在每个项目中。
【问题讨论】:
标签: mvvm architecture solution