source

IHTTPHandler의 용도는 무엇입니까?재사용 가능합니까?

ittop 2023. 5. 22. 21:39
반응형

IHTTPHandler의 용도는 무엇입니까?재사용 가능합니까?

글을 쓰고 있습니다.IHttpHandler그리고 나는 그것을 구현해야 할 것입니다.IsReusable소유물.MSDN 설명서를 보면 다음과 같이 나와 있습니다.

다른 요청이 IHTTPHandler 인스턴스를 사용할 수 있는지 여부를 나타내는 값을 가져옵니다.

이것은 별로 도움이 되지 않습니다.재사용 가능한 핸들러를 사용해야 하는 상황과 재사용해서는 안 되는 상황은 무엇입니까?

후속 질문:

  1. 재사용이란 무엇입니까?
  2. 다음과 같은 경우 상태(즉, 클래스 변수)를 유지할 수 있습니까?Reusable = true??

이 속성은 동일한 IHTtpHandler 인스턴스에서 여러 요청을 처리할 수 있는지 여부를 나타냅니다.기본적으로 요청 파이프라인 끝에 HttpApplication의 RecycleList 핸들러에 배치된 모든 http 핸들러는 null로 설정됩니다.핸들러가 재사용 가능한 경우 null로 설정되지 않고 다음 요청 시 인스턴스가 재사용됩니다.

가비지 수집 개체 수가 줄어들기 때문에 성능이 향상됩니다.
재사용 가능한 핸들러의 가장 중요한 문제점은 스레드 안전해야 한다는 것입니다.이것은 사소한 것이 아니며 약간의 노력이 필요합니다.

관리되는 리소스만 사용하는 경우 가비지 수집기에서 쉽게 처리할 수 있으므로 기본값(재사용 불가)은 그대로 두는 것이 좋습니다.재사용 가능한 핸들러의 성능 향상은 스레드화 버그를 찾기 어려운 위험을 초래하는 것에 비해 대개 무시할 수 있습니다.

핸들러 인스턴스에 동시에 액세스하면 여러 요청이 값을 쓰고 읽기 때문에 핸들러를 다시 사용하기로 결정한 경우 클래스 변수의 상태를 유지하지 않아야 합니다.

이렇게 하면 처리기가 메모리에 저장되고 여러 요청을 처리할 수 있습니다.false로 설정하면 들어오는 각 요청에 대해 처리기의 새 인스턴스를 만들어야 합니다.

다음은 올바르게 사용되지 않을 때 발생하는 현상을 보여주는 질문입니다.

HttpHandler를 사용한 데이터베이스 이미지 스트리밍

요청이 들어올 때마다 새 핸들러를 교체하는 것보다 핸들러를 재활용하는 것이 더 저렴하며 서버는 메모리를 덜 끌 것이므로 GC가 수행해야 하는 작업을 쉽게 할 수 있습니다.처리기가 새 요청을 처리하는 데 문제가 없는 상태인 경우 (즉, 핸들러 인스턴스의 모든 상태가 재설정됨) 재사용할 수 있는 자격이 있어야 합니다.

편집

제 답변이 재사용이 무엇인지 정확하게 정의하는지 모르겠습니다.실제로 동시에 재사용할 수 있으므로 상태를 효과적으로 방지하거나 스레드 안전한 방식으로 신중하게 관리하는 것이 가장 좋습니다.

언급URL : https://stackoverflow.com/questions/5500950/what-is-the-use-for-ihttphandler-isreusable

반응형