Основная страницаWeb-расширение. Часть 1.


 

Введение

Интернет-технологии Web-приложения Серверные технологии Технология ASP

Введение

В настоящее время Интернет все шире используется в самых различных видах человеческой деятельности. Одними из его основных преимуществ являются скорость доставки информации, распространенность - для работы с Интернетом достаточно наличия простой телефонной линии, и независимость от используемой пользователем операционной системы, будь то Windows, Unix или MacOS. Такие качества Интернета позволяют использовать его для организации информационных и деловых процессов как внутри предприятий, так и в среде клиентов и деловых партнеров, при этом географическая  удаленность  между  партнерами  может  не приниматься во внимание. На сегодня организация и поддержка в Интернете    "фирменного"    узла    считаются    практически обязательными для ведения успешного бизнеса или представления данных о некоммерческой организации.

Возможность переноса на базу Интернета деловых процессов привел к появлению абсолютно нового вида коммерции - так называемой электронной коммерции (e-commerce); ее ближайшим аналогом можно считать торговлю по каталогам. Основное проявление электронной коммерции - Интернет-магазины, где посетитель, не выходя из дому, может просмотреть список предлагаемых товаров и услуг, получить о них всю необходимую информацию (вплоть до внешнего вида товара), выбрать необходимое и оплатить заказ. Чаще всего заказанный товар доставляют покупателю непосредственно на дом. Этот способ торговли может использоваться как для общения с обычными покупателями, так и для внутрикорпоративного взаимодействия -например, при заказе дилером товара у дистрибьютора. Кроме удобств ведения такой торговли можно лишь упомянуть, что средства,   проходящие   через   электронную   торговлю,   уже исчисляются миллиардами долларов.

Для   интеграции   1C Предприятия   7.7   и   различных Интернет-технологий   (в   первую   очередь   Web)   создано Web-расширение   1 С Предприятия   7.7.   При   использовании Web-расширения взаимодействие с пользователями 1С:Предприятия можно организовать, совместив средства 1 (^Предприятия и стандартные возможности Web-интерфейса. Web-приложения на основе  1С:Предприятия  могут  как  входить  в  структуру внутрикорпоративных процессов управления, так и представлять собой Интернет-магазины. При таком подходе получение всей необходимой информации и управление деятельностью предприятия можно осуществлять, используя штатные средства 1С:Предприятия 7.7. На витрину Интернет-магазина может быть вынесен каталог товаров с описаниям и внешним видом товара, заказанный товар может быть зарезервирован до оплаты или же покупатель может оплатить заказ карточкой, в базе может поддерживаться корзина покупателя, хранящая отложенные покупателем товары между посещениями магазина.

Структура описания

Первые три главы описания посвящены общим вопросам, связанным со стандартами Интернет. В них вводятся стандартные термины и понятия, разбирается построение Web-приложений и технология AS Р.

Глава 4 описывает процесс установки и запуска используемого программного обеспечения.

Такие вопросы интеграции технологии ASP и 1 (^Предприятия, как написание ASP-страниц, работа с пользовательскими сессиями и т.д., разбираются в главе 5.

В главе 6 рассматривается пример, входящий в поставку -«Портал реализатора». Дается детальное описание сайта портала и используемой конфигурации.

Интернет-технологии

Общие понятия и термины

Интернет    построен    по   технологии    «клиент-сервер», предполагающей использование двух основных приложений -приложения, работающего на компьютере клиента, и сервера, выполняющего  клиентские  запросы.   В  Интернете  такими приложениями являются браузер (browser, обозреватель) со стороны клиента и Web-сервер (Интернет-сервер, WWW-server) в качестве сервера. Один сервер может поддерживать один или несколько сайтов - узлов Интернета, логически объединяющих информацию различного характера (например, сайт фирмы может представлять всю информацию о фирме, от местоположения до финансового состояния). Структура сайга представляет собой дерево каталогов, аналогичное файловой системе, все файлы на сервере лежат в каталогах этого дерева.

Для общения между клиентом и сервером используется протокол HTTP (Hypertext Transfer Protocol, протокол передачи гипертекста), который в свою очередь использует TCP/IP. Основной цикл протокола HTTP представляет собой пару «запрос файла клиентом -    передача   файла   сервером»,   причем   файл подразумевается произвольным. Для указания необходимого файла браузер передает серверу URL (Universal Resource Locator, универсальный  указатель  ресурсов),  получаемый  браузером результат обычно называют страницей. Чаще всего URL указывается пользователем только один раз - для попадания на необходимый сайт (например, www.lc.ru), далее новые страницы запрашиваются браузером при переходе по ссылкам.

В Интернете используются в основном файлы HTML (HyperText Markup Language, язык разметки гипертекста), содержащие как различно оформленный текст с графикой, так и ссылки на другие

страницы. Кроме этого, HTML-страницы могут содержать также программные вставки на так называемых скриптовых языках -самым распространенным из них является JavaScript (JSript, ECMAScript). Эти вставки могут выполняться браузером, что позволяет изменять содержимое страницы в браузере без обращения к серверу. Такие страницы содержат так называемый DHTML (Dynamic HTML, динамический HTML) - расширение HTML. Все HTML-файлы представляют собой обычные текстовые файлы, содержащие специального вида фрагменты - Tera(tags) HTML, описывающие все параметры отображения страницы - шрифт, размер, картинки, ссылки и пр. Благодаря такому формату HTML-файлы можно писать в обычном текстовом редакторе, однако чаще применяются специализированные WYSIWYG-ред акторы HTML, интегрированные с приложениями разработки сайтов.

Web-серверы

На сегодняшний день Web-серверы, кроме выполнения основной функции - возврата файла, запрошенного пользователем, позволяют расширять свою применимость, предоставляя для расширения функциональности различные интерфейсы. Одна из основных проблем, решаемых этими интерфейсами - создание возвращаемой пользователю страницы «на ходу», при этом в качестве исходного материала обычно используется адрес (URL), переданный пользователем, и файл, находящийся на сервере по этому адресу. Существует общий, стандартный для всех серверов интерфейс, называемый CGI (Common Gateway Interface, общий интерфейс узла), который позволяет создавать нужные страницы, просто выполняя указанные пользователем приложения на компьютере сервера. Этот способ требует довольно много серверных ресурсов, поэтому кроме CGI каждый сервер предоставляет дополнительные возможности расширения, варьирующиеся от сервера к серверу.

Все это позволяет создавать на базе серверов различные приложения, для которых основным пользовательским интерфейсом служит браузер.

Браузеры

Основными браузерами на сегодняшний день являются два браузера - Microsoft Internet Explorer и Netscape Navigator. Кроме просмотра  HTML-страниц оба имеют развитые  сервисные возможности. Оба браузера имеют реализации для Windows, MacOS и Unix. Эти браузеры имеют неодинаковые наборы расширений HTML и различаются по возможностям работы с DHTML, что приходится учитывать при подготовке страниц и разработке сайтов.

Из остальных браузеров стоит упомянуть Opera (www.opera.com) и Neoplanet (www.neoplanet.com).

Web-приложения

Web-приложения  (web  applications,  часто  их  называют Интернет-приложениями, internet applications) представляют собой набор страниц, объединенных общей функциональностью. Все Web-приложения   являются   клиент-серверными,   что,   очевидно, определяется технологией построения Интернета. В приложениях обычно задействуются все вышеперечисленные технологии, от DHTML, исполняемом в клиентском браузере, до расширений Web-сервера. В настоящий момент Web-приложения используются как внутри предприятий в локальных сетях, так и в Интернете - это широко известные Интернет-магазины.

Web-приложения

Началом «взрывного» роста Интернета принято считать начало 90х годов. Именно в это время появились и были стандартизованы протокол HTTP и язык описания страниц HTML, предназначенные для World Wide Web. Изначально WWW предназначался для публикации различной информации текстового и графического характера, поэтому язык HTML имел очень много недостатков, в первую   очередь -   практически   отсутствовали   механизмы управления размещением содержания на HTML-странице и взаимодействия с пользователями. Однако по мере роста интереса к Интернету росли и требования пользователей к содержанию (иначе - к контенту, от англ. content), что касалось как оформления опубликованной   информации,   так   интерактивности   при взаимодействии пользователя с сайтами. На сегодняшний день существующие в Интернете средства, реализованные в Web-серверах, средствах разработки сайтов и браузерах, позволяют говорить о создании так называемых Web-приложений, или приложений, построенных на мехнизмах Интернета и позволяющих пользователям взаимодействовать с Web-серверами. Безусловно, Web-приложения имеют клиент-серверную архитектуру, что диктуется общим построением Интернета. Как и традиционные программные приложения, Web-приложения имеют несколько аспектов: архитектура, подходы к разработке, безопасность приложений, которые и рассматриваются в этой главе.

Область использования Web-приложений

Одной из важных характеристик Web-приложения является область использования приложения. По области использования Web-приложения делятся на intranet - внутрикорпоративные приложения, рассчитанные на использование во внутренней (локальной) сети, extranet - также внутрикорпоративные, но уже работающие  во  внешней  среде  (Интернете),  и,  наконец, internet-приложения,  рассчитанные  на  общее  использование (например, Интернет-магазины). Такое деление возникает из-за различности подходов к построению таких приложений. Самые жесткие требования на разработку накладывает internet-приложение - это использование произвольных браузеров и максимальная безопасность   в   работе.   При   разработке   intranet-   и extranet-приложений    список    используемого    программного обеспечения можно ограничить, а для intranet-приложений еще и снизить требования к безопасности.

Архитектура Web-приложений

Все Web-приложения можно условно разбить на три составные части: серверная часть, клиентское приложение и интерфейс.

Серверную часть образует Web-сервер, возвращающий страницы приложения по запросам пользователя. Чаще всего эти страницы создаются динамически на основе информации, обрабатываемой приложением. Именно на создание страниц "на лету" направлены различные расширения Web-серверов, одно из которых - CGI - уже было ранее упомянуто.

Клиентское приложение (браузер) последовательно запрашивает страницы с сервера, используя Dynamic HTML для управления интерфейсом и частичной обработки информации на компьютере клиента.

Пользовательский интерфейс специально выделен отдельным пунктом, так как именно формированием клиентского интерфейса и работой с ним Web-приложения отличаются от привычных клиент-серверных приложений. В последнем случае клиентское приложение обменивается с сервером только данными, используя для   формирования   интерфейса   ресурсы   приложения.   В Web-приложениях интерфейс практически полностью формируется на сервере, оставляя для исполнения клиентом только управление созданной страницей. Более того, существующие стандарты на браузеры накладывают дополнительную специфику на модель поведения приложения. В частности, два свойства, которые необходимо принимать во внимание при разработке приложения -наличие истории просмотра страниц и произвольный доступ к любой странице приложения по известному адресу. Последнее свойство обязательно должно учитываться в приложениях, использующих авторизацию пользователя.

Другая серьезная проблема в разработке Web-приложения -отслеживание сессии конкретного пользователя. Дело в том, что по определению HTTP-протокол не имеет понятия текущего состояния (stateless), т.е. очередной запрос страницы абсолютно не зависит от предыдущих  запросов  и  потому  не  требует уникального идентификатора. Для отслеживания последовательных запросов и идентификации пользователя используются так называемые cookies.

Cookies

Cookies (русского термина не имеют, в единственном числе -cookie, точный перевод - «домашнее печенье») представляют собой небольшие   файлы,   содержащие   произвольную   текстовую информацию.   Эти   файлы   формируются   и   передаются пользовательскому приложению Web-сервером и хранятся на компьютере пользователя. При очередных запросах страниц информация из этих файлов пересылается на сервер вместе с запросом, что позволяет отличать и отслеживать работу различных пользователей с Web-сервером. Каждый cookie имеет следующие свойства:

·        наименование cookie;

·        значение cookie, содержащее собственно информацию;

·        домен. Указанный домен ограничивает область видимости cookie. По умолчанию домен устанавливается в домен текущей страницы (например, для www.lc.ni - домен Ic.ru);

·        каталог. Указанный каталог ограничивает область видимости cookie внутри сервера. Каталог "/" используется для указания всех   каталогов   сервера.   По   умолчанию   каталог устанавливается в каталог текущей страницы;

·        срок действия. Срок ограничивает время действия cookie. По истечении указанного срока cookie удаляется с компьютера пользователя.   По   умолчанию   срок   действия   не устанавливается, что означает удаление cookie при закрытии браузера (это эквивалентно установке срока действия в 0);

·        секретность. Cookie с установленным свойством секретности могут посылаться на Web-сервер только по SSL-соединению. Это свойство используется редко. По умолчанию секретность не устанавливается.

Домен и каталог необходимы для ограничения области действия cookie - информация из cookie посылается вместе с запросом только в том случае, если домен и каталог cookie в точности совпадают с доменом и каталогом запрашиваемой страницы. Каждый cookie полностью характеризуется своим наименованием, доменом и путем.

Согласно стандарту браузер может как хранить и использовать cookies в своей работе, так и отключать их прием и сохранение в целях безопасности. Для этого в настройках браузеров обычно присутствует флажок, включающий и отключающий работу с cookie. По умолчанию работа с cookie включена, однако пользователь вправе отключить прием cookie. Для intranet- и extranet-приложений возможность отключения cookie можно игнорировать, просто введя некоторую дисциплину использования приложения. Для общих Web-приложений, опирающихся на использование cookies, такая возможность отключения представляет серьезную проблему, так как не существует точного способа определить, принимает ли браузер cookies.

С использованием cookies отслеживание действий пользователя упрощается - теперь сервер может сохранить в cookie некоторую внутреннюю информацию, и при последующих обращениях идентифицировать пользователя. Однако здесь следует учесть одну тонкость. Поскольку два запущенных экземпляра одного браузера используют единую базу cookies, то сервер не сможет отличить эти браузеры, даже если они будут находиться на разных страницах. Из вышесказанного вытекает, что реально идентифицируется не сам пользователь, а скорее его компьютер. - при запуске двух одинаковых браузеров Web-сервер будет воспринимать их как одну сессию. При запуске разных браузеров может возникнуть две сессии, если браузеры используют разные базы для хранения cookies.

Построение Web-приложения

Как и для обычных приложений, универсальной схемы построения Web-приложения не существует, поскольку различные приложения требуют различных подходов к обработке данных, построению пользовательского интерфейса и т.д.

Однако можно построить некоторую приблизительную схему приложения с авторизацией. Все приложение делится на три части -незащищенную, часть, обеспечивающую авторизацию пользователя, и защищенную. В незащищенной части пользователь может перемещаться произвольно, следуя ссылкам или по запомненным ранее закладкам. Переход в защищенную часть осуществляется только после авторизации пользователя, и все перемещения по защищенным страницам обязательно авторизуются.  При первой верной авторизации вся необходимая информация записывается в cookie, и при последующих авторизациях информация берется в первую очередь из сохраненного cookie. При отсутствии cookie (удален или браузер не принимает cookie) пользователь снова проходит через интерактивную часть авторизации. Отсюда следует, что при невозможности принимать cookie пользователь будет вынужден заново вводить авторизующую информацию при каждом запросе страницы из защищенной части, а каждая защищенная страница должна переадресовывать пользователя в незащищенную часть или на авторизацию. Часть, отвечающая за авторизацию, может быть реализована как одной, так и несколькими страницами.

Серверные технологии

Серверные технологии, используемые в Web-приложениях, основываются на достаточно простом и очевидном принципе динамического создания страницы при запросе клиента вместо возврата готовой страницы. Такой подход позволяет создавать страницы "на лету", основываясь на различных данных (например, из баз данных или информации о браузере клиента), доступных с сервера. Наиболее «старая» и известная технология - CGI (Common Gateway Interface). Фактически CGI позволяет создавать страницы путем запуска на сервере указанной пользователем программы (естественно, список этих программ заранее задан администратором Web-сервера). По ходу работы программа последовательно создает HTML-код результирующей страницы, в зависимости от различных условий код может быть разным. Стандарт CGI определяет достаточно   простой   протокол   взаимодействия   запущенной программы и Web-сервера и поэтому реализован практически на всех существующих Web-серверах.

Web-сервер Internet Information Server дополнительно к CGI реализует еще две технологии - ISAPI (Internet Server Application Programming Interface) и ASP (Active Server Pages). Первая является некоторым аналогом CGI, но использует не отдельные программы, а DLL, что дает значительную экономию ресурсов сервера. Технология ASP основана на совместном использовании визуальной разработки страницы и фрагментов скриптов, изменяющих HTML-код страницы в зависимости от условий, в которых исполняется страница. Эта технология и используется для расширения возможностей 1С:Предприятия 7.7.

Свойства браузеров

На настоящий момент существуют серьезные функциональные различия между версиями браузеров Internet Explorer и Netscape Navigator - более того, различия имеют и реализации одного и того же браузера для разных платформ. Часто это служит причиной создания двух версий сайта, учитывающих особенности того или иного браузера. Однако есть общие технологии, поддерживаемые всеми браузерами независимо от модели и платформы. Две из этих технологий - это CSS (Cascading Style Sheets) и DHTML (Dynamic HTML). CSS предназначен в первую очередь для разделения содержания сайта и его оформления. С помощью CSS всем одинаковым элементам сайта (например, таблицам) можно задать единые правила оформления, причем эти правила будут написаны не на каждой странице, а в отдельном файле, что упрощает переоформление сайта. DHTML используется для динамического изменения страниц в браузере без обращений к Web-серверу. Собственно DHTML состоит из двух составляющих - DOM (Document Object Model, объектная модель документа) и JavaScript (иначе стандарт ECMAScript), использующий DOM. JavaScript -это стандартизованный объектно-ориентированный скриптовый язык общего назначения, однако его исходное предназначение -исполнение в среде браузера. В качестве контекста исполнения используются объекты, расположенные на странице - таблицы, ссылки, рисунки и т.д. Описание существующих объектов и методы работы с ними и образуют DOM - стандарт на программный доступ к содержанию  HTML-страниц.  Основные различия между браузерами кроются именно в реализации этого стандарта, что приводит к упрощению алгоритмов работы в клиентском браузере (для уменьшения влияния различий), или к созданию нескольких страниц для разных браузеров.

Интернет-магазины

В   качестве   примера  наиболее   известных  применений Web-приложений   можно   привести   электронную  торговлю. Приложения, работющие в этой области, чаще всего являются электронными магазинами или Интернет-магазинами.

В число основных элементов Интернет-магазина входят витрина (каталог товаров), корзина покупателя и оплата заказанного товара.

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

Корзина покупателя содержит все выбранные пользователем товары, при этом содержимое корзины может как сохраняться между различными посещениями магазина, так и действовать только при текущем посещении. Это зависит не только от магазина, но и от возможностей  браузера  пользователя,  так  как  существует единственная    возможность   однозначно   идентифицировать пользователя между сеансами - использовать cookie. При отправке запроса браузер передает все возможные для этого сайта и пути cookie серверу, который имеет возможность прочитать их содержимое и определить пользователя магазина. При отправке страницы сервер может передать cookie, которые браузер должен сохранить на компьютере пользователя. Если прием cookie в браузере отключен или просто невозможен, то различные входы одного покупателя в магазин идентифицировать нельзя, и, как следствие, корзина такого покупателя может храниться лишь до момента его выхода из магазина.

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

Ссылки на работающие Интернет-магазины можно найти на сайте фирмы Аркадия www.magazin.ru.

Технология ASP

Как и все остальные расширения функциональности Web-сервера технология ASP предназначена для динамического создания страницы при запросе клиента. Такой подход позволяет создавать страницы "на лету", основываясь на различных данных (например, из баз данных или информации о браузере клиента), доступных с сервера. Чаще всего динамические страницы можно условно разбить на две логические части - информационное наполнение страницы и ее визуальное представление (обычно определяемое общим стилем сайта), при этом в отличие от изменяемой информационной части оформление чаще всего статично. Для создания оформления страниц традиционно удобны различные WYSIWYG-редакторы страниц (например, Frontpage или Dreamweaver), однако существовавший изначально единственный способ динамической генерации страниц -CGI - для создания таких страниц не подходит, так как CGI-приложения создают весь HTML-текст страниц программным путем. Поэтому была предложена другая технология создания динамических страниц, названная ASP (Active Server Pages -Активные Серверные Страницы).

Основой этой технологии является использование HTML-страниц с внедренным в HTML-код программным кодом на некотором   языке   программирования,   создающем   часть результирующей страницы. Код обычно называют скриптом (script), а язык программирования - скриптовым. Такой подход позволяет визуально редактировать оформление страниц, используя для вывода информации скрипты на различных языках. Фактически ASP-страницы   являются   обычными   HTML-страницами   (с некоторыми   синтаксическими   отличиями),   дополнительно обрабатываемые на сервере перед отправкой клиенту. Использование скриптов позволяет работать с OLE-объектами, что в совокупности с встроенными в скриптовые языки возможностями дает практически неограниченные возможности доступа и обработки различной информации. Технология ASP рассчитана на использование только с Web-сервером II S.

ASP-страницы

В программном коде страницы может быть использовано несколько скриптовых языков, при этом процедуры и функции, написанные на одном языке, могут быть вызваны из другого языка. В поставку IIS входят два скриптовых языка - JavaScript и VBScript, однако их число может быть расширено благодаря использованию открытой технологии Active Scripting.

Для внедрения скриптов в HTML-код страницы используется два различных  варианта  тегов:  <%код  скрипта%>  и  <script language="имя   языка"   гипа^"зегуег">код   скрипта</8спр1>. Программный код между тегами <% и %> предполагается написанным на определенном для этой страницы первичном (primary, default) языке, во втором случае язык скрипта задается параметром тега language. Скриптов, использующих как первый, так и второй вариант написания, на странице может быть несколько. Порядок исполнения страницы Web-сервером довольно сложен: сначала  исполняются  все  скрипты,  заключенные  в  теги <script></script> и написанные не на первичном языке, причем порядок обработки таких скриптов (если их несколько) неопределен. Затем происходит последовательная обработка страницы - на этом этапе по мере обработки клиенту последовательно пересылается HTML-код страницы и исполняются скрипты, написанные в тегах <%%>. И наконец снова исполняются скрипты, заключенные между <script></script>, но уже использующие язык страницы по умолчанию, порядок обработки таких скриптов (если их несколько) также неопределен. В обоих случаях весь создаваемый скриптами HTML пересылается клиенту (или буферизуется на сервере для отложенной отправки - это зависит от установки Response.Buffer). Исходя из такого порядка обработки страницы рекомендуется в тегах <script></script> располагать только процедуры и функции (на любом языке) и вызывать их при исполнении скриптов в тегах <%%>. Только таким образом можно обеспечить однозначность последовательности исполнения скриптов.

Для   управления   различными   параметрами   страницы используются директивы (directives) ASP. Директивы пишутся в первой строке страницы в единственном теге <%@ директивы %> через пробел в виде пар «директива=значение». Ниже приведен список директив с кратким описанием:

LANGUAGE - устанавливает язык по умолчанию для страницы. Все скрипты, использующие теги <%%>, должны быть написаны именно на указанном языке. Возможные значения - наименования скриптовых языков (изначально возможны VBScript и JScript).

ENABLESESIONSTATE   -    включает   или   отключает использование этой страницей пользовательских сессий. Возможные значения - True или False.

CODEPAGE - устанавливает кодовую страницу, используемую в преобразовании текста при передаче текста из программного кода в Web-сервер.  Этот  параметр имеет  аналог в языке  (см. Session.CodePage).

LCID - .устанавливает идентификатор текущей региональной установки (local identifier), определяющей формат дат, символ валюты и т.д. Эта установка необходима для правильной работы встроенных   функций   скриптовых   языков,   использующих вышеуказанные данные. Этот параметр имеет аналог в языке (см. Session.LCID).

Каждая ASP-страница исполняется в некотором контексте. Этот контекст предоставляется странице сервером в виде набора объектов, позволяющих получать доступ к свойствам сервера и информации о клиенте, передавать готовый HTML клиентскому приложению и т.д. Код ASP-страницы создается только при запросе страницы и после завершения уничтожается, поэтому хранить в странице статические объекты невозможно.

Приложение

Несколько ASP-страниц можно объединить в приложение (application). Это объединение носит несколько механический характер -   приложением   называются   все   ASP-страницы, находящиеся в специально указанном каталоге (корневом каталоге приложения) или его подкаталогах.

В корневом каталоге приложения может находиться файл global.asa - специальный файл, содержащий предопределенные процедуры и объявления глобальных статических объектов.

В   приложении   существуют   четыре   предопределенные процедуры - Session_OnStart, Session_OnEnd, Application_OnStart, Application_OnEnd. Эти процедуры вызываются соответственно при начале и завершении отдельных пользовательских сессий и всего приложения в целом. Началом работы приложения является запрос пользователем произвольной страницы приложения, завершением -завершение последней сессии.

Для использования предопределенных процедур Application OnStart и Application OnEnd их необходимо реализовать на языке отличном от V7Script. Web-расширение не поддерживает исполнение этих процедур.

Пользовательские сессии

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

·        пользователь запросил страницу приложения, и global.asa содержит процедуру Session_OnStart;

·        пользователь запросил страницу приложения, и global.asa содержит объект <object scope=session ...x/object> с областью видимости "сессия";

·        пользователь сохранил некоторое значение в объекте Session:

·        Session. Уа1ие("ИмяПеременной",Значение).

Для отслеживания сессии конкретного пользователя при последовательных запросах используются cookies (см. Cookies, стр. 17). При начале сессии на компьютер пользователя в cookie передается некоторый уникальный защищенный от воспроизведения идентификатор. При последующих запросах этот cookie передается наоборот от пользователя на Web-сервер, что позволяет однозначно идентифицировать пользователя и определить его сессию. Cookie с идентификатором сессии на компьютере пользователя уничтожается при закрытии браузера. База данных, хранящая соответствия между сессиями и идентификаторами в IIS создается заново при перезапуске  сервера,  поэтому  полагаться  на  уникальность идентификатора сессии в течение длительного времени не следует. Весь механизм отслеживания сессии встроен в IIS и работает автоматически.

Объекты

В контексте ASP-страницы доступно пять основных объектов, предоставляемых IIS: Session, Application, Request, Response, Server. Их неполное описание приведено ниже.

Request

Этот объект представляет запрос пользователя на получение текущей страницы.

Cookies

Этот массив содержит все cookie, переданные пользователем на Web-сервер.

Синтаксис:

Request .Cookies [<Имя cookie>]

Параметры:

<Имя cookie>       Строка,   содержащая   наименование cookie.

Описание:

Массив содержит все переданные при запросе cookies. Каждый cookie является объектом со своими свойствами, перечисленными ниже. Cookie в массиве доступны только для чтения.

Значения элементов cookie:

Item. Значение cookie, содержащее собственно информацию. Domain (домен). Ограничение области видимости для cookie указанным доменом. По умолчанию устанавливается в домен текущего документа.

Expires (срок действия). Ограничение времени действия cookie. По истечении указанного срока cookie удаляется с компьютера пользователя. По умолчанию устанавливается в 0, что эквивалентно удалению cookie при закрытии браузера.

Path (путь). Ограничение области видимости для cookie указанием каталога на сервере. Cookie виден только для файлов в указанном каталоге. Каталог "/" используется для указания всех каталогов сервера.

Пример:

Если (Request.Cookies("CookieName").Item = "NoPage") Тогда Страница = "Exit.asp" ;

КонецЕсли ;

QueryString

Возвращает значение переданного параметра по имени параметра.

Синтаксис:

Request. Query-String (<Имя параметра>} . Item

Параметры:

<Имя параметра>   Строка,   содержащая   наименование параметра.

Описание:

Этот метод чаще всего используется при работе с формами, передающими значения элементов управления через URL в виде пар "Имя=3начение". В силу особенностей 1С:Предприятия при работе с OLE для получения значения параметра после вызова метода необходимо добавить .Item.

Пример:

ИмяПользователя = Request.QueryString("UserName1').Item

ServerVariables

Этот метод предоставляет различную информацию о сервере, пользователе, текущем запросе и т.д.

Синтаксис:

Request. ServerVariables (<Имя параметра >)

Параметры:

<Имя параметра>  Строка,   содержащая   наименование параметра, для которого требуется возвратить информацию

Описание:

Этот метод позволяет получить полную информацию о среде исполнения ASP-страницы - имя страницы, адрес пользователя, запросившего страницу, имя сервера и т.д. Некоторые возможные значения параметра приведены ниже:

HTTP_USER_AGENT              наименование браузера пользователя

PATH INFO                              информация о пути к текущей странице на сервере

PATH TRANSLATED               информация о физическом пути текущей страницы на диске

REMOTE_HOST REMOTE USER адрес компьютера пользователя имя пользователя

Пример:

Сообщить(Request.ServerVariable("HTTP_USER_AGENT"))

Response

Этот объект представляет ответ Web-сервера на запрос пользователя.

Cookies

Этот массив содержит все cookie, передаваемые пользователю в ответе на запрос. По всем свойствам эквивалентен массиву Cookies объекта Request, за исключением того, что в Response.Cookies есть доступ как на чтение, так и на запись.

Buffer

Этот атрибут контролирует предварительную буферизацию при пересылке HTML пользователю.

Синтаксис:

Response.Buffer

Возможные значения:

True/False (I/O)

Описание:

Если переменная установлена в True, то весь пересылаемый клиенту HTML буферизуется на сервере и отправляется только при завершении формирования страницы. Обычно это свойство используется при направлении запроса пользователя на дргую страницу. Свойство доступно как на чтение, так и на запись. Начальная установка соответствует значению, установленному в ММС для приложения.

Пример:

Response. Buffer = 1;

Write

Передает фрагмент HTML в приложение пользователя.

Синтаксис:

Response .Write (<НТМL-строка>)

Параметры:

<НТМЬ-строка> Строка, содержащая фрагмент HTML-кода, передаваемый пользователю.

Описание:

Метод Write передает фрагмент HTML на компьютер пользователя. Переданный фрагмент может буферизоваться, если свойство Buffer установлено в 1.

Пример:

Response. У?г-[Ье(''<р>Параграф</р>") ;

Clear

Очищает буфер переданного клиенту HTML.

Синтаксис:

Response.Clear()

Параметры:

отсутствуют

Описание:

Метод Clear удаляет весь буферизованный HTML. Этот метод может использоваться при обработке ошибок, происшедших при исполнении скрипта, для создания другой страницы.

Пример:

Если (Ошибка = 1) Тогда Response.Clear() ;

КонецЕсли

 

End

Принудительно завершает обработку текущей страницы.

Синтаксис:

Response.End()

Параметры:

отсутствуют

Описание:

Метод End принудительно завершает обработку текущей страницы, прерывая исполняемый скрипт. Если Response. Buffer установлен в 1, то весь буферизованный HTML передается пользователю.

Пример:

Response.Clear() ;

Response.End() ;

Flush

Передает буферизованный HTML-код пользователю.

Синтаксис:

Response.Flush()

Параметры:

отсутствуют

Описание:

Если Response.Buffer равен 1, то весь буферизованный HTML передается пользователю. В противном случае возникает ошибка времени исполнения.

Пример:

Response.Buffer = 1;

Response.Write("<р>Параграф</р>");

Response.Flush();

 

Redirect

Перенаправляет запрос на указанную страницу.

Синтаксис:

Response. Redirect (<Страница>)

Параметры:

<Страница>  Строка с наименованием страницы, на которую производится переадресация.

Описание:

Метод Redirect перенаправляет запрос пользователя на другую страницу, удаляя весь буферизованный к моменту вызова HTML. Для работы этого метода требуется установка Response.Buffer в 1.

Пример:

Response.Redirect("login.asp") ;

 

Server

Этот объект предоставляет доступ к методам и информации Web-сервера.

ScriptTimeout

Определяет время ожидания завершения скрипта в секундах.

Синтаксис:

Server.ScriptTimeout

Описание:

Атрибут ScriptTimeout управляет временем, отпущенным на исполнение скрипта. После окончания времени ожидания скрипт считает зависшим и принудительно прерывается. ScriptTimeout устанавливается по умолчанию в 90 секунд. В большее значение этот атрибут имеет смысл устанавливать при создании объемных страниц (например, отчетов). Атрибут доступен для чтения и записи.

Пример:

Server.ScriptTimeout = 360; // 6 минут

CreateObject

Создает OLE Automation объект.

Синтаксис:

Server. CreateObj ect (<ProgID>}

Параметры:

<ProgID>   ProgID создаваемого объекта.

Описание:

Метод CreateObject создает объект OLE Automation no переданному ProgID. По умолчанию объект создается с областью видимости  "страница"  и  автоматически  уничтожается  при завершении обработки страницы. Если объект необходимо сохранить для последующего использования, то можно воспользоваться объектами Session или Application.

Пример:

Session("MyObj") = Server.CreateObject("MyObjProgID");

 

URLEncode

Перекодирует строку текста с учетом ограничений в написании URL.

Синтаксис:

Server.URLEncode(<URL>)

Параметры:

<URL>   Строка с URL.

Описание:

Метод URLEncode перекодирует переданную строку, учитывая ограничения стандарта на символы, входящие в url(b частности, символ пробела заменяется на %20) Этот метод обычно используется при построении URL программным путем.

Пример:

Response.Write(Server.URLEncode("http://www.lc.ru")) ;

 

MapPath

Конвертирует логический путь к странице на сервере физический путь на локальном диске.

Синтаксис:

Server. MapPath (<Путь на сервере>)

Параметры:

<Путь на сервере>   Строка, содержащая логический путь от корневого каталога сервера или от текущего каталога.

Описание:

Метод MapPath конвертирует переданный логический путь на сервере в физический на локальном диске. Если логический путь начинается с символа «\» или «/», то метод возвращает полный физический путь, считая что логический путь указан начиная от корня сервера. В противном случае переданный логический путь считается указанным относительно текущего каталога. Для получения местонахождения корневого каталога Web-сервера на локальном диске следует передать в метод строку «/». Указанный путь не должен обязательно существовать.

Пример:

Server.MapPath("global.asa") ;

 

Session

SessionID

Содержит идентификатор текущей сессии.

Синтаксис:

Session.SessionID

Описание:

SessionID содержит идентификатор текущей сессии. Значения идентификатора лежат в пределах от 0 до 232-1. Атрибут доступен только для чтения.

Пример:

Response.Write(Session.SessionID) ;

 

Timeout

Максимальное время между последовательными запросами пользователя.

Синтаксис:

Session.Timeout

Описание:

Timeout  содержит   время   ожидания   между   запросами пользователя в минутах. Если между последовательными запросами проходит больше указанного времени, то сессия считается завершенной.  Начальная установка соответствует  значению, установленному в ММ С для приложения. Атрибут доступен для чтения/записи.

Пример:

Session.Timeout = 5;

 

Abandon

Принудительно завершает текущую сессию.

Синтаксис:

Session.Abandon()

Параметры:

отсутствуют

Описание:

Метод Abandon завершает текущую сессию, однако обработка текущей страницы не прекращается. Сессия уничтожается только после завершения текущей страницы.


Пример:

Если (ИмяПользователя='Иванов") Тогда Session.Abandon();

КонецЕсли;

 

Value

Сохраняет значение переменной с областью видимости "сессия" на время существования сессии.

Синтаксис:

Value (<Имя переменной>,<Значение переменной>) Value{<Имя переменной>)

Параметры:

<Имя переменной>  Строка, содержащая наименование сохраняемого значения.

<3начение переменной> Сохраняемое значение.

Описание:

Позволяет сохранять некоторое значение произвольного типа с областью видимости "сессия" на время существования сессии. Каждому значению присваивается уникальное имя для различения значений. Значение автоматически уничтожается при уничтожении сессии. Значения встроенных объектов таким образом сохранять нельзя,   т.е.   строка   Session. Value("varl", Response)   является ошибочной.

Пример:

Session.Value("ИмяПользователя","Иванов");

Response.Write(Session.Value('ИмяПользователя'));

 

Application

Lock

Обеспечивает монопольный доступ к значениям, сохраненным в объекте Application.

Синтаксис:

Application.Lock()

Параметры:

отсутствуют

Описание:

Позволяет монопольно изменять значения сохраненных в Application значений, закрывая доступ для остальных пользователей. Доступ автоматически восстановится при вызове метода Unlock, завершении обработки страницы или по истечении времени таймаута.

Пример:

Application.Lock() ;

Application.Value("тип","строка");

Application.Unlock() ;

 

Unlock

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

Синтаксис:

Application.Unlock()

Параметры:

отсутствуют

Описание:

Метод Unlock является противоположным по действию методу Lock, открывая доступ к значениям, сохраненным в Application, всем пользователям приложения.

Пример:

Application.Lock() ? Application.Value("тип","строка") ;

Application.Unlock() ;

 

Value

Сохраняет  значение  переменной  с  областью  видимости "приложение" на время существования сессии.

Синтаксис:

Va lue (<Имя переменной>,<3начение переменной>} Va lue (<Имя переменной>)

Параметры:

<Имя переменной>  Строка, содержащая наименование сохраняемого значения.

<3начение переменной>

Сохраняемое значение.

Описание:

Позволяет сохранять некоторое значение произвольного типа с областью видимости "приложение" на время существования приложения. Для обращения к значению каждому значению присваивается   уникальное   имя.   Значение   автоматически уничтожается при уничтожении сессии. Значения встроенных объектов   таким   образом   сохранять   нельзя,   т.е.   строка Application.Value("varl",Response) является ошибочной.

Пример:

Application.Value("ИмяПриложения","Торговый зал") ;

Response.Write(Session.Value("ИмяПриложения")) ;






Перейти  к оглавлению: