МОК / Внедрение зависимости - объясните код по сравнению с XML

Я понимаю в основном, как платформы МОК работают, однако одна вещь, которую я не вполне получаю, состоит в том, как основанная на коде конфигурация, как предполагается, работает. С XML я понимаю, как Вы могли добавить новый блок к развертываемому приложению, затем изменить конфигурацию в XML для включения его. Если приложение уже развертывается (т.е. компилируется в некоторой форме), затем, как изменения кода могут быть внесены без перекомпиляции? Или, что, что люди делают, просто измените конфигурацию в коде и перекомпилируйте?

8
задан alexandrul 19 May 2010 в 09:25
поделиться

3 ответа

Зависимости с горячей заменой - не единственная цель использования контейнера DI.

Внедрение зависимостей (DI) - это принцип, который помогает нам разрабатывать слабосвязанный код. Слабая взаимосвязь означает только то, что мы можем варьировать потребителей и услуги независимо друг от друга. Как мы этого достигаем, на этом уровне не рассматривается.

Контейнеры DI - это фреймворки, которые помогают совместно использовать зависимости проводов. Это более или менее просто служебные библиотеки, которые помогают нам применять шаблоны DI. Еще раз, то, как мы настраиваем контейнер, перпендикулярно тому, как мы используем эти зависимости.

Конфигурации XML позволяют нам изменять конфигурацию контейнера без перекомпиляции . Код как конфигурация - нет.

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

14
ответ дан 5 December 2019 в 10:02
поделиться

IoC и Dep инъекция могут помочь разрешить изменения без перекомпиляции (в зависимости от используемых инструментов), но не требуют этого. Использование кода для настройки - это настройка контейнера, а не изменения после развертывания. Да, если вы вносите изменения в код, вам обычно нужно перекомпилировать.

2
ответ дан 5 December 2019 в 10:02
поделиться

Тот факт, что контейнер DI использует код для конфигурации, не означает, что никакая конфигурация не может быть изменена без перекомпиляции. Это действительно требует, чтобы вы точно продумали, что именно вы хотите настроить таким образом, и предоставили некоторые средства для изменения этой конфигурации (например, через файл свойств).

0
ответ дан 5 December 2019 в 10:02
поделиться
Другие вопросы по тегам:

Похожие вопросы: