콘솔 프로젝트에서 단일 모듈로 간단한 자체 호스팅 Nancy 사이트를 만들었습니다. 테스트 할 때 각 요청마다 모듈 생성자가 호출된다는 것을 알았습니다. ctor는 경로가 등록 된 곳이기도하기 때문에이 퍼즐이 난다. 그건 나에게 의미가 없으며 나는 뭔가를 놓치고 있어야합니다. 모듈 생성자는 각 요청에서 호출되며 모든 요청에 따라 다시 등록됩니다.각 요청마다 nancyfx의 모듈이 실제로 생성됩니까?
답변
정렬 - Nancy는 시작할 때 모든 모듈을 구성하고 모든 경로를 등록하고 라우팅 트리를 작성합니다. 그러면 각 요청에 대해 필요한 모듈을 찾아서 요청 컨테이너를 사용하여 구성하므로 요청 범위가있는 종속성에 올바른 수명이 있고 관련 작업이 실행됩니다. 경로는 요청마다 "등록"되지 않고 모듈의 모음에 저장되며 엔진은 올바른 것을 실행합니다.
그러나 (우리는 어떤 경로가 요청과 일치하는지 알기 때문에) 필요하지 않지만 모든 경로가 각 요청 이벤트의 DynamicDictionary에 복원됩니까? 그렇다면 이것은 필요하지 않은 요청에 대한 작업을 수행하는 것이 이상하게 보입니다. 각 요청마다 가능한 한 적게 라우팅되도록 ctor보다 경로를 등록하는 더 좋은 방법이 있습니까? –
또한, 모듈에 많은 경로를 가지고 있지 않는 것이 현명하지만 더 적은 경로로 더 많은 모드를 가질 수 있습니다. –
아주 작은 차이가 있습니다. 각 모듈에 수백만 개의 모듈과 수천 개의 경로로로드 테스트를 수행했습니다. 그러나 일반적으로 우리는 사람들을 모으기보다는 모듈을 기능 영역/리소스로 분해하는 것을 "정상적으로"보았습니다. –
나는 이것에 대해서도 우려했다. 경로가 적고 의존성에 대한 정보가 많아서 비용이 많이 듭니다. 그래서 정적 속성을 설정하여 구조 간의 종속성을 캐싱했습니다. 그런 다음 첫 번째 테스트의 부트 스트 래퍼가 모든 후속 테스트에 사용 되었기 때문에 많은 테스트가 실패했습니다. –