我是否正确实施了Onion Architecture?

时间:2014-04-25 18:08:44

标签: .net onion-architecture

这是我第一次尝试实施洋葱架构。

enter image description here

AppService -> folder for the abstractions for the entire Application
Business -> Business logic using the abstractions in the Core project
DataService -> folder for abstractions that are implemented in the DataAccess project
Model -> Entities used by the application
WebService -> folder for abstractions that are implemented in the WebAccess project
  1. 上面的文件夹是否正确?
  2. 是DependencyResolution项目在Domain文件夹中的位置吗?
  3. 基础架构中的每个项目是否都包含一个DependencyRegistrar文件,该文件将Core项目中的接口注册到项目中的实现中?
  4. WebApi项目应该放在Presentation-> Api吗?这是演示文稿吗?
  5. 我应该将每个项目的所有单元测试都放在“测试”文件夹中吗?
  6. 提前致谢。

1 个答案:

答案 0 :(得分:1)

  1. 您的文件夹结构通常看起来很好。就个人而言,我采用更模块化的方法,核心项目中的文件夹实际上是我的个别项目,但这只是我的偏好。
  2. 依赖性解决方案不属于您的域名,也不是真正的基础架构(至少在我看来)。它本身就是一个概念。
  3. DependencyRegistrar似乎没必要。依赖性解决方案的责任是将抽象映射到实现。
  4. 我的立即反应是否定的,但过去我做过单页应用,我在同一个项目中使用了MVC和WebApi。因此,他们将共同成为客户。如果每个移动客户端都有自己的后端,我会将这些项目放在与客户端相同的文件夹中。否则,我会考虑一个顶级"后端"或者"服务"解决方案文件夹,如果它们在多个不同的客户端之间共享,则将它们放入。
  5. 我认为每个项目及其测试彼此相邻更有意义,因此从一个项目导航到另一个项目或反之亦然(即无需向上和向下滚动解决方案)。
  6. 除了生活在Domain和DependencyRegistrar中的依赖性解析之外,它似乎很好。具体情况取决于您认为最好的。