autofac - Autofac 性能调优
问题描述
我们在 c# 代码中使用 SingleInstance 实现了以下 Autofac 代码。我们发现每次调用特定服务时,为所有服务初始化构造函数大约需要 3 到 4 秒。请在下面找到以下代码实现。
private static void RegisterDependency(HttpConfiguration config)
{
Log.Trace("Registering dependencies");
var builder = new ContainerBuilder();
HttpContextBase httpContextBase = new HttpContextWrapper(HttpContext.Current);
var configService = new ConfigurationService(httpContextBase, new CacheWrapper());
var stubModeValue = configService.GetResourcePreferenceValueByKeyName("stubMode", "N");
var isStubMode = "Y".Equals(stubModeValue, StringComparison.OrdinalIgnoreCase);
builder.RegisterAssemblyTypes(typeof(ClientService).Assembly).Where(x => x.isClass && x.isPublic && !x.isAbstract)
.Where(x => isStubMode = x.Name.EndsWith("stub").AsImplementedInterface();
RegisterServiceProxy<ExternalService1>(builder);
RegisterServiceProxy<ExternalService2>(builder);
RegisterServiceProxy<ExternalService3>(builder);
builder.Register<IUserProfile>(x => OwnerIdentityAndRoleProfile.Current).InstancePerLifeTimeScope();
builder.Register<IConfigurationService>(c => new ConfigurationService(httpContextBase, new CacheWrapper()).InstancePerLifeTimeScope;
builder.RegisterType<ServiceProxyProvider>().SingleInstance();
builder.RegisterType<wsProfileWrapper>() As <wsProfileWrapper>();
var container = builder.build();
ServiceProxyProvider = container.Resolve<serviceProxyProvider>();
config.DependencyResolver = new AutofacWebAPIDependencyResolver(container);
Log.Trace("Completed Registering dependencies");
}
static void RegisterServiceProxy<T> (ContainerBuilder builder) where T:class
{
builder.Register(_ => _serviceProxyProvider.CreateServiceProxyInstance<T>()).InstancePerRequest()
.OnRelease(x => _serviceProxyProvider.Dispose(x));
}
谢谢。
解决方案
推荐阅读
- python-3.x - 熊猫的长期运行时间
- c# - 尝试使用自定义类编译类会导致错误 CS0246
- php - 使用 cURL PHP 获取 Instagram 公共 JSON 提要
- delphi - Firemonkey 10.3 中的鼠标离开事件
- arraylist - Silverstripe 3 过滤器 ArrayList
- javascript - 使用 jQuery 动态添加行
- javascript - 如何消除 HTML 中按钮与其父级之间的一些额外像素?
- amazon-web-services - AWS EC2 安全组 https vs tcp vs ssh
- merge - Boomla 中的拉取请求或类似请求
- react-native - 启动画面上的动画