gpt4 book ai didi

asp.net-mvc-3 - 依赖注入(inject)调用了太多次?

转载 作者:行者123 更新时间:2023-12-02 01:57:57 24 4
gpt4 key购买 nike

好吧,也许我遗漏了什么或者担心太多...

我有一个 Controller 可以生成我的图像。在一个页面上它可以有 100 个或更多图像。对于生成的每个图像,都会调用 ImagingController。我使用依赖注入(inject)并注意到对于显示的每个图像,都构建了依赖类。

src="@Url.Action("Thumbnail", "Imaging")/id"

private readonly IDBAccess _dbaccess;
private readonly ILogger _logger;
private readonly ISettings _settings;
private readonly IStateManager _statemanager;

public ImagingController(IDBAccess dbaccess, ILogger logger, ISettings settings, IStateManager statemanager)
{
this._dbaccess = dbaccess;
this._logger = logger;
this._settings = settings;
this._statemanager = statemanager;
}

public ActionResult Thumbnail(int id)
{
...
return File((byte[])data, "image/jpeg");
}

所以上面4个依赖类每一个都被构造了100次。这似乎开销太大了,还是我错了?

最佳答案

可以使用生命周期管理对此进行优化。如果一个或多个依赖项是线程安全的,则没有理由为每个请求创建一个新实例。相反,您可以为所有 100 个请求重复使用同一个实例。

这称为单例生命周期风格(不要与单例设计模式混淆)。

如果您使用 DI 容器或手动连接依赖项,则无需编写代码,因此有关如何执行此操作的详细信息,我将向您推荐 my book ,其中都解释了如何手动执行此操作,以及如何为 6 个不同的 DI 容器配置生命周期。

此外,您可能还会发现这篇文章很有用:http://blog.ploeh.dk/2011/03/04/Composeobjectgraphswithconfidence

关于asp.net-mvc-3 - 依赖注入(inject)调用了太多次?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18845829/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com