解析应用服务耗时1秒

Resolve application service spent 1 second

我们在真正的产品中为用户使用了 abp。还有api,很简单,但是它的响应时间大约是1秒。我们认为不应该,于是我们调查了一下,发现应用服务方法的执行时间大约是100ms,解析应用服务用了大约1秒。

我们使用IocManager.RegisterAssemblyByConvention(thisAssembly) 进行注册。

以下截图来自用于调查的日志文件:

我的问题是:

  1. 为什么解析器花了这么多时间?
  2. 解决此问题的正确方法是什么。

之前,我们使用默认的 DependencyLifeStyle 作为 Transient,我们做了一些更改以将 DependencyLifeStyle 设置为每个请求。而且现在下决心这么快

代码修改如下:

public override void PreInitialize()
{
    IocManager.IocContainer.Kernel.ComponentRegistered += Kernel_ComponentRegistered;
}
private void Kernel_ComponentRegistered(string key, IHandler handler)
{
    foreach (var interceptor in interceptors)
    {
        if (interceptor.Key.IsAssignableFrom(handler.ComponentModel.Implementation))
        {
            handler.ComponentModel.Interceptors.Add(new InterceptorReference(interceptor.Value));
        }
    }   
    if (handler.ComponentModel.Implementation.Assembly.FullName.Contains(".Domain"))
    {
        if (handler.ComponentModel.LifestyleType == LifestyleType.Transient)
        {
            IocManager.IocContainer.Register(
            Component
                .For(handler.ComponentModel.Implementation)
                .ImplementedBy(handler.ComponentModel.Implementation)
                .LifestyleCustom<MsScopedLifestyleManager>()
                .IsDefault()
                .Named($"{key}-1")
                );
        }
    }
}