ASP - Объект Application
Объект Application может быть использован для предоставления совместного доступа к информации всем пользователям данного приложения. Приложение, использующее ASP, определяется как все файлы .asp, расположенные в виртуальном каталоге и всех его подкаталогах. Поскольку объект Application может использоваться совместно несколькими пользователями, методы Lock и Unlock служат для того, чтобы несколько пользователей не могли изменять свойство одновременно.
Синтаксис
Application.метод
Семейства
Contents | Содержит все элементы, добавленные к приложению командами сценария. |
StaticObjects | Содержит все объекты, добавленные к сеансу с помощью тега <OBJECT>. |
Методы
Contents.Remove | Метод Contents.Remove удаляет элемент из семейства Contents объекта Application. |
Contents.RemoveAll | Метод Contents.RemoveAll удаляет все элементы из семейства Contents объекта Application. |
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.
Следует быть очень внимательным при присвоении экземпляра компонента переменной с приложением в качестве области определения, поскольку некоторые компоненты не предусматривают приложение в качестве области определения. Дополнительные сведения см. в пакете SDK операционной системы.
Если экземпляр компонента присваивается переменной в семействе Application Contents, а в качестве основного языка сценариев используется Visual Basic® Scripting Edition (VBScript), необходимо использовать ключевое слово Set. Это иллюстрируется приведенным ниже сценарием.
<% Set Application("Obj1") = Server.CreateObject("MyComponent") %>
Можно ссылаться на методы и свойства объекта MyComponent
на других веб-страницах с помощью сценария
<% Application("Obj1").MyObjMethod %>
или извлекая локальную копию объекта и используя приведенный ниже фрагмент сценария
<%
Set MyLocalObj1 = Application("Obj1")
MyLocalObj1.MyObjMethod
%>
Другой способ создания объекта, имеющего в качестве области определения приложение, состоит в использовании тега <OBJECT> в файле Global.asa. Дополнительные сведения см. в разделе Справочник 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, которые используют объект Application, приведены в подразделе «Построение приложений ASP» в разделе Примеры ASP.