我们在面向用户的真正产品中使用了abp。而且有api,它很简单,但是它的响应时间约为1秒。我们认为不应该这样,然后我们进行调查,发现应用程序服务方法的执行时间约为100毫秒,并解决了大约1秒钟的应用程序服务。
我们使用IocManager.RegisterAssemblyByConvention(thisAssembly)进行注册。
我的问题是:
答案 0 :(得分:0)
之前,我们使用默认的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")
);
}
}
}