Serialization Autofac ContainerBuilder。构建平均需要2000毫秒

Serialization Autofac ContainerBuilder。构建平均需要2000毫秒,serialization,autofac,Serialization,Autofac,我有大约1000个类和接口分布在大约10个程序集中,我正在使用Autofac.Module注册依赖项,并且大多数类都是使用builder.RegisterAssemblyTypes.WhereSomeCondition.AsImplementedInterfaces注册的 问题是对containerBuilder.Build的调用大约需要2000毫秒 是否有任何性能提示或调试建议来减少此时间 我已经阅读了这个链接:我主要是按照这里的建议 例如,我认为我可以使用BinaryFormatter使用一

我有大约1000个类和接口分布在大约10个程序集中,我正在使用Autofac.Module注册依赖项,并且大多数类都是使用builder.RegisterAssemblyTypes.WhereSomeCondition.AsImplementedInterfaces注册的

问题是对containerBuilder.Build的调用大约需要2000毫秒

是否有任何性能提示或调试建议来减少此时间

我已经阅读了这个链接:我主要是按照这里的建议

例如,我认为我可以使用BinaryFormatter使用一些缓存保存构建容器的状态,并在依赖项更改或缓存失效时重新创建容器。但要做到这一点,IContainer需要用[Serializable]标记,我讨论了这个选项,因为正如一些人建议的那样,容器引用了其他字段和类

那么,我能做些什么来发现问题并减少这一时间?因为IIS会在一段空闲时间后关闭应用程序,然后,即使没有部署,我的应用程序也需要大约4、5秒来启动,2秒是因为容器,2秒是因为从NHibernate创建SessionFactory


我使用的是Autofac 3.0.0版

使容器可序列化是不可能的。注册通常引用函数块外的变量/字段等。是的,我放弃了这个选项。Tks!如果性能比程序集扫描的便利性更重要,则可以使用lambda函数单独注册每个类型。这将减轻Autofac的一些反射。是的…,我想,但是当我想到需要注册的类的数量=,我就变得懒惰了。我只是希望在容器的配置中会存在一些可以实现这个目的的东西。我将在一些大模块中使用大量类分别注册这些类型,看看时间是否缩短。您可以编写一个小应用程序,迭代容器中的注册,并生成c代码来显式注册每个类型。