2014-11-28 7 views
5

콘솔 프로젝트에서 단일 모듈로 간단한 자체 호스팅 Nancy 사이트를 만들었습니다. 테스트 할 때 각 요청마다 모듈 생성자가 호출된다는 것을 알았습니다. ctor는 경로가 등록 된 곳이기도하기 때문에이 퍼즐이 난다. 그건 나에게 의미가 없으며 나는 뭔가를 놓치고 있어야합니다. 모듈 생성자는 각 요청에서 호출되며 모든 요청에 ​​따라 다시 등록됩니다.각 요청마다 nancyfx의 모듈이 실제로 생성됩니까?

+2

나는 이것에 대해서도 우려했다. 경로가 적고 의존성에 대한 정보가 많아서 비용이 많이 듭니다. 그래서 정적 속성을 설정하여 구조 간의 종속성을 캐싱했습니다. 그런 다음 첫 번째 테스트의 부트 스트 래퍼가 모든 후속 테스트에 사용 되었기 때문에 많은 테스트가 실패했습니다. –

답변

5

정렬 - Nancy는 시작할 때 모든 모듈을 구성하고 모든 경로를 등록하고 라우팅 트리를 작성합니다. 그러면 각 요청에 대해 필요한 모듈을 찾아서 요청 컨테이너를 사용하여 구성하므로 요청 범위가있는 종속성에 올바른 수명이 있고 관련 작업이 실행됩니다. 경로는 요청마다 "등록"되지 않고 모듈의 모음에 저장되며 엔진은 올바른 것을 실행합니다.

+2

그러나 (우리는 어떤 경로가 요청과 일치하는지 알기 때문에) 필요하지 않지만 모든 경로가 각 요청 이벤트의 DynamicDictionary에 복원됩니까? 그렇다면 이것은 필요하지 않은 요청에 대한 작업을 수행하는 것이 이상하게 보입니다. 각 요청마다 가능한 한 적게 라우팅되도록 ctor보다 경로를 등록하는 더 좋은 방법이 있습니까? –

+1

또한, 모듈에 많은 경로를 가지고 있지 않는 것이 현명하지만 더 적은 경로로 더 많은 모드를 가질 수 있습니다. –

+0

아주 작은 차이가 있습니다. 각 모듈에 수백만 개의 모듈과 수천 개의 경로로로드 테스트를 수행했습니다. 그러나 일반적으로 우리는 사람들을 모으기보다는 모듈을 기능 영역/리소스로 분해하는 것을 "정상적으로"보았습니다. –

관련 문제