洋葱架构:核心与域名

时间:2015-09-28 01:49:50

标签: c# .net domain-driven-design onion-architecture

我现在研究Onion Architecture已经有一段时间了,我已经分析了几个样本VS的解决方案,但仍然无法理解Core和{{1}之间的差异} Domain

  • this解决方案中,Core(项目)位于Domain(解决方案文件夹)中。
  • Here没有Core,只有Domain
  • 在Jeffrey Palermo的CodeCampServer示例应用中,Core内部有Domain。所以,基本上看起来Onion ArchitectureCoreDomain组成。
  • this xDriven项目Services分为CoreCore.Application

我完全糊涂了。你能解释一下这个架构中Core.DomainCore之间的实际差异吗?

我有这样的课程。简单的棋盘游戏,如井字游戏。它绝对是无处不在的语言,所以我应该在Domain内的Domain文件夹中创建吗? Core中的域名本身?

Entities

2 个答案:

答案 0 :(得分:6)

在我看来,只要您遵循Onion Architecture的指南,项目的实际命名就不那么重要了。它更多的是关于构建项目以便轻松使用它并推理它。

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

  

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

您可以将Core视为您应该独立的架构中心模型的每个方面的集合。在Post about Onion ArchitectureApplication CoreDomain Model,其中包含Domain ServicesApplication ServicesCore。这取决于您的项目Application Services中的内容。也许在你的情况下,没有必要介绍Domain Entities

总而言之,构建您的解决方案,让您和其他人轻松推理。让解决方案中的结构成为使用该项目的其他人的指南。我的意思是,如果有人必须在项目中实现新功能,那么解决方案应该指导他应该放置的位置Onion Architecture等。 我最后一个想法,比构建(命名)项目最重要的是继续关注-(UIImage *)resizeImage :(UIImage *)theImage :(CGSize)theNewSize { UIGraphicsBeginImageContextWithOptions(theNewSize, NO, 1.0); CGFloat height = theImage.size.height; CGFloat newHeight = 0; newHeight = (theNewSize.width * height) / theImage.size.width; newHeight = floorf(newHeight); NSLog(@"new height image %f", newHeight); [theImage drawInRect:CGRectMake(0, 0, theNewSize.width, newHeight)]; UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext(); UIGraphicsEndImageContext(); return newImage; } 作为described here

的四个原则。

答案 1 :(得分:1)

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

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