Application 개체

Application 개체를 사용하여 해당 응용 프로그램의 모든 사용자가 정보를 공유하도록 할 수 있습니다. ASP 기반 응용 프로그램은 가상 디렉터리 및 하위 디렉터리에 있는 모든 .asp 파일로 정의되어 있습니다. Application 개체는 여러 사용자가 공유할 수 있기 때문에 Lock과 Unlock 메서드를 사용하여 여러 사용자가 한 속성을 동시에 변경할 수 없게 해야 합니다.

구문

Application.method

컬렉션
Application Contents 컬렉션 스크립트 명령을 통해 응용 프로그램에 추가된 모든 항목을 포함합니다.
Application StaticObjects 컬렉션 <OBJECT> 태그로 세션에 추가된 모든 개체를 포함합니다.

메서드
Contents.Remove Contents.Remove 메서드는 Application 개체의 Contents 컬렉션에서 항목을 삭제합니다.
Contents.RemoveAll Contents.RemoveAll 메서드는 Application 개체의 Contents 컬렉션에서 모든 항목을 삭제합니다.
Lock Lock 메서드는 다른 클라이언트가 Application 개체의 속성을 수정하지 못하게 합니다.
Unlock Unlock 메서드는 다른 클라이언트가 Application 개체의 속성을 수정할 수 있게 합니다.

이벤트
Application_OnEnd
Application_OnStart

앞의 이벤트에 대한 스크립트는 Global.asa 파일에 선언됩니다. 이들 이벤트와 Global.asa 파일에 대한 자세한 내용은 Global.asa 참조를 참조하십시오.

주의

Application 컬렉션에 값을 저장할 수 있습니다. Application 컬렉션에 저장된 정보는 응용 프로그램을 통해 사용할 수 있으며 응용 프로그램 영역을 지니고 있습니다. 다음 스크립트에서는 두 종류의 변수 저장 예를 보여 줍니다.

<% 
Application("greeting") = "Welcome to My Web World!"
Application("num") = 25
%>
 

이들 각 변수는 Application Contents 컬렉션의 구성원이 됩니다.

또한 구성 요소 인스턴스를 응용 프로그램 영역을 지닌 변수에 할당할 수도 있습니다. 만일 Server.CreateObject 메서드를 사용하여 변수에 구성 요소 인스턴스를 할당하면 해당 변수는 Application.Contents 컬렉션의 구성원이 됩니다. <OBJECT> 태그로 변수를 할당하면 그 변수는 Application StaticObjects 컬렉션의 구성원이 됩니다.

응용 프로그램 영역을 받지 못하는 구성 요소 인스턴스도 있으므로 구성 요소 인스턴스를 응용 프로그램 영역을 지닌 변수에 할당할 때는 주의해야 합니다. 자세한 내용은 Platform SDK를 참조하십시오.

구성 요소 인스턴스를 ApplicationContents 컬렉션의 변수에 할당하고 Visual Basic® Scripting Edition을 기본 스크립트 언어로 사용하는 경우에는 반드시 Set 키워드를 사용해야 합니다. 다음 스크립트를 참조하십시오.

<% Set Application("Obj1") = Server.CreateObject("MyComponent") %>
 

그런 다음 아래 스크립트를 사용하여 후속 웹 페이지에서 MyComponent의메서드와 속성을 참조할 수 있습니다.

<% Application("Obj1").MyObjMethod %>
 

또는 개체의 로컬 복사본을 추출하여 다음과 같이 이용할 수도 있습니다.

<% 
Set MyLocalObj1 = Application("Obj1") 
MyLocalObj1.MyObjMethod
%>
 

응용 프로그램 영역을 지닌 개체를 작성하는 또 다른 방법은 Global.asa 파일에서 <OBJECT> 태그를 이용하는 것입니다. 자세한 내용은 Global.asa 참조를 참조하십시오.

기본 제공 개체는 Application 개체에 저장할 수 없습니다. 예를 들어, 다음 줄은 각각 오류를 반환합니다.

<%
Set Application("var1") = Session
Set Application("var2") = Request
Set Application("var3") = Response
Set Application("var4") = Server
Set Application("var5") = Application
Set Application("var6") = ObjectContext
%>
 

응용 프로그램 영역을 설정한 구성 요소에서 사용되는 스레딩 모델을 알아 두어야 합니다. 구성 요소를 개발하기 위해 사용된 스레딩 모델은 구성 요소 인스턴스를 Application 컬렉션 중 하나의 변수에 할당해야 하는지에 중요한 영향을 미칩니다.

Application 개체에 배열을 저장하려면 저장된 배열 요소를 직접 바꾸지 않아야 합니다. 예를 들어, 다음 스크립트는 실행되지 않습니다.

<% Application("StoredArray")(3) = "new value" %>
 

그 이유는 Application 개체가 컬렉션으로 실행되기 때문입니다. StoredArray(3) 배열 요소는 새 값을 받지 않습니다. 대신 그 값이 Application 개체 컬렉션에 포함되고, 이전에 그 위치에 저장되었던 모든 정보를 덮어씁니다.

Application 개체에 배열을 저장하려면 배열 요소를 검색하거나 변경하기 전에 배열 사본을 검색하는 것이 좋습니다. 배열에 대한 작업이 끝나면 다시 Application 개체에 배열을 저장하여 모든 변경 사항이 저장되도록 합니다. 다음 스크립트를 참조하십시오.

---file1.asp---
<%
'Creating and initializing the array.
dim MyArray()
Redim MyArray(5)
MyArray(0) = "hello"
MyArray(1) = "some other string"
'Storing the array in the Application object.
Application.Lock
Application("StoredArray") = MyArray
Application.Unlock

Server.Transfer("file2.asp")
%>

---file2.asp---
<%
'Retrieving the array from the Application Object
'and modifying its second element.
LocalArray = Application("StoredArray")
LocalArray(1) = " there"

'Printing out the string "hello there."
Response.Write(LocalArray(0)&LocalArray(1))
'Re-storing the array in the Application object.
'This overwrites the values in StoredArray with the new values.
Application.Lock
Application("StoredArray") = LocalArray
Application.Unlock
%>
 
예제

다음은 NumVisits 응용 프로그램 변수를 사용하여 특정 페이지가 방문된 횟수를 저장하는 예제입니다. Lock 메서드를 호출하여 현재 클라이언트만이 NumVisits에 액세스하거나 변경할 수 있도록 합니다. 그런 다음 Unlock 메서드를 호출하여 다른 사용자들이 Application 개체에 액세스할 수 있도록 합니다.

<%
Application.Lock
Application("NumVisits") = Application("NumVisits") + 1
Application.Unlock
%> 
 
This application page has been visited 
<%= Application("NumVisits") %> times!
 

ASP 예제의 ASP 응용 프로그램 작성 섹션에 Application 개체를 사용하는 작업 예제 .asp 파일이 있습니다.


© 1997-2001 Microsoft Corporation. All rights reserved.