我研究洋葱建筑很久了,我分析了很少样本VS的解决方案,仍然无法理解Core和Domain在Onion Architecture中的区别。
Core是由Domain和Services组成的。Core分为Core.Application和Core.Domain。我完全糊涂了。您能解释一下,Core和Domain在这样的体系结构中有什么实际的区别吗?
举个例子,这节课。简单的棋盘游戏,就像tac脚趾。它绝对是无处不在的语言,所以我应该在域内的Entities文件夹中创建它吗?核心领域本身?
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;
}
}发布于 2015-09-28 05:09:16
在我看来,只要您遵循Onion Architecture的指导原则,项目的实际命名就不那么重要了。它更多的是关于如何构造你的项目,以便轻松地使用它,以及关于它的理由。
重要的是要有独立的对象模型在中心。你围绕这个模型构建你的应用程序。
我完全糊涂了。你能解释一下吗,在这样的体系结构中,核心和领域之间的实际区别是什么?
您可以将Core看作是应该独立的体系结构中心模型的每个方面的聚合。在那个洋葱建筑博文中有Application Core,它包含Domain Model、Domain Services和Application Services。这取决于您在Core中拥有的项目。在您的例子中,可能没有必要引入Application Services。
因此,总括而言,构建您的解决方案对您和其他人来说是很容易的。让解决方案中的结构成为其他处理该项目的人的指南。我的意思是,如果某个人必须在项目中实现新特性,那么解决方案应该指导他把Domain Entities等放在哪里。我的最后一个想法是,比起构建(命名)项目,最重要的是要专注于坚持Onion Architecture作为在此描述的四个原则。
发布于 2015-09-28 10:01:52
加起来,雅卡迪乌斯K的观点,核心是一个过载的术语,在DDD语音核心域也可以使用相对于(支持/通用)子域。也就是说,您有一个或几个关键领域是您的核心业务和其他领域的附属,可以外包或购买作为现成的解决方案。
解决方案空间中的域和子域对应是有界上下文,可以在代码中将它们表示为命名空间。这可能是一些例子的作者所想到的。
https://stackoverflow.com/questions/32814712
复制相似问题