我们正在讨论如何实施域驱动设计。
为每个有界上下文使用单独的项目是否有任何直接的弊端?
欢迎所有关于我们方法的想法和建议。
所以它看起来像:
- ProjectA.dll (User Context Web Service)
- References
- ProjectB.dll
- ProjectB.dll (User Context Domain)
- ProjectC (Web App)
- References
- ProjectD.dll
- REST calls to ProjectA for User stuff
- ProjectD.dll (Product Context Domain)
- ProjectE.dll (Some Other Context)
- Domain
- Service
- IService.cs
- DTO
- DTO A.cs
- Entity
- Entity A.cs
- Entity B.cs
- Repository
- Repo.edmx
我们正在考虑制作一些只能通过网络服务访问的有界上下文,以便实现可能带来大量流量的区域的可扩展性。
答案 0 :(得分:4)
这个问题的答案并不像最初出现的那样直截了当。这是因为有不同的方法来整合BC。
This question (and answer)很好地总结了这个问题:
一种方法是将整个应用程序视为BC,另一种方法是仅将域逻辑视为BC。
要回答你的问题,我们显然必须区分这两者。
<案例1:BC表现为整个申请这种情况下,每个应用程序通常只有一个开发团队(扩展名为BC)。 因此,合适的VS解决方案和项目设置是为每个应用程序创建一个解决方案,并根据逻辑分层构建项目。
在这里,如果整个应用程序不是太大,将所有内容放在一个解决方案中是有意义的。否则,根据需要将支持BC提取到他们自己的解决方案中。这通常由团队组织推动。
要将此应用于您的案例,我认为您的建议是一个很好的起点。如果解决方案变得太大,您可以稍后将用户的内容移出并将其移动到专用解决方案中。 这里重要的是拥有明确定义的BC边界和接口。有了它,以后更容易移动。
答案 1 :(得分:0)
您展示的内容似乎更像是解决方案体系结构的分层方法,其中分离了演示文稿,应用程序,域和基础架构层。这些将是同一解决方案中的单独项目(我是C#开发人员,因此我认为就Visual Studio而言)。
我认为使用单独的解决方案将是隔离有界上下文的正确行动方案。如果您要将应用程序和持久性问题映射到有限的上下文中,那就是这样。如果是,则不同的团队可以在每个应用程序上工作,而无需在同一解决方案空间内运行。
希望有帮助...