2009-08-02 5 views
10

매우 놀랍습니다. HttpWebRequest에는 가까운 방법이 없지만 그 반대 부분 인 HttpWebResponse이 있습니다. 그것은 나를 조금 혼란스럽고 불편하게 만듭니다. :-)HttpWebRequest에는 가까운 방법이 없습니까?

그래서 우리는 응답시 닫기를 호출하기 만하면 요청을 처리 할 필요가 없습니까? 저의 관심은 누수와 더 나은 자원 사용 효율에 관한 것입니다. VSTS2008 + C# + .Net 3.5를 사용하고 있습니다.

+1

(사본을 삭제하고 여분의 콘텐츠로 병합) –

+0

다시 물어보십시오 ** (지금 삭제됨)? 제발하지 말아주세요 ... –

답변

29

예, 응답 개체에서 호출하면됩니다.

요청 자체는 전혀 없습니다. 그것은 소켓이나 무언가를 열지 않습니다. 단지 일부 데이터를 보유하고 있으므로 필요가 없으면이를 무시하고 버릴 수 있습니다 (순수 관리 리소스이며 가비지 수집기가 처리합니다). 실제 물건은 GetResponse 메서드 중 하나가 호출 된 후 발생합니다.

+0

안녕하세요, 어떤 MS 문서 또는 HttpWebRequest/Response의 내부 동작을 설명하는 또 다른 "공식"장소가 있습니까? – tamberg

+0

@tamberg 소스 코드를 직접 읽고 읽을 수 있습니다. http://referencesource.microsoft.com/netframework.aspx –

+0

실제로 작동하지 않는 것 같습니다. 적어도 SSL 연결의 경우 서버에 가까운 쪽을 보내지 않는 것처럼 보입니다. – Tuntable

1

HttpWebResponse에서 참조하는 close 메서드는 완료된 응답을 Web Server에 보내는 역할을합니다. HttpWebRequest 개체에서 처리를 시작할 때 모든 콘텐츠를 사용할 수 있으므로 서버를 닫고 통신 할 필요가 없습니다.

4

비유 :

내가 얘기하고 싶은 나는 단순히 당신의 이름 (요청)를 호출 할 것이다 당신에게 말을하고 싶은 이미 확신합니다. 그러나 언제, 어떻게 그리고 무엇을 대답해야 할지를 결정하는 것은 당신의 몫입니다 (대응). 그래서 당신은 저보다 통신에 대한 통제력이 더 커질 것입니다. 방금 시작했습니다.

관련 문제