global.asa <OBJECT>

<OBJECT RUNAT="SERVER" SCOPE="PAGE" ID="objConn" PROGID="ADODB.Connection">
</OBJECT>

Scope 속성은 객체의 범위를 지정합니다. 위 예에서 "PAGE"로 지정되었기 때문에 객체를 생성한 ASP 페이지에만 사용할 수 있습

니다. 만약, 사용범위를 Session이나 Application까지 넓히려고 한다면 "Session", "Application" 옵션을 사용하면 됩니다.

보통 "PAGE" 옵션밖에 사용하지 못하지만, <OBJECT> 태그를 global.asa 안에 위치시킨다면 "Session", "Application" 옵션을 사

용할 수 있습니다. 

참고로, PROGID 대신 객체의 CLASSID를 사용할 수도 있지만, 잘 쓰이지는 않습니다.
 

확장된 <OBJECT> 태그를 사용하여 Global.asa 파일에 세션 영역이나 응용 프로그램 영역을 지니는 개체를 만들 수 있

습니다. 이 태그는 독립적이며 모든 <SCRIPT> 태그 밖에 존재합니다. 

Global.asa 파일에서 선언된 개체는 서버가 해당 개체를 호출하는 스크립트를 처리할 때까지 만들어지지 않습니다. 

따라서 필요한 개체만 만들기 때문에 리소스가 절약됩니다.

구문
<OBJECT RUNAT=Server SCOPE=Scope ID=Identifier {PROGID="progID"|CLASSID="ClassID"}>
...
</OBJECT>

매개 변수
Scope 
개체의 영역을 지정합니다. Global.asa 파일에서 Scope는 Session이나 Application으로 설정됩니다. 

Identifier 

개체 인스턴스에 대한 이름을 지정합니다. 

ProgID 

클래스 식별자와 연결된 식별자입니다. ProgID나 ClassID가 <OBJECT> 태그 안에 지정되어야 합니다. 
ProgID 형식은 [Vendor.]Component[.Version]입니다. 

ClassID 

COM 클래스 개체의 고유 식별자를 지정합니다. ProgID나 ClassID가 <OBJECT> 태그 안에 지정되어야 합니다. 

예제
다음 예제의 첫 부분은 ProgID 매개 변수를 사용하여 세션 영역 개체 MyConnection을 만듭니다. 
둘째 예제는 ClassID 매개 변수를 사용합니다. 

<OBJECT RUNAT=Server SCOPE=Session ID=MyConnection PROGID="ADODB.Connection"
REM Object Script
</OBJECT> 

<OBJECT RUNAT=Server SCOPE=Session ID=MyConnection CLASSID="Clsid:8AD3067A-B3FC-11CF-A560-00A0C9081C21">
REM Object Script
</OBJECT>

주의

Global.asa 파일에 선언된 개체는 응용 프로그램에 있는 모든 스크립트가 사용할 수 있습니다. 
예를 들어, 다음 개체를 선언한 경우 

---GLOBAL.ASA---
<OBJECT RUNAT=Server SCOPE=Session ID=MyAd PROGID="MSWC.AdRotator">
</OBJECT>

응용 프로그램의 모든 페이지에서 MyAd 개체를 참조할 수 있습니다. 

---SOME.ASP---
<%= MyAd.GetAdvertisement("/ads/adrot.txt") %> 

참고로, 서버 컴포넌트의 객체 생성 여부를 확실히 검사하기 위해서는 IsObject() 함수(객체가 정상적으로 생성되었다면 True를, 

객체 생성을 실패했다면 False를 반환)를 이용합니다. 

즉, 위의 예제에서 다음과 같은 코드를 추가하면 객체 생성 여부를 확인 할 수 있습니다. 

<% 
If IsObjcet(MyAd) Then
' 객체가 생성되었다면 객체 사용
Else
' 객체가 생성되지 않았다면 적절한 에러 메세지 출력
End If
%> 




4. 형식 라이브러리 선언

ADO 객체에는 프로퍼티와 메소드에서 사용되는 미리 정의된 많은 상수들이 있습니다. 

이런 상수들을 참조하는 방법은 상수들을 #include 문을 이용해 ASP 페이지 안에 포함시키는 방법이 있습니다. 

< !-- #inlcude File = "adovbs.inc" -->


이런 방법은 adovbs.inc 파일에 정의되어 있는 모든 상수를 ASP 페이지에 포함하기 때문에 ASP 페이지의 용량이 커진다는 단점

이 있습니다. 따라서, 더 나은 방법으로 형식 라이브러리 선언을 이용합니다. 

형식 라이브러리 선언은 상수들을 별도의 파일로 포함하지 않고 바로 사용할 수 있게 합니다. 

ASP 페이지 안에 형식 라이브러리 선언을 하면, 포함된 페이지 내에서는 ADO 상수들을 자유롭게 사용할 수 있으며, 

global.asa 파일안에 포함시킨다면 애플리케이션 안에 있는 모든 페이지에서 상수들을 사용할 수 있습니다. 

IIS 5.0 설명서에는 형식 라이브러리 선언을 통한 상수 사용에 대해 다음과 같이 기술되어 있습니다.

Global.asa 파일에서 형식 라이브러리를 선언하여 정의된 상수를 응용 프로그램의 모든 .asp 파일에서 사용할 수 

있습니다. 형식 라이브러리를 선언하려면 Global.asa 파일에서 <METADATA> 태그를 사용합니다. 

예를 들어, ADO 형식 라이브러리를 선언하려면 다음 명령문을 사용합니다.
 

< !--METADATA NAME="Microsoft ActiveX Data Objects 2.5 Library" TYPE="TypeLib" UUID="{00000205-0000-0010-8000-00AA006D2EA4}"-->

또는 형식 라이브러리의 UUID(Universal Unique Indentifier)를 사용하는 대신 파일 경로를 사용하여 형식 라이브러리를 참

조할 수도 있습니다.

< !-- METADATA TYPE="typelib" FILE="c:program filescommon filessystemadomsado15.dll"-->

그런 다음에는 ADO 형식 라이브러리로 선언되어 Global.asa 파일을 포함하는 응용 프로그램에 상주하는 .asp 파일에

서 ADO 상수를 사용
할 수 있습니다. 다음 예제에서 adOpenKeyset와 adLockOptimistic은 ADO 상수입니다.
 

<%
'Recordset 개체를 만들고 엽니다.
Set rstCustomerList = Server.CreateObject("ADODB.Recordset") 

rstCustomerList.ActiveConnection = cnnPubs
rstCustomerList.CursorType = adOpenKeyset
rstCustomerList.LockType = adLockOptimistic
%>

참고 

#include 지시어 대신 <METADATA> 태그를 사용하여 웹 응용 프로그램의 성능을 향상시킬 수 있습니다.
 

상수를 직접 정의할 수 있습니다. VBScript에서는 Const 문을 사용하고, JScript에서는 var 문을 사용하여 상수 값을 변

수에 할당합니다. 여러 .asp 파일에서 동일한 상수를 사용하려면 상수 정의를 별도의 파일에 두고 해당 상수를 사용하는 각 

.asp 파일에 그 파일을 포함합니다.
 
 
저작자 표시 비영리 동일 조건 변경 허락
신고

'☆Develpoer > └ asp' 카테고리의 다른 글

adXactAbortRetaining  (0) 2011.05.30
Working with ASP Applications  (0) 2011.05.24
global.asa <OBJECT>  (0) 2011.05.24
FSO를 이용해 로그 파일 생성  (0) 2011.05.02
ASP함수 모음  (0) 2011.04.19
초보자를 위한 ASP + MySQL 연동 방법  (0) 2011.04.19