Общий сервисный локатор и реализации IDependencyResolver - PullRequest
1 голос
/ 09 сентября 2011

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

В настоящее время он использует Autofac для внедрения зависимостей, но я хотел бы удалить эту зависимость и позволить вызывающим абонентам использовать любой DI-контейнер.

Если я использую проект P & P / Codeplex Common Service Locator в своем решении, тогда вызывающим абонентам все равно нужно будет предоставить свои собственные реализации IServiceLocator для экземпляра этого интерфейса, представленного моим движком. Если вместо этого я использую IDependencyResolver из MVC3, то, по крайней мере, есть существующие реализации отображения из различных контейнеров DI в этот интерфейс.

Должен ли я: -

  1. использовать Common Service Locator и принудительно вызывать вызывающие стороны для реализации классов отображения.
  2. использовать интерфейс MVC 3 IDependencyResolver, который уже имеет сопоставления с другими контейнерами.
  3. примите object в качестве средства разрешения зависимостей и введите его, чтобы получить единственный нужный мне метод, чтобы я мог использовать интерфейс MVC3, даже не принимая зависимость от ASP.NET MVC3.
  4. другой

1 Ответ

0 голосов
/ 06 января 2012

Common Service Locator, по определению, представляет собой интерфейсную сборку, которая никогда не изменяется и не нуждается в конкретной версии.

Кроме того, все распространенные библиотеки IOC теперь имеют реализации для подключения к Common Service Locator.

Таким образом, вариант 1 является наилучшим вариантом, и риск его поломки в новой версии Common Service Locator практически нулевой.

Спасибо Филипу Лауреано за помощь в ответе.

...