шаблон проектирования для добавления веб-сервиса в ASP.NET MVC3 - PullRequest
1 голос
/ 04 марта 2011

Во-первых - я не задаю этот вопрос Как разместить веб-сервис в MVC3? Я знаю, где находится кнопка: -)

Я пытаюсь найти пример передового опыта использования новой структуры DI / Common Service Locator для того, чтобы сделать вызовы веб-службы (и код, зависящий от вызовов веб-службы) тестируемыми. У меня нет опыта использования NInject или чего-то подобного - это путь?

Ответы [ 2 ]

4 голосов
/ 04 марта 2011

Примерно так же, как и с любой внешней зависимостью - оберните ее в интерфейс, заставьте контроллер взять экземпляр интерфейса в качестве параметра конструктора. С точки зрения реализации, вы можете справиться с вещами несколькими способами, мы обычно заставляем оболочку службы воспринимать службу как зависимость и позволяем structmap беспокоиться о жизненном цикле. Не очень знаком с NInject, поэтому я не уверен, что есть лучший способ, но я подозреваю, что у них есть подобные возможности.

1 голос
/ 05 марта 2011

Я не знаю, что является лучшей практикой, но я думаю, что вы можете сделать это с помощью WCF в Виндзоре (Ninject также имеет расширение WCF ).Зарегистрируйте свой сервис, затем установите свой распознаватель зависимостей и позвольте разрешителю зависимостей MVC выполнить тяжелую работу, например, с помощью конструктора:

Зарегистрируйте свой сервис:

container = new WindsorContainer().AddFacility<WcfFacility>();

container.Register(Component
    .For<IService>()
    .On(WcfEndpoint.FromConfiguration("...")))
    .LifeStyle.Transient);

Установите средство разрешения зависимостей:

DependencyResolver.SetResolver(new WindsorDependencyResolver(container));

Тогда новый обработчик зависимостей MVC3 сможет внедрить ваш прокси-сервер службы в конструктор, например:

public HomeController(IService service)
{
    // ...
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...