1

Я пытаюсь понять большой проект, который сильно использует StructureMap (контейнер контейнера IOC/DI). Интерфейсы всех общих компонентов содержатся в одном проекте, на который ссылаются все другие проекты.Как IOC/DI влияет на обслуживание зависимостей?

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

Как я могу построить дерево иерархии? И наоборот, концентрирует все интерфейсы в одной успешной практике суперпроекта или, если это скорее «нормальный», т. Е. Каждый проект содержит свои собственные общедоступные интерфейсы (а также предопределенные конкретные классы, которые его реализуют). Это также позволило бы легко построить иерархию, просто следуя проектам ссылок.

ответ

1

Это может быть немного субъективно, но я бы защищал эту упаковку интерфейсов в отдельном проекте, содержащем интерфейсы, которые естественно не связаны друг с другом. Если у вас есть отдельные проекты для разных частей приложения, интерфейсы для этих проектов также должны быть отдельными. Хотя иногда может возникнуть причина поместить интерфейсы в отдельный проект из реализации, вряд ли есть веская причина объединить интерфейсы из нескольких проектов реализации в один проект гигантского интерфейса, как вы описали.

Если вы застряли в этой ситуации и хотите выявить реальные зависимости времени выполнения, вам, вероятно, потребуется проверить конфигурацию, которая может быть возможна с использованием DSL реестра, или может потребоваться разбор XML-конфигурации.

+0

Я полностью согласен с разделом интерфейса. Я задавался вопросом, существует ли конкретная причина, связанная с IOC-контейнером, не делать это «нормальным» способом, как вы описали, но, похоже, нет. – mafu

+0

Что касается зависимостей, если я получу это право, DSL реестра сообщает только о зависимостях между компонентами в контейнере, а не о проектах более высокого уровня, что является очень неполным изображением. Я предполагаю, что мне там не повезло, и мне нужно вручную это понять? – mafu

+0

Вы правы, что вам, вероятно, придется увеличить любую информацию, полученную вами из реестра или xml, с информацией о том, где находятся объекты в проектах, и вам придется вручную определять эти соединения, если только это не поможет в вашей среде IDE. Скорее всего, беспорядок! –

Смежные вопросы