首页 文章

洋葱建筑

提问于
浏览
22

我正在为即将到来的内部应用程序设置一个项目结构,该应用程序试验了Palermo提出的Onion Architecture(http://jeffreypalermo.com/blog/the-onion-architecture-part-3/) .

我遵循他的指导方针,但到目前为止我需要对项目结构进行一些验证 .

在图表之前,问题:

  • 我认为参考文献都是正确的(根据图表设置箭头表示'引用'),但有些验证会很好 .

  • 我应该在依赖性解析层中添加什么?这是帮助者去的地方吗?这引用了所有其他项目?

  • Web服务和UI如何与DAL通信? (通过核心?怎么样?)

  • 应该去哪里? [我知道的广泛问题......]

简化的概念图如下(文件夹代表名称空间):

enter image description here

enter image description here

2 回答

  • 7

    我认为参考文献都是正确的(根据图表设置箭头表示'引用'),但有些验证会很好 .

    1它看起来不错,但我不确定将依赖项解析插入到图表中是个好主意 .

    我应该在依赖性解析层中添加什么?这是帮助者去的地方吗?这引用了所有其他项目?

    2我相信依赖注入的东西会在这里 .

    Web服务和UI如何与DAL进行通信? (通过核心?怎么样?)

    3根据巴勒莫的图表,它是核心 . 在核心中,您将拥有与DAL和域模型以及处理存储库和域模型的服务(而非Web服务)的存储库 . UI / Web服务将主要与服务进行通信 .

    应该去哪里? [我知道的广泛问题......]

    4同样,我认为答案在巴勒莫的图表中 . 但在我看来,当对架构有充分的了解时,组织项目可能会有所不同而且微不足道 .

    一旦我理解了DDD和必要的设计模式,如MVC,依赖注入,存储库/服务,ORM,洋葱架构就变得很明显了 .

  • 6
    • 是的,他们期待依赖性解决方案 . 这些依赖应该是相反的方式 .

    • 由于名称(和更正的引用)意味着它的目的是托管某种IoC容器解决方案 . 它不是Helper类的地方,期望辅助类用于解决目的 .

    • Core定义了DAL或域服务的接口 . DAL和WebServices实现了这些接口 . 在UI内部,您将通过定义的接口使用DAL或Service实现 . 正确的实现将通过依赖性解决组件的帮助来解决(看看"Inversion Of Control"或"Dependency Injection"的概念) .

    • 如3中所述 . 主要的是,在Core中,您将放置将在DAL和Web Services中实现的接口 . 在Core中,您将实现您的真实业务模型 . 此模型可以通过定义的接口(在依赖关系解析组件的帮助下)使用DAL和Web服务 .

相关问题