为什么OwinStartupAttribute处于汇编级别?

时间:2014-12-19 23:15:17

标签: owin katana

我正在尝试从http://www.asp.net/aspnet/overview/owin-and-katana/owin-startup-class-detection学习Owin和Katana架构。我尝试使用OwinStartup作为类级别属性,但由于它在程序集级别,因此无法执行此操作。我觉得奇怪的是为什么它在集会层面受到限制。

1 个答案:

答案 0 :(得分:2)

米兰在评论中说的几乎是什么。它主要用于性能目的,因为与获取程序集中所有类型的列表(可能有数千,数万或甚至更多)相比,扫描程序集级属性相当快,然后获得所有程序集中每个类型的属性。

因此,在某些合理类型的应用程序中,可能有50个程序集,每个程序集的平均值为200个类型。与扫描类型级属性50 * 200 = 10,000次相比,扫描装配级属性50次更快。

此外,扫描类型会导致许多其他事情发生,例如类型分辨率,这可能会导致失败。诸如ASP.NET MVC和Web API(以及其他)之类的系统在所有引用的程序集中查找所有类型,并且它们必须做很多技巧才能使其工作(尽管它们有充分的理由这样做)。