如何缩短Spring.NET DLL加载时间

如何缩短Spring.NET DLL加载时间,dll,load,startup,spring.net,Dll,Load,Startup,Spring.net,我正在使用Spring.NET,遇到了很长的Ioc容器加载时间。应用程序上下文配置只有几个对象(比如10个对象),但有时需要20秒才能加载容器。我可以在调试器中看到,这一次似乎是由于加载了大量具有奇数名称的(DDL?)。最终的结果是Windows服务需要很长时间才能启动,IT运营商认为它挂起了 我能做些什么来避免这种情况。我试过“只写我的代码”。有什么想法吗 'Forge.Enterprise.Infrastructure.Scheduling.Server.vshost.exe' (Manag

我正在使用Spring.NET,遇到了很长的Ioc容器加载时间。应用程序上下文配置只有几个对象(比如10个对象),但有时需要20秒才能加载容器。我可以在调试器中看到,这一次似乎是由于加载了大量具有奇数名称的(DDL?)。最终的结果是Windows服务需要很长时间才能启动,IT运营商认为它挂起了

我能做些什么来避免这种情况。我试过“只写我的代码”。有什么想法吗

'Forge.Enterprise.Infrastructure.Scheduling.Server.vshost.exe' (Managed (v4.0.30319)): Loaded '0xclmvcv'
'Forge.Enterprise.Infrastructure.Scheduling.Server.vshost.exe' (Managed (v4.0.30319)): Loaded 'rpuvyhdh'
'Forge.Enterprise.Infrastructure.Scheduling.Server.vshost.exe' (Managed (v4.0.30319)): Loaded 'sq10jbae'
'Forge.Enterprise.Infrastructure.Scheduling.Server.vshost.exe' (Managed (v4.0.30319)): Loaded 'tmpk4bvl'

我被要求分享上面的评论,作为其他人发现有用的答案


在.NET c#Reflect.Emit中显式使用了慢度。我们使用它来生成实现ServiceContract单向操作的代理,以便它们通过NMS+ActiveMQ而不是WCF支持的传输。请求/响应的不同之处在于使用返回类型而不是void,对于这些类型,每个方法的成本为200-400ms。所以我分离出了分离接口的唯一方法,这样它们就不会被代理。也就是说,如果spring AOP遇到同样的性能问题,我也不会感到惊讶。。但可能仅针对DataContract arge/返回类型

我被要求分享上述评论,作为其他人发现有用的答案


在.NET c#Reflect.Emit中显式使用了慢度。我们使用它来生成实现ServiceContract单向操作的代理,以便它们通过NMS+ActiveMQ而不是WCF支持的传输。请求/响应的不同之处在于使用返回类型而不是void,对于这些类型,每个方法的成本为200-400ms。所以我分离出了分离接口的唯一方法,这样它们就不会被代理。也就是说,如果spring AOP遇到同样的性能问题,我也不会感到惊讶。。但也许只有针对DataContract arge/return类型

才能发布配置文件?这些dll名称看起来很像.Net创建的动态dll;但它们可能是由其他东西产生的。对于Aop,spring动态创建代理,但该动态dll的名称通常是
spring.Proxy
。对于动态dll的其他一些源有一个答案。事实证明,这是Reflect.Emit缓慢的一个问题,特别是当发送具有非void返回类型的方法时。在这种情况下,每种方法的成本约为1-2秒。您对XmlSerializer DLL的看法是正确的,这些是我们为XML序列化注释的数据契约,是与spring.net(aop使用Reflection.Emit)还是与其他代码相关?你解决了吗?Marijn,在.NETC#Reflect.Emit中显式使用了慢度。我们使用它来生成实现ServiceContract单向操作的代理,以便它们通过NMS+ActiveMQ而不是WCF支持的传输。请求/响应的不同之处在于使用返回类型而不是void,对于这些类型,每个方法的成本为200-400ms。所以我分离出了分离接口的唯一方法,这样它们就不会被代理。也就是说,如果spring AOP遇到同样的性能问题,我也不会感到惊讶。。但可能只适用于DataContract arge/返回类型。您能发布配置文件吗?这些dll名称看起来很像.Net创建的动态dll;但它们可能是由其他东西产生的。对于Aop,spring动态创建代理,但该动态dll的名称通常是
spring.Proxy
。对于动态dll的其他一些源有一个答案。事实证明,这是Reflect.Emit缓慢的一个问题,特别是当发送具有非void返回类型的方法时。在这种情况下,每种方法的成本约为1-2秒。您对XmlSerializer DLL的看法是正确的,这些是我们为XML序列化注释的数据契约,是与spring.net(aop使用Reflection.Emit)还是与其他代码相关?你解决了吗?Marijn,在.NETC#Reflect.Emit中显式使用了慢度。我们使用它来生成实现ServiceContract单向操作的代理,以便它们通过NMS+ActiveMQ而不是WCF支持的传输。请求/响应的不同之处在于使用返回类型而不是void,对于这些类型,每个方法的成本为200-400ms。所以我分离出了分离接口的唯一方法,这样它们就不会被代理。也就是说,如果spring AOP遇到同样的性能问题,我也不会感到惊讶。。但可能仅适用于DataContract arge/返回类型。