Один DI-контейнер для нескольких приложений ASP.Net - PullRequest
1 голос
/ 14 сентября 2009

Я пытаюсь создать инфраструктурные библиотеки для моей компании. В библиотеках будут типичные компоненты, такие как ведение журналов, обработка исключений, электронная почта и т. Д. Эти компоненты будут использоваться всеми приложениями ASP.Net, размещенными в нашей среде (так что среда хостинга - это мой контроль).

Мой первый шаг в дизайне заключается в том, что я не хотел бы, чтобы приложения ASP.nEt имели прямую ссылку на компоненты библиотеки. Так что я думаю, чтобы внедрить эти зависимости во время выполнения. Я оценил довольно много DI-контейнеров (Unity, Spring.net и т.д.)

Но мне не нужно заставлять все приложения ASP.Net использовать этот DI-контейнер. Они получат интерфейс Dll для всех библиотечных компонентов и какую-то фабричную DLL, которая даст им конкретный экземпляр компонента.

Мой вопрос: каков наилучший способ разработки этой библиотеки DLL, чтобы только одна библиотека DLL могла обслуживать все приложения ASP.Net? Могу ли я использовать один контейнер DI для обслуживания всех приложений ASP.Net?

1 Ответ

1 голос
/ 14 сентября 2009

Ну, вы можете просто определить интерфейс контейнера следующим образом:

public interface IContainer
{
    T Resolve<T>();
}

(очевидно, вы можете добавить больше методов, если вам нужно). Затем вы можете создать конкретную реализацию этого интерфейса IContainer на основе выбранного вами DI-контейнера.

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

Ваши приложения ASP.NET будут просто использовать интерфейс IContainer и вызывать метод Resolve для получения экземпляров необходимых компонентов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...