0
我有执行一个程序(控制台),作为客户端调用服务或服务器调用自身的本地服务的方法有两种。第一种方式Autofac初始化非常快,只导致注册两个模块,服务器的速度较慢,因为Autofac必须初始化所有服务器模块(超过1分钟)。执行方式取决于控制台的参数。如何动态地加载Autofac配置初始化
等待更好的解决方案我在控制台模块上实现了它,在需要时加载服务器模块,但它有点硬编码(从文件中提取模块和配置/属性),因为我配置了混合文件和模块(下面的示例),我会保留配置文件。
我想动态选择文件:
<autofac configSource="autofac-client.config" />
或
<autofac configSource="autofac-server.config" />
CODE:
autofac-client.config:
<autofac defaultAssembly="Console1">
<files>
<file name=".\BaseSettings\ClientServices.config" section="clientServices" />
</files>
<modules>
<module type="Console1.AutofacModules.ComponentModule, Console1" />
</modules>
</autofac>
autofac-server.config:
<autofac defaultAssembly="Console1">
<files>
<file name=".\BaseSettings\ClientServices.config" section="clientServices" />
<file name=".\BaseSettings\AutofacRegistrationModules.config" section="AutofacRegistrationModules" />
</files>
<modules>
<module type="assembly1.AutofacModules.ComponentModule, assembly1" />
<module type="assembly2.AutofacModules.PrintManagerModule, assembly2" />
<module type="assembly3.AutofacModules.ComponentModule, assembly3" />
<module type="assembly4.AutofacModules.FormEngineServicesComponentModule, assembly4" />
<module type="assembly5.ReportManagerServicesComponentModule, assembly5" />
<module type="assembly6.NHibernateComponentModule, assembly6">
<properties>
<property name="DatabaseConfigurationSectionName" value="databaseSettingsEClient" />
</properties>
</module>
<module type="assembly7.AutofacModules.ComponentModule, assembly7" />
<module type="assembly8.AutofacModules.ComponentModule, assembly8" />
<module type="assembly9.AutofacModules.ComponentModule, assembly9" />
<module type="Console1.AutofacModules.ComponentModule, Console1" />
</modules>
</autofac>
正如你可以看到,有很多的配置使用builder.RegisterModule的代码复制。