Owin과 Katana 아키텍처를 http://www.asp.net/aspnet/overview/owin-and-katana/owin-startup-class-detection에서 배우려고합니다. 클래스 수준의 특성으로 OwinStartup을 사용해 보았는데 어셈블리 수준에서 OwinStartup을 사용할 수 없었습니다. 나는 왜 그것이 어셈블리 레벨에서 제한되어 있는지 이상하게 느낀다.OwinStartupAttribute가 어셈블리 수준에있는 이유는 무엇입니까?
1
A
답변
2
밀란이 댓글에서 말한 것과 거의 같습니다. 어셈블리 수준의 특성을 검사하는 것이 어셈블리의 모든 형식 목록을 얻는 것 (수천, 수만 또는 그 이상이 될 수 있음)에 비해 상당히 빠르기 때문에 주로 성능 목적을위한 것입니다. 그런 다음 모든 유형의 모든 특성을 가져옵니다 어셈블리에서.
따라서 합리적인 유형의 응용 프로그램에는 50 개의 어셈블리가있을 수 있으며 각 어셈블리에는 평균 200 개의 유형이 있습니다. 50 * 200 = 10,000 번 유형 수준 속성을 스캔하는 것과 비교하여 어셈블리 레벨 속성을 50 번 스캔하는 것이 더 빠릅니다.
또한 검색 유형으로 인해 유형 해결과 같은 많은 문제가 발생하여 오류가 발생할 수 있습니다. ASP.NET MVC 및 Web API와 같은 시스템은 모든 참조 된 어셈블리에서 모든 유형을 찾고 해당 작업을 수행하는 데 많은 트릭을 써야합니다 (그렇게할만한 이유가 있지만).
그냥 맞춰보세요. 어셈블리 수준의 속성 만로드하는 것이 모든 클래스를로드하고 속성을 확인하는 것보다 빠를 수도 있습니다. 또한 하나의 파일에 모든 어셈블리 속성을 정의하면 실수로 두 개 이상의 OwinStartup 속성을 추가 할 가능성이 줄어 듭니다 (처음에 작동하는 경우 혼동을 줄 수 있음). – milan
사실 나는 이것을 이해하려고 노력하고있다. 이 속성의 아키텍처 이점 – Thanigainathan