Я пытаюсь создать библиотеки инфраструктуры для своей компании. Библиотеки будут иметь типичные компоненты, такие как ведение журнала, обработка исключений, электронная почта и т. Д. Эти компоненты будут использоваться всеми приложениями ASP.Net, размещенными в нашей среде (так что среда хостинга - это мой контроль).Один контейнер для нескольких приложений ASP.Net
Мой первый шаг в дизайне заключается в том, что я бы не хотел, чтобы приложения ASP.nEt имели прямую ссылку на библиотечные компоненты. Поэтому я собираюсь внедрить эти dependecies во время выполнения. Я оценил довольно много контейнеров DI (единство, spring.net и т. Д.)
Но мне не нужно делать все, чтобы приложения ASP.Net использовали этот контейнер DI. Они получат интерфейс Dll для всех компонентов библиотеки и некоторую фабричную dll, которая даст им конкретный экземпляр компонента.
Мой вопрос заключается в том, как наилучшим образом спроектировать эту фабричную dll, чтобы только одна DLL могла обслуживать все приложения ASP.Net? Могу ли я использовать один контейнер DI для обслуживания всех приложений ASP.Net?
Спасибо за ответ Марк ... Думаю, я не поставил свой вопрос правильно. Моя проблема заключается не в том, что у меня есть несколько контейнеров DI, из которых можно решить. У меня будет только один контейнер DI. Моя проблема с электронной почтой заключается в том, как этот контейнер DI будет использоваться несколькими приложениями ASP.Net. Больше похоже на Single DI Container (один класс обертки над контейнером DI) ... Я надеюсь, что это имеет смысл, или если нет, это нормально, чтобы каждое приложение ASP.Net создавало значение класса оболочки и контейнер DI заботился о создание компонентов библиотеки. – rauts
@rauts: Тогда почему бы вам просто не создать экземпляр выбранного контейнера непосредственно в global.asax (или в подобном месте)? Вот и вся идея ... –
@rauts: Взгляните на этот SO-ответ, который объясняет, что я имел в виду под моим предыдущим комментарием: http://stackoverflow.com/questions/1410719/design-where-should-objects-be- зарегистрированный-при использовании-windsor/1410738 # 1410738 –