0

使用 Castle Windsor 进行依赖解析的性能成本在哪里?是开new WindsorContainer()还是开container.Resolve<T>()

基于对此的回答,ASP.NET 服务是否应该在 中初始化 Container Application_Start,然后Resolve<T>()根据需要进行初始化?还是Resolve<T>()Application_Start?

顺便说一句 - 我知道这可能会在某些人的脑海中构成过早的优化......我只是在为可扩展的 ASP.NET 服务寻找正确的实现。

4

1 回答 1

2

大多数应用程序中最昂贵的操作是在容器中注册组件 ( container.Install(FromAssembly.This())),这是每个应用程序执行一次的操作。

除非你做错了什么,否则解决问题的成本往往可以忽略不计。

扩大注册。与容器做的其他事情相比,它的成本很高。在绝对数量上,它仍然足够快,不会在绝大多数应用程序中令人头疼。

因为那是容器(以 Windsor 为例,因为这就是您似乎正在使用的,而且我碰巧最了解)去扫描程序集(带有反射)以查找您要注册的类型,然后检查这些类型(使用反射)以构建适当的组件模型,然后将所有这些信息提供给设施和其他扩展以进行检查和可能的修改。此时还会进行依赖关系图的分析和各种优化,以便 Windsor 可以在注册过程完成后更快地执行其他更频繁的操作。

于 2013-03-08T00:03:02.837 回答