可以在一个WPF应用程序中保留不同的有界上下文(BC)

本文关键字:BC 上下文 保留 应用程序 一个 WPF | 更新日期: 2024-07-27 12:06:27

我们正在建立一个管理电气产品制造实习生产的系统。

关于我们模型的复杂性,我们认为DDD非常适合我们的项目。

该系统由一个基于web的分布式系统和一个用WPF(使用MVVM作为表示模式)编码的重型桌面应用程序组成。

我刚刚读了《实现领域驱动设计》一书(http://www.amazon.com/dp/0321834577)来自Vaughn Vernon(这很好),我很困惑,因为DDD似乎很适合基于web的环境,但WPF桌面应用程序就是这样吗

作为DDD的新手,我对DDD在桌面应用程序中的集成感到非常困惑。

考虑到包括iDDD书在内的许多DDD来源,有人指出BC应与其他BC脱钩。管理不同BC之间集成的模式通常是创建开放主机服务。OHS可以使用REST、消息传递或SOAP来实现。对于一个包含多个web应用程序的分布式系统,我理解这一点。

但是,如果我在一个桌面应用程序中有不同的BC(对于这种情况,是WPF),该怎么办

该应用程序必须涵盖一大组上下文,如"生产监控"、"生产质量",对我来说,这听起来像是不同的BC。

在同一个windows应用程序中有几个BC可以吗?或者1个BC应该是1个应用程序?(对于的分布式系统来说,情况似乎经常如此

在一个桌面应用程序中集成不同BC的好模式是什么

一个解决方案似乎是在我的应用程序中创建一个"事件总线",BC可以通过在总线上发布/订阅事件来相互通信。这个实现看起来像Prism的EventAgreggator或mvvm-light的Messenger,但专门用于模型。

Udi Dahan在领域事件拯救中提出了类似的模式http://www.udidahan.com/2009/06/14/domain-events-salvation/但它似乎仅限于一个BC

可以在一个WPF应用程序中保留不同的有界上下文(BC)

正如您已经阅读了Vaughn Vernon的DDD书,所以要知道DDD就是通过首先理解问题并在域模型中解决它来解决复杂性。使用哪种技术或工具(注意:建议使用面向对象的语言)来推广应用程序并不重要。几年前我们遇到过类似的问题(一个桌面应用程序中有不同的BC),我们使用windows应用程序进行演示。WPF更灵活,因为它具有强大的绑定功能,让您可以使用MVVM模式和依赖项注入。

在同一个windows应用程序中有几个BC可以吗?正如我提到的,DDD的有界上下文可以在一个窗口或web应用程序中呈现,因为它们有自己的服务和存储库实现。不要将DDD的有界上下文假设为单独的项目!BC可以在其他项目的域中成功使用,而不是单独的项目。