繁体   English   中英

洋葱架构:核心与域名

[英]Onion Architecture: Core vs Domain

我现在研究Onion Architecture很长一段时间了,我已经分析了几个VS的解决方案,但仍然无法理解Onion Architecture CoreDomain之间的区别。

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

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

我有这样的课程。 简单的棋盘游戏,如井字游戏。 它绝对是无处不在的语言,所以我应该在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 ModelDomain ServicesApplication Services 这取决于您的项目您在Core拥有的内容。 也许在您的情况下,没有必要引入Application Services

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

为了加起来Arkadiusz K的观点,Core是一个重载项,在DDD语音中,Core Domain也可以用作(支持/通用)子域。 也就是说,您有一个或几个关键域是您的核心业务和其他辅助域,可以外包或作为现成的解决方案购买。

解空间中的域和子域对应是有界上下文,这些可以在代码中表示为名称空间。 这可能是一些例子的作者想到的。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM