[英]Onion Architecture: Core vs Domain
我现在研究Onion Architecture很长一段时间了,我已经分析了几个VS的解决方案,但仍然无法理解Onion Architecture
Core
和Domain
之间的区别。
Core
是由Domain
和Services
。 Core
分为Core.Application
和Core.Domain
我完全糊涂了。 你能解释一下, Core
和Domain
在这种架构中的实际区别是什么?
我有这样的课程。 简单的棋盘游戏,如井字游戏。 它绝对是无处不在的语言,所以我应该在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的观点,Core是一个重载项,在DDD语音中,Core Domain也可以用作(支持/通用)子域。 也就是说,您有一个或几个关键域是您的核心业务和其他辅助域,可以外包或作为现成的解决方案购买。
解空间中的域和子域对应是有界上下文,这些可以在代码中表示为名称空间。 这可能是一些例子的作者想到的。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.