洋葱架构:核心与域名

Kes*_*rks 4 .net c# domain-driven-design onion-architecture

我研究洋葱架构相当一段时间,现在,我已经分析了几样VS的解决方案,但还是无法明白之间的差别Core,并DomainOnion Architecture.

  • 解决方案中,Core(项目)位于Domain(解决方案文件夹)中.
  • 这里没有Core,只有Domain
  • 在Jeffrey Palermo的CodeCampServer示例应用程序中,Core内部有Domain.所以,基本上,它看起来像CoreDomainServices.
  • 这个xDriven项目Core中分为Core.ApplicationCore.Domain

我完全糊涂了.你能解释一下我,什么是之间的实际差异Core,并Domain在这样的架构?

我有这样的课程.简单的棋盘游戏,如井字游戏.它绝对是无处不在的语言,所以我应该Entities在Domain内的文件夹中创建吗?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;
    }
}
Run Code Online (Sandbox Code Playgroud)

Ark*_*z K 6

在我看来,只要你遵循Onion Architecture项目实际命名的指导并不重要.它更多的是关于构建项目以便轻松使用它并推理它.

拥有独立的对象模型非常重要.然后围绕该模型构建应用程序.

我完全糊涂了.你能解释一下,Core和Domain在这种架构中的实际区别是什么?

您可以将您Core视为应该是独立的架构中心模型的每个方面的集合.在关于洋葱建筑的帖子Application Core,它包含Domain Model,Domain ServicesApplication Services.这取决于你的项目你有什么Core.也许在你的情况下,没有必要介绍Application Services.

总而言之,构建您的解决方案,让您和其他人轻松推理.让解决方案中的结构成为使用该项目的其他人的指南.我的意思是,如果有人必须在项目中实现新功能,那么解决方案应该指导他应该放在哪里Domain Entities等等.而我最后的想法,最重要的是比构建(命名)项目更重要的是继续坚持四个原则Onion Architecture这里所描述