【发布时间】:2015-04-06 01:59:12
【问题描述】:
Onion 架构提供的主要优势之一是能够交换“基础架构”元素,例如“数据访问、I/O 和 Web 服务”(http://jeffreypalermo.com/blog/the-onion-architecture-part-3/)。
Jeff 在 2008 年的帖子中说,“该行业至少每三年修改一次数据访问技术”。
有没有人有一个相当大的项目的例子,其中使用了 Onion 架构并随后更换了关键的基础设施元素?
我有兴趣了解:
- 一般来说,这种情况有多常见?
我的直觉告诉我,虽然“数据访问技术”可能每三年修改一次,但运行解决方案的实际基础架构的更改(这将使这一好处得以实现)可能会少很多?
- 解决方案最初的运行条件是什么?
- 是什么导致底层基础架构发生变化?
- 对于以这种方式改变基础架构的实际影响,是否有经验教训可以让我们改进 Onion 架构的原始实现?
我很想知道除了替换基础架构组件和实现相同的接口之外是否需要进行意外更改。例如,新基础设施是否需要将新参数传递给先前定义的方法,例如SaveOrder(int ID) -> SaveOrder(int ID, bool AllowSiblings, bool SiblingCreated) 从关系模型转移到 NoSQL DB 模型时。
与传统的耦合方法相比,此架构的实施 + 迁移到新基础架构的返工是否显着减少了所需的总工作量?
开发人员是否发现耦合的、硬引用的代码比松散耦合的、间接引用的代码更容易编写和调试,但基础架构更改的最终回报让这值得吗?
【问题讨论】: