development

http 핸들러 인터페이스에서 bool IsReusable의 중요성

big-blog 2020. 7. 4. 09:29
반응형

http 핸들러 인터페이스에서 bool IsReusable의 중요성


http 핸들러 / 모듈을 작성할 때 -bool IsReusable 을 구현할 인터페이스 멤버가 있습니다.

이 멤버의 의미는 무엇입니까? False (또는 True)로 설정하면 나머지 웹앱에 어떤 의미가 있습니까?


핸들러의 일반적인 진입 점은 ProcessRequest 메소드입니다. 그러나 클래스 생성자에 빌드 비용이 많이 드는 일부 인스턴스 값을 구성하는 코드가있을 수 있습니다.

재사용 가능을 true로 지정하면 애플리케이션은 매번 재구성 할 필요없이 ProcessRequest 메소드를 반복해서 호출하여 인스턴스를 캐시하고 다른 요청에서 재사용 할 수 있습니다.

응용 프로그램은 현재로드를 처리하는 데 필요한만큼의 이러한 핸들러를 인스턴스화합니다.

단점은 필요한 인스턴스 수가 현재 존재하는 인스턴스보다 많으면 더 많은 메모리를 사용한다는 것입니다. 반대로 인스턴스 값이 GC주기를 유지하고 자주 다시 할당 할 필요가 없으므로 메모리 사용을 줄일 수도 있습니다.

또 다른 경고는 ProcessRequest 실행이 끝날 때 다른 요청이 객체를 재사용하기를 원하는 상태인지 확인해야한다는 것입니다.


또한 AnthonyWJones의 대답에, 당신의 HTTP 처리기를 반환하는 경우 true에는 IsReusable다음 완전히 스레드 안전되어 있는지 확인해야합니다.

현재 Microsoft 구현에서는 연속적으로 재사용하는 것처럼 보이지만 재사용 가능한 핸들러를 동시에 재사용 할 수 없음을 나타내는 문서는 없습니다. 그러나 적어도 이론적으로 단일 처리기 인스턴스는 여러 요청에 의해 동시에 재사용 될 수 있으므로 다른 동시 스레드에 의해 수정 될 수있는 데이터에 의존해서는 안됩니다.


해당 인스턴스에 상태를 저장하지 않은 경우 (예 : 필드가없는 경우 ( "클래스 변수")) 안전하게 재사용해야합니다.

안전한쪽에있는 것은 기본적으로 false입니다.

참고 URL : https://stackoverflow.com/questions/539302/significance-of-bool-isreusable-in-http-handler-interface

반응형