首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Web API 2- Unity IOC -每个请求变量的共享实例

Web API 2- Unity IOC -每个请求变量的共享实例
EN

Stack Overflow用户
提问于 2014-11-24 16:16:05
回答 1查看 407关注 0票数 0

我在unity IOC中使用web api。

web api客户端在请求标头中传递client-id,并根据该值解析依赖关系以创建外部dll的方法实例。

创建此实例大约需要6-7秒,这会在web api中产生性能问题。

我想要的是防止为header中具有相同client-id的调用创建实例。

到目前为止,我是这样实现的:

代码语言:javascript
复制
//========================== ArchiveFactory ==========================
        ArchiveFactory archiverFactory = (HttpRequest httpRequest) =>
        {
            container.RegisterType<IArchive, Archive>("Archive",
            new HierarchicalLifetimeManager(),
            new InjectionConstructor(
                new ResolvedParameter<IStoreClient>(),
                Helper.GetArchiveContext(httpRequest))
                );
            return container.Resolve<IArchive>("Archive");
        };
        container.RegisterInstance(archiverFactory);

在我的需求中具体地说-我正在调用amazon服务来检索图像,并且有一个公司dll来调用amazon。

EN

回答 1

Stack Overflow用户

发布于 2016-08-10 23:58:14

你可以在控制器/API层使用缓存机制(例如Strathweb.CacheOutput.WebApi2),你可以像下面这样修饰控制器方法。它可以基于参数进行缓存,因此如果请求带有相同的参数,它将从缓存中返回结果。

代码语言:javascript
复制
[HttpGet]
[Route("")]
[CacheOutput(ServerTimeSpan = 60, ExcludeQueryStringFromCacheKey = true)]
public IHttpActionResult GetProducts(string clientId)
{
    var product = new List<Product>();
    return Ok(product);
}

此外,您可能希望检查正在尝试实例化的类构造函数是否存在速度过慢的问题。如果可以的话,你也可以考虑使用延迟加载。

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

https://stackoverflow.com/questions/27100433

复制
相关文章

相似问题

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