Опишите проблему циклической зависимости сборки .NET в терминах непрофессионала - PullRequest
2 голосов
/ 22 июля 2010

Пожалуйста, опишите проблему циклической зависимости компиляции сборки .NET в терминах непрофессионала и укажите, имеют ли другие технологии аналогичные ограничения.

Примечание. Мне кажется, это простой вопрос, но я видел ряд реальных, значительных проектов, которые полностью нарушили графики зависимостей.

Ответы [ 3 ]

3 голосов
/ 22 июля 2010

То же, что и любая другая круговая зависимость ...

Рассмотрим три сборки A, B и C

A нужно что-то определенное в B, B нужно что-то определенное в C, а C нужно что-то определенное в A.

Что вы можете построить первым?

2 голосов
/ 22 июля 2010

Добавьте к ответу Лукаса: очень сложно придумать круговую зависимость сборка в .NET.Чтобы скомпилировать A.dll, сначала нужно B.dll;для компиляции B.dll сначала нужно C.dll;но для компиляции C.dll вам нужны A.dll, которые вы пытались скомпилировать в первую очередь.

Единственный способ, которым вы можете попасть в эту ситуацию, - это если вы разрабатываете A, B иC параллельно, и вам удалось ввести циклическую зависимость случайно.Но как только вы выполните чистую сборку из всех трех, проблема станет очевидной, и вы не сможете продолжить, пока не разорвете цикл.

Круговые зависимости между пространствами имен и / или классами внутриодиночные зависимости встречаются гораздо чаще.Я пытаюсь рассматривать этот тип циклической зависимости как запах кода;кодовая база без циклических зависимостей между компонентами - это та, в которой эти компоненты можно легко хранить отдельно и подвергать рефакторингу независимо.

Патрик Смаккья (сотрудник NDepend) немного говорит о циклах зависимостей и их влиянии на качество кода:*http://codebetter.com/blogs/patricksmacchia/archive/2009/07/29/maintainability-learnability-component-layering.aspx

0 голосов
/ 13 августа 2010

Я один из разработчиков инструмента NDepend для разработчиков .NET, который специализируется на обеспечении чистой структуры кода и удалении циклов зависимостей.На нашем сайте продукта вы найдете две книги , относящиеся к проблеме цикла зависимости компонентов:

Разделение базы кода с помощью сборок .NET и проектов Visual Studio (8 страниц)

  • Общие действительные и недопустимые причины создания сборки
  • Увеличение производительности компиляции решения Visual Studio (до х10 быстрее)
  • Организация среды разработки

Определение компонентов .NET с пространствами имен (7 страниц)

  • Определение компонентов внутри сборок .NET
  • Ациклический график зависимостей между компонентами
  • Evolutionary Design и Ациклическая компонентизация
...