【发布时间】:2012-11-12 01:15:07
【问题描述】:
过去,我的项目变得越来越难以管理,尤其是当我必须在几年后重新访问以重做或对某个部分进行重大更新而不必重做所有内容时。这一次,我专注于让“可插拔”应用程序设计变得简单和可行,让我可以在不触及所有内容的情况下重新访问和重做一个部分。
我在想这个结构:
所以我想要的是能够在有界上下文 2 上工作,并在未来几个月/几年内使用许多新功能对其进行扩展,同时保持有界上下文 1 不变。我还将处理 UI,尤其是有关限界上下文 2 的部分。我还想让用户能够在其他设备上使用限界上下文 2。
最好甚至更新有界上下文 2 的 UI 中使用的 Web 技术,因为这是我们的主要关注领域并且使用最多,因此将其放入自己的 Web 和 UI 项目中甚至可能是明智的。有一个“登陆”网站,提供管理用户和让用户登录等常用功能。
现在我正在考虑将所有这些分离到 Visual Studio 中的单独解决方案中以简化管理。但我可以为每个解决方案创建一个文件夹并将所有内容放在那里。
我的问题是推荐的方法是什么,在分成不同的解决方案之前我应该考虑什么?
是否有任何管理此问题的最佳实践?任何人都知道什么有效,什么无效?
顺便说一句:由于这是由有界上下文划分的,因此系统的各个部分之间需要进行通信,尽管没有直接依赖关系(即上下文 1 管理和维护用于注册员工的业务逻辑,这在上下文 2 中再次需要)。
更新 我意识到需要更多信息。
有比这两个更多的有界上下文。它们都不像一个部门,即员工管理是当他们需要组织/存档与管理他人相关的信息并获得重要事件提醒时的上下文管理器。采购是员工在为一个部门购买商品并进行库存时所处的环境,可能有 20-40 个组织部门使用它。我正在考虑“报告”是否是一个单独的有界上下文(尽管没有非常有趣的逻辑和行为)。这些往往从提供基本功能的小规模开始,然后随着更多功能的添加和人们“发现”新的需求而增长。它们是单独更新的,我希望它们中的一些能够及时成长为更大的系统,即使它们开始解决相当基本的需求。
【问题讨论】:
-
有点相关,但如果您还没有,您应该查看Prism 和/或Managed Extensibility Framework 以获得用于编写具有高度解耦的应用程序/库的良好.NET 框架。它们相似,但并不严格用于相同的目的。
-
如果不了解您的问题领域,将很难回答。在我的脑海中,我想说每个有界上下文代表您组织中的不同部门,例如会计。对于整个解决方案来说,注册过程似乎太小了;它看起来更像是一个项目。
-
@RobertHarvey 感谢您的意见。对此,我已经更新了帖子,提供了更多信息。
-
@PatrickQuirk 谢谢。我听说过 Prism,但没有真正研究过。不过,我希望我能够在不引入另一个框架的情况下解决这个问题。
-
根据您的编辑,我仍然认为粒度太小,无法证明单独的项目是合理的。 EmployeeManagement 是一个项目,而不是一个解决方案。
标签: c# visual-studio design-patterns architecture domain-driven-design