Вопрос

Что такое контейнер IOC?

Что такое IOC/DI Framework?

Зачем нам нужна структура для IOC/DI?

Есть ли связь между МОК/DI и AOP?

Что такое Spring.net/ninject по отношению к МОК и AOP?

Это было полезно?

Решение

JMSA,

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

Spring.net, Ninject, Unity, Castle Windsor, Autofac - все контейнеры IOC, которые настраиваются по -разному, многие из них также поддерживают AOP.

Фреймворки для IOC / DI полезны, поскольку они предоставляют стандартные механизмы, например, если вы нанимаете нового разработчика, мы гораздо проще сказать, мы используем эту структуру и передаем им ссылки в руководство по руководству / справочнику. В то же время эти рамки опробованы и протестированы крупным сообществом / компаниями.

Дайте мне знать, если какой -либо из ваших вопросов останется без ответа после прочтения статьи, и приведенное выше отвечает, и я сделаю все возможное, чтобы оказать дополнительную помощь.

Другие советы

С точки зрения семантики ...

Сама инъекция зависимости подразумевает зависимость, т.е. что -то, что есть требуется для строительства/использования («Основные проблемы» приложения). Например, автомобиль не является автомобилем без двигателя.

Аспекты описываются как перекрестные проблемы с основными проблемами приложения. Это означает, что как отдельно, так и не являются основными к основным проблемам (вы можете думать о них как о «хороших до ударах»). Поскольку приложение может работать без аспектов, действительно ли они зависимы? Например, машина все еще является автомобилем, даже без иммобилайзер.

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

Таким образом, в то время как на практике DI можно использовать для реализации аспектов, я бы не назвал этот процесс True Di. Это исходит от того, кто использует исключительно инъекцию конструктора.

Мартин Фаулер имеет хорошую статью здесь о значении инверсии контроля и инъекции зависимости.

Использование Spring.net AOP подробно описано здесь. Анкет Я более знаком с версией Spring на базе Java, поэтому я не могу с уверенностью сказать, что Spring.net в настоящее время поддерживает только прокси-сервер AOP.

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

Хотя в нем говорится:

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top