object 태그 객체 생성

asp에서는 Request나 Response 객체를 사용하기 위해서는 CreateObject를 호출하지 않는다. 이것은 자주 사용하는거라 언어차원의 배려로 asp엔진이 내장객체로 관리하기 때문이다. 그렇기 때문에 Set Request = Nothing이런식의 개체의 자원해지과장이 없다.

일반적으로 쓰는 객체생성 CreateObject 이용
Dim objFso 
Set objFso = CreateObject("Scripting.FileSystemObject")
If objFso.FileExists(strFullPath) Then  
   objFso.DeleteFile(strFullPath) 
End If
Set objFso = Nothing

object 태그를 이용한 객체 생성 Set 객체 = Nothing 의 과정 없음
<object id="objFso" progid="Scripting.FileSystemObject" runat="server">
</object>
<%
If objFso.FileExists(strFullPath) Then  
   objFso.DeleteFile(strFullPath) 
End If
%>
이런식 으로 object태그로 선언하면 asp엔진 내장객체로 인식되기 때문에 자원해제과정을 하지 않아도 되는 편안함이 있다. 주의점으로는 object태그로 선언한 객체는 페이지가 완전히 종료 된 후 객체의 자원 해제 과 이루어진다. 그러므로 class상에 Class_Terminate(소멸자)에서 GetObjectContext("Response").Write 출력이 반영되지 않음을 유의 object태그로 선언만 했을경우는 객체의 참조가 이루어진 상태가 아니다. 해당객체의 메서드을 호출했을 경우 해당객체의 참조가 이루어진다.

ps : object태그 방식을 좋아하지 않습니다. 믿을 수 없기 때문이죠. 원래 자동해체니 자동 컨버팅 자동 업그레이드 솔직히 상당 수 석연치 않죠. 그리고 문제점이 오류가 났을 경우 객체 해제가 되는지도 의문이고요. createObject를 쓰고 사용하면 바로 해제하는 방식을 선호 합니다.

댓글