首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >温莎城堡、IHttpHandler和IHttpHandlerFactory

温莎城堡、IHttpHandler和IHttpHandlerFactory
EN

Stack Overflow用户
提问于 2011-03-22 06:11:42
回答 1查看 1.1K关注 0票数 2

我正在开发一个RIA应用程序,其中客户端有javascript (我使用Ext),服务器端有.NET,对于json-rpc,我使用的是Jayrock,这是一个很好的库(至少对我来说是这样),因为它很简单,而且工作得很好,我以前用过它。

Jayrock使用Web处理程序为json-rpc请求提供服务,编写一个实现IHttpHandler的类,该类派生自具有某些属性的Jayrock类,剩下的工作是向浏览器提供一个javascript类来实现它的魔力。

现在,通常web处理程序会有无参数的构造函数,但我想在它们上使用DI,并使用windsor为我解决依赖关系

因此,我将拥有一些如下所示的类

代码语言:javascript
复制
    public class VistaEntidadSimpleServer :  JsonRpcVistaHandler ,IHttpHandler
{
    public VistaEntidadSimpleServer(ISomeDependecy someObject)
    {
                 someObject.doSomething();

    }


    [JsonRpcMethod("Aceptar")]
    public string Aceptar (IVista vista)
    {
        throw new NotImplementedException ();
    }


    [JsonRpcMethod("Cancelar")]
    public string Cancelar (IVista vista)
    {
        throw new NotImplementedException ();
    }


    public IVista CargarDatos(IVista vista)
    {
        throw new System.NotImplementedException();
    }

}

所以,现在的问题是如何让windsor在中间进行解析。在四处寻找之后,从spring看起来像是在做什么,我想我可以尝试一下IHttpHandlerFactory,并编写类似这样的代码

代码语言:javascript
复制
    public class CastleWindsorHttpHandlerFactory : IHttpHandlerFactory
{
    public CastleWindsorHttpHandlerFactory ()
    {
        if (container==null)
        container=(IWindsorContainer)HttpRuntime.Cache.Get("Container");
    }

    #region IHttpHandlerFactory implementation

    public IHttpHandler GetHandler (HttpContext context, string requestType, string url, string pathTranslated)
    {
        return container.Resolve<IHttpHandler>(url);
    }

    public void ReleaseHandler (IHttpHandler handler)
    {
        container.Release(handler);
    }

    #endregion

    private static IWindsorContainer container=null;
}

配置web应用程序以将工厂用于as文件,在global.asax中创建容器,使用url作为in配置处理程序,并将容器注册到web缓存中。

你认为这是一个很好的解决方案吗?或者是我在这里遗漏了什么,有没有其他方法可以让容器解析web处理程序?

提前感谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-03-22 07:04:33

在全局HttpApplication中实现IContainerAccessor以引用容器,而不是将容器存储在缓存中。不需要在CastleWindsorHttpHandlerFactory中存储引用。

除此之外,它看起来还不错。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5384355

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档