Информационные технологииStfw.Ru 🔍

Описание объекта Application

🕛 26.09.2006, 15:01

Вы можете использовать данный метод для того, чтобы сделать доступной информацию между всеми пользователями данного приложения. Основанное на ASP приложение определено как все .asp-файлы в виртуальной директории и всех ее поддиректориях. Из-за того, что объект Application может быть доступен ("зашарен") более чем одному пользователю, то в нем предусотренно два метода - Lock и Unlock (заблокировать и разблокировать) для того, чтобы быть уверенным, что сразу несколько пользователей не смогут попытаться изменять свойства одновременно.

Синтаксис:

Application . метод

Коллекции:

Методы:

События:

Скрипты, которым могут предшествовать события должны быть описаны в файле global.asa.

Замечания:

Вы можете хранить свои значения в коллекциях данного объекта: Application.Contents и Application.staticObjects. Информация, сохраненная в коллекции Application доступны через приложение. Следующий скрипт демонстрирует запись двух типов переменных.

<%
Application("greeting") = "Добро пожаловать на наш вэб-сервер!"
Application("num") = 25
%>

Для каждой из этих переменных предполагается их членство в коллекции Application Contents.

Вы можете также связать компонент с переменной. Если вы связываете сомпонент к переменной с помощью объекта Server.CreateObject, то переменная будет членом коллекции Application.Contents. Если переменная связана с тэгом , то переменная будет членом коллекции Application StaticObjects.

Если вы связываете конкретный компонент с переменной в коллекцией Application Contents Collection и используете Visual Basic Scripting Edition как основной язык написания скриптов, вы должны использовать ключевое слово Set. Это иллюстрированно следующим примером.

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

Вы можете также определить методы и свойства компонента MyComponent следующим скриптом

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

или путем создания локальной копии объекта и использования его следующим образом:

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

Другой способ, чтобы создать объект с использованием тэга в файле 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("StoredArray") (3) = "new value" %>

Настоятельно рекомендуется чтобы, если вы храните массив в объекте Application, вы получили копию массива прежде чем считывать или изменять любые его элементы. Кода вы сделали такую копию вы можете изменить или считать любые его элементы и измененную локальную копию сохранить обратно в Application. Данный прием мы продемонстрируем в следующем примере:

-file1.asp-
<%
'Создаем и инициируем массив
dim MyArray()
Redim MyArray(5)
MyArray(0) = "привет!"
MyArray(1) = "какая-либо другая строка"

'Запоминание массива в объекте Application
Application.Lock
Application("StoredArray") = MyArray
Application.Unlock

Response.Redirect("file2.asp")
%>

-file2.asp-
<%
'Получение массива из объекта Application
'и модицикация второго элемента
LocalArray = Application("StoredArray")
LocalArray(1) = " Люди!"

'вывод строки "привет! Люди!"
Response.Write(LocalArray(0)&LocalArray(1))

'Перезапись массива в объект Application
'Данное действие перепишет значения в StoredArray на новые
Application.Lock
Application("StoredArray") = LocalArray
Application.Unlock
%>

Следующий пример использует переменную NumVisits для хранения числа посещений, когда страница была получена клиентом. Метод Lock вызывается тогда, когда есть возможность того, что к переменной NumVisits может возникнуть паралелльное обращение. Вызывая метод Unlock вы разрешаете обращаться к данной переменной (объекту Application) другим пользователям.

<%
Application.Lock
Application("NumVisits") = Application("NumVisits") + 1
Application.Unlock
%>

Вы <%= Application("NumVisits") %> посетитель этой страницы!

 

Коллекция Application.Contents

Коллекция Contents группирует все элементы, которые были добавлены приложением через команды скрипта. Вы можете использовать коллекцию Contents чтобы получить список элементов, которые были получены приложением или чтобы указать какой из элементов будет использован в данной операции.

Синтакс:

Application.Contents( ключ )

Параметры:

ключ
Указанное имя элемента для его получения.

Замечание:

Коллекция Application.Contents содержит те элементы которые были определены на уровне приложения без использования тэга . Это касается обеих объектов - созданных с использованием Server.CreateObject и с использованием скалярных переменных установленных через определение Application. В следующем скрипте, к примеру, оба и MyVar и MyObj будут членами коллекции Application.Contents.

<%
Application("MyVar") = "Привет!"
Set Application("MyObj") = Server.CreateObject("MyComponent")
%>

Коллекция Application.Contents поддерживает циклы типа For...Each и For...Next.
Следующие два примера иллюстрируют каждый из вышеуказанных методов циклов использования Application.Contents.

<%
For Each Key in Application.Contents
response.write ("key")
Next Key
%>
<%
For i = 1 to Application.Contents.Count
response.write("key")
Next Key
%>

 

Коллекция Application.StaticObjects

Коллекция StaticObjects содержит все объекты, созданные с использованием тэга и объекта Application. Вы можете использовать коллекцию для того, чтобы определить значения указанных свойств для объекта или создать цикл по коллекции и получить все свойства для всех статических объектов.

Синтакс:

Application.StaticObject( ключ )

Параметры:

ключ
Указанное имя элемент для обращения к нему.

Замечание:

Вы можете использовать управление циклом чтобы перебирать ключи в коллекции StaticObjects. Это продемонстрированно следующим примером:

<%
Dim ObjProp

For Each ObjProp in Application.StaticObjects
response.write(ObjProperty & " : " & Application.StaticObjects(ObjProp) & "
")

 

Метод Application.Lock

Метод Lock блокирует для других клиентов переменные, хранимые в объекте Application от изменеия. Потому, как только один клиент может в данный момент времени получить доступ к переменным объекта. Если вы не вызываете метод Unlock после обработики переменных, то сервер сам разблокирует данный объект, когда истечет время (timeout) работы скрипта .asp.

Синтакс:

Application.Lock

Пример:

<%
Application.Lock
Application("NumVisits") = Application("NumVisits") + 1
Application.Unlock
%>

Вы <% = Application("NumVisits") %> посетитель данной страницы.

В предыдущем примере метод Lock предохраняет переменную NumVisits объекта Application от доступа к нему одновременно нескольких клиентов. Если бы приложение не было бы заблокированно, то два клиента попробывали-бы одновременно увеличить значение переменной NumVisits.

 

Метод Application.Unlock

Метод Unlock разблокирует заблокированные ранее переменные c помощью метода Lock.

Синтакс:

Application.Unlock

Пример:

<%
Application.Lock
Application("NumVisits") = Application("NumVisits") + 1
Application.Unlock
%>

Вы <% = Application("NumVisits") %> посетитель данной страницы.

В предыдущем примере метод Unlock разблокирует переменную NumVisits объекта Application, заблокированную ранее объектом Lock от доступа к нему одновременно нескольких клиентов.

 

Событие Application_OnEnd

Данное событие активизируется, когда приложение закрывается, а точнее после события Session_OnEnd. Только встроеные объекты Application и Server доступны.

Синтакс:

Параметры

язык_программирования
параметр, который указывает на то, каким языком будет написан скрипт. Например JavaScript или VisualBasic.

Замечания

Вы не можете вызывать метод MapPath (объект Server) в подпрограмме Application_OnEnd.

 

Событие Application_OnStart

Данное событие активизируется, когда активируется новая сессия, такая, как, к примеру, Session_OnStart. Только встроенные объекты Application и Server доступны. Обращение к объектам Session, Request или Response в подпрограмме Application_OnStart вызовет ошибку.

Синтакс:

Параметры

язык_программирования
параметр, который указывает на то, каким языком будет написан скрипт. Например JavaScript или VisualBasic.

ASP   Теги:

Читать IT-новости в Telegram
Информационные технологии
Мы в соцсетях ✉