【发布时间】:2011-04-12 19:03:51
【问题描述】:
如果我有这两个项目:
MyCompany.ERP.Billing
MyCompany.ERP.Financial
账单向财务询问/发送信息,反之亦然。两者都太大了,所以我不想把它们放在一个项目中。 Visual Studio 不允许循环引用。你会怎么处理呢?
【问题讨论】:
-
虽然您可以使用已经提到的几个技巧,但这听起来像是一个架构问题。您如何区分帐单和财务?我觉得在这里划清界限有些困难,我的感觉是“财务”永远不应该指计费,因为它不那么抽象。是否有可能某些项目驻留在错误的项目中?究竟什么是“太大”?
-
这只是一个例子。目的是了解如何按照良好的 OOP 实践创建 ERP,因为循环引用在这类软件中非常常见,因为它非常庞大并且分为许多模块。
-
循环引用来自有缺陷的设计,而不是来自领域复杂性。没有双关语的意思,我不是说这就是这里的情况。 ERP 不是您可以在开发过程中开发的东西,您需要在编写一行代码之前对您要完成的工作有一个非常清晰的认识。
-
我感觉项目之间的循环引用表明了灾难性的架构缺陷。每当我遇到这个问题时,我都不得不坐下来重新思考我的抽象。我总是在它们中发现了导致循环依赖的错误。想想法律:“你有罪!” - “这是什么意思” - “如果你被定罪,你就是有罪的!” - “但为什么我被定罪” - “因为你有罪”。现在我们有了 Kafka,而您的代码中不想使用 Kafka...
-
@Eduardo:简单地说,因为一个程序集必须在任何引用它的程序集之前完全构建和运行。类也不一样。理论上,程序集中的类可以按任意顺序构建,因为它们被视为单个单元的一部分。没有比程序集更高的实际单元(解决方案文件是 Visual Studio 概念,与生成的 IL 无关)。
标签: .net visual-studio architecture circular-reference