3/16/2008 5:49:49 PM

Сделал проект с использованием Web Client Software Factory - очень удобная, надо сказать, штука.
"Прикрутил" к этому проекту MS Ajax Toolkit и столкнулся с тем, что веб-сервисы не обрабатываются ObjectBuilder'ом, соответственно, "достучаться" до контроллера модуля не представляется возможным.
Можно, конечно, явно создавать экземпляр контроллера прямо в веб-сервисе, но это тоже ничего не даст в том случае, если контроллер использует какие-то зарегистрированные сервисы, а обычно это так и есть.

Вторично я столкнулся с той же проблемой когда стал делать HttpHandler для множественной загрузки файлов на сервер. Точно так же нужно было работать с имеющейся инфраструктурой (контроллером модуля, сервисами), ведь не писать же повторно тот же самый код, только в обход общей архитектуры?!

Однако, проблема решилась банально просто.
Для HttpHandlers я сделал примитивный базовый класс, от которого наследуются все конкретные обработчики.

public abstract class HttpHandlerBase : IHttpHandler
{
    public HttpHandlerBase()
    {
        WebClientApplication.BuildItemWithCurrentContext(this);
    }
    public abstract bool IsReusable { get; }
    public abstract void ProcessRequest(HttpContext context);
}

То есть, в конструкторе экземпяра мы просто "пропускаем" его через ObjectBuilder (WebClientApplication - это класс приложения Web Client Software Factory) и, соответственно, можем пользоваться всей нужной нам инфраструктурой.

То же самое можно сделать и для веб-сервисов.

Comments are closed

Powered by BlogEngine.NET 2.5.0.6

About the author

Alexey Raga Alexey Raga
.NET software developer.

E-mail me Send mail

Twitter


Recent posts

Archive

Disclaimer

The opinions expressed herein are my own personal opinions and do not represent my employer's view in anyway.

© Copyright 2012

Sign in