2010-04-22 6 views
0

Я пытаюсь понять, как именно работает DI. Я использую Windsor как контейнер DI. Я использую это, чтобы динамически загружать мои услуги в код без прямой ссылки. Но у меня есть поведение изменений и вы хотите узнать немного больше об экземпляре mgmt, используя DI.Управление экземпляром с помощью инъекции зависимостей (DI)

У меня есть веб-приложение projct, здесь есть служба WCF, использующая PerCall в качестве экземпляра. Это означает, что новый экземпляр/вызов. В этом WCF я вызываю службу (загружается через DI), и эта служба вызывает другую услугу (снова загружается через DI). WCF - это новый экземпляр в appdomain, но как насчет сервисов. Они также являются новыми примерами? Является ли этот контейнер DI общим для всех экземпляров WCF и являются ли сервисы в этом контейнере также единичными экземплярами?

Может ли кто-нибудь уточнить?

+0

Вы, вероятно, получите более полезные ответы, если вы принимаете какие-то ответы от предыдущих вопросов –

+0

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

ответ

1

Трудно ответить, когда ваше описание настолько расплывчато. Несколько баллов:

  • Компоненты не должны делиться '' контейнером. Компоненты никогда не должны иметь ссылки на контейнер.

  • Имейте один экземпляр контейнера корма для всего вашего приложения. В webapp вы обычно создаете экземпляр и настраиваете его в ApplicationStart и позволяете ему выполнять свою работу оттуда.

  • Будьте осторожны, чтобы не зависеть от более короткоживущих компонентов. Например, компоненты singleton не должны зависеть от переходных компонентов.

+0

Кажется, мне нужно узнать, что именно происходит в контейнере. В настоящее время при запуске приложения я создаю этот контейнер на основе того, что находится в моем файле конфигурации. (услуги). Когда мне нужна услуга, я передаю ее конструктору. Там происходит волшебство, я получаю экземпляр этой службы. Но как долго этот экземпляр остается в живых? Например, если я использую службу в контроллере MVC. Как долго контроллер остается в живых? Пока запрос не будет выполнен? – Sven

+0

Это зависит от стиля жизни. Почему бы вам не взглянуть на документацию и руководство пользователя? http://castleproject.org/container/documentation/v21/index.html –

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