WCF Rest 4 Dependency Injection - PullRequest
       6

WCF Rest 4 Dependency Injection

1 голос
/ 14 октября 2011

Существует множество примеров внедрения зависимостей для Wcf, но многие из них имеют дело с версиями Wcf до 4.0. У меня есть приложение, созданное с помощью Wcf 4 Rest, без файла .svc, которое в основном выглядит следующим образом.

public class RestService : IRestService
{
    IUserRepository _userRepo;

    public RestService(IUserRepository repo)
    {
        _repo = repo;
    }
    public UserModel GetUser(int id)
    {
        return _repo.GetUserById(id);
    }
 }

 public interface IRestService
 {
      [OperationContract]
      [WebInvoke(Method = "GET",
          ResponseFormat = WebMessageFormat.Json,
          UriTemplate = "/User/{id}",
          BodyStyle = WebMessageBodyStyle.Bare)]
      UserModel GetUserById(int id);
 }

Как я уже сказал, нет файла SVC, целых девять ярдов. Просто это в файле global.asax

RouteTable.Routes.Add(new ServiceRoute("RestService", new WebServiceHostFactory(), typeof(RestService)));

Итак, я хочу использовать Castle Windsor для добавления UserRepository.

Каков наилучший способ настройки службы в этой реализации 4.0 для использования Castle Windsor?

1 Ответ

0 голосов
/ 14 октября 2011

Внедрение зависимостей в WCF не легко осуществить. По сути, вам необходимо реализовать IServiceProvider, который будет вызываться при необходимости создания нового экземпляра службы. Затем вы можете использовать Windsor или другой инструмент IoC для получения экземпляра хранилища.

Пример такого контейнера IoC можно найти в посте о поставщиках экземпляров по адресу http://blogs.msdn.com/b/carlosfigueira/archive/2011/05/31/wcf-extensibility-iinstanceprovider.aspx.

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