Какова рекомендуемая структура внедрения зависимостей для ASP.NET MVC? - PullRequest
9 голосов
/ 26 мая 2011

Я искал хорошее внедрение зависимостей для ASP.NET MVC. недавно я программист Java EE, я всегда использовал Spring для DI Framework. Но после поиска некоторого учебника из интернета. Spring.NET требует явной конфигурации XML для каждого контроллера, который необходимо внедрить.

<spring>
    <context>
        <resource uri="config://spring/objects"/>
    </context>
    <objects xmlns="http://www.springframework.net">

        <object id="HomeController" type="SpringTestApplication.Controllers.HomeController, SpringTestApplication" singleton="false">
            <property name="TestProperty" value="This has been injected via Spring.Net"/>
        </object>

    </objects>   
</spring>

И я думаю, что это очень завершено, потому что нет функции автопроводки, как Spring в Java World. Можете ли вы предложить мне рекомендуемый DI Framework для ASP.NET MVC?

Спасибо заранее.

Ответы [ 5 ]

7 голосов
/ 26 мая 2011

Я бы не сказал, что существует де-факто рекомендуемая структура DI для платформы ASP.NET MVC. Однако в мире .NET существует довольно много популярных DI-фреймворков: Castle Windsor , Autofac , StructureMap , Ninject , Unity , Sprint.NET и т. Д.

Я бы определенно рекомендовал Ninject . Источник можно найти на github . Существует Ninject расширение для различных версий ASP.NET MVC. Проект также содержит пример приложения.

Если вы хотите взглянуть на приложение, использующее Ninject, я бы порекомендовал движок блога Subtext .

Позвольте мне также предложить вам взглянуть на книгу Марка Симанна: Внедрение зависимостей в .NET . Он охватывает некоторые из основных структур для .NET. К сожалению, это не распространяется на Ninject.

4 голосов
/ 26 мая 2011

Замок Виндзор, Ninject, Autofac все хорошие кандидаты

Лично я использую Замок сейчас.

Хороший пример того, как все настроить, смотрите http://wiki.sharparchitecture.net/

3 голосов
/ 26 мая 2011

Я использовал оба Unity и Castle Windsor с MVC. Оба хороши, оба имеют либо XML, либо свободную конфигурацию API.

2 голосов
/ 26 мая 2011

Я не думаю, что есть "предпочтительная" структура. Как показывают другие ответы, у вас есть несколько вариантов, одним из которых является spring.net.

Что касается spring.net:

  • существует проект CodeConfig , который вам может понравиться
  • Поддержка Visual Studio для работы с конфигурацией xml несколько улучшилась благодаря надстройке vs.net , ReSharper также помогает
  • asp.net mvc 2 поддерживается из коробки с версией 1.3.1 (текущая версия)
  • asp.net mvc 3 будет поддерживаться из коробки с версией 1.3.2, которая ожидается в ближайшее время

Возможно, вы захотите принять во внимание вышесказанное, если хотите использовать свои навыки работы с Spring Java с помощью spring.net.

1 голос
/ 26 мая 2011

Вы можете использовать подход CodeConfig, как в мире Java:

http://springframework.net/#spring-code-config-1.0.1-released

Предоставляется образец MVC.

...