洋葱架构:核心vs领域
本文关键字:vs 领域 核心 洋葱 | 更新日期: 2023-09-27 18:14:57
我研究洋葱架构已经有一段时间了,我分析了几个样本VS的解决方案,仍然不能理解Onion Architecture
中Core
和Domain
的区别。
- 在此解决方案中,核心(项目)位于域(解决方案文件夹)内。
- 这里没有Core,只有Domain
- 在Jeffrey Palermo的CodeCampServer示例应用程序中,核心中有域。所以,基本上看起来
Core
是由Domain
和Services
组成的。 - 在这个xDriven项目中
Core
分为Core.Application
和Core.Domain
我完全糊涂了。你能给我解释一下,在这样的架构下,Core
和Domain
的实际区别是什么?
Entities
文件夹中创建它吗?在Core中域本身呢?public class Game
{
public GameState State { get; set; }
public Board Board { get; set; }
public IEnumerable<Player> Players { get; set; }
public bool Move(int playerId, int field)
{
//Check if Player's move will finish game. If yes, return true
return false;
}
}
在我看来,只要您遵循Onion Architecture
的指导方针,项目的实际命名并不那么重要。它更多的是关于构建你的项目,以便轻松地使用它并对其进行推理。
在中心有独立的对象模型是很重要的。然后围绕这个模型构建应用程序。
我完全糊涂了。你能给我解释一下,在这种架构中Core和Domain的实际区别是什么吗?
你可以把Core
看作是你的体系结构中心模型的每个方面的集合,这些方面应该是独立的。在那篇关于洋葱架构的文章中,有Application Core
,它包含Domain Model
, Domain Services
和Application Services
。这取决于你的项目,你在Core
。也许在你的情况下,没有必要引入Application Services
。
因此,总结一下,构建你的解决方案,使其易于你和其他人推理。让您解决方案中的结构成为使用该项目的其他人的指导方针。我的意思是,如果有人必须在项目中实现新功能,解决方案应该指导他应该放在哪里,例如Domain Entities
等。我的最后一个想法是,比构建(命名)项目更重要的是专注于遵守Onion Architecture
的四个原则,正如这里所描述的
将Arkadiusz K的观点加在一起,即核心是一个重载术语,在DDD语音中,核心域也可以用于与(支持/通用)子域相对。也就是说,你有一个或几个关键的领域是你的核心业务,其他领域是辅助的,可以外包或作为现成的解决方案购买。
解空间中的域和子域对应关系是有界上下文,它们可以用代码中的命名空间表示。这可能是一些例子的作者所考虑的。