posted by 방랑군 2009. 9. 15. 13:20

 초창기 이거 나올때 구분지어서 알았는데, 
지금 먼지 모르겠다.... 또 확실히 구분지어 이해하려면 시간이 걸린다...

머리 나빠 다시 보아서 구분을 지을려고 해서 시간이 많이 걸리기 때문에 귀찮은 것들 중에 하나다...

일단 참조로 설명 해 놓은거 놓는다...
솔직히 머리나뻐서 한번 속독해서 먼소린지 잘 모르겠다 . --;

나중에 시간 되면 정리하자....

 참조 : http://blog.naver.com/kkwangjjang/100058429953

일단 transfer를 메모해두기전에, 요놈을 공부하면서 HttpContext란놈이 또 등장했다.

HttpContext란 개념은 많이 들어보긴했지만, 웬지 생소한..그림그려봐!라고 하면 못그릴것같은 놈이다.

이놈은 서버를 통해 들어오고 나가는 클라이언트 측 요청과 응답정보를 관리하는 개체이다.

즉, 클라이언트의 요청으로 한개의 프로세스가 모두 마쳐지고 서버가 클라이언트로 응답을 보내기까지의

한개의 덩어리 라고 하면 이해가 좀 쉬워지는 놈이다.

 

자자 이제 본론으로 궈궈

  • HttpResponse.Redirect와 다른점은 Redirect는 Client에서 Http헤더를 전송해서 브라우저가 새로운 페이지를 요청하게 하는 기술이다. (302 "Object Moved"를 요청한다.)
  • 이에반해서 Transfer는 서버측 페이지 이동이다. Transfer는 페이지간 포스트백과 비슷한 면이 존재한다. (Cross-Page Postback)
    • 원본페이지의 공유멤버와 포함된 컨트롤들을 엑세스 할 수 있다.
    • PreviousPage 속성을 이용해서 원본페이지의 개체를가져올수 있다. 그러나 여기서 다른점이 존재한다.
      Cross-Page Postback에서의 Page Event발생 flow를 보면, 대상페이지가 원본페이지의 개체를 액세스 할때, 원본페이지는 PreInit -> Init -> InitComplete -> PreLoad -> Load -> LoadComplete 까지 수행되어 진다.
      정 상적인 Page의 Event Flow : PreInit -> Init -> InitComplete -> PreLoad -> Load -> LoadComplete -> PreRender -> Render
      그러나 Transfer의 경우 원본페이지는 대상페이지를 실행 한 후에도 여전히 메모리에 존재함으로써 새로 페이지객체가 생성되어 지지 않게 된다!
  • Transfer는 서버측 페이지 이동이므로, 클라이언트(브라우저)의 주소창의 내용이 갱신되지 않는다.
  • 이외에 Excute와의 다른점인 페이지 제어권이 있다.
    • Transfer는 대상페이지가 실행되면 바로 원본페이지의 실행을 멈추고 제어권을 대상페이지에게 넘긴다.
    • Execute의경우, 대상페이지가를 호출한 후 제어가 다시 원본페이지로돌아오게 된다.

기본에 충실하자는 마음으로 기본적인 내용을 보다보니, 까먹지 말아볼까~하는 내용이 눈에 들어온다.

요것도 그것중하나!

메모하는 습관^^

내용 출처 : IT Expert ASP.NET 2.0 (산지 한2년됐뜨니 Naver 책DB에도 없네;;쩝;;)

[출처] HttpServerUtility.Transfer|작성자 꽝짱


'IT > 기본에충실' 카테고리의 다른 글

Serialize  (0) 2009.10.06
값, 참조 타입  (0) 2009.09.30
[ASP.NET] 페이지 CacheTest  (0) 2009.09.15
[C#] pdb 파일  (0) 2009.09.15
기본... 여기는...  (0) 2009.09.15