Лучшие практики IoC в крупных проектах - PullRequest
7 голосов
/ 17 марта 2010

Какие методы вы считаете полезными для управления зависимостями больших проектов с помощью контейнеров Inversion of Control?

Вы загружаете все в одном месте или разбиваете его?

Вы когда-нибудь использовали несколько контейнеров?

1 Ответ

8 голосов
/ 17 марта 2010

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

В противном случае может возникнуть путаница в отношении обязанностей, и вы также рискуете ввести всевозможные тонкие ошибки, поскольку экземпляр IFoo, разрешенный в одном месте, может совпадать или не совпадать с экземпляром IFoo, разрешенным в другом месте.

Если приложение настолько велико, что разрешение всего графа зависимостей за один раз просто непомерно дорого, вы можете решить эту проблему, используя время отложенной загрузки в стратегических местах (около Aggregate Services ).

Концептуально, у меня всегда есть только один контейнер . (У меня иногда есть несколько родительских / дочерних контейнеров, чтобы сломать некоторые циклические зависимости, но это деталь реализации.)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...