Реферат: Перенос Базы Данных на WEB-сервер
Помимо исполнения CGI-скриптов, Microsoft Internet Information Server (MS IIS) предоставляет разработчикам возможность создания с помощью соответствующего API (ISAPI) приложений в виде dll, запуск которых происходит в ответ на команду или выбор линка на Web-странице. Каждое такое приложение выполняется в адресном пространстве Web-сервера, что, естественно, повышает скорость работы и существенно экономит машинные ресурсы. В зависимости от сложности сайта и приложений, dll могут быть предзагружены одновременно с запуском сервера, либо подгружаться/выгружаться из памяти по мере необходимости. К наиболее известным средствам разработки приложений на основе ISAPI относятся входящий в состав MS IIS Internet Database Connector (IDC), а также свободно распространяемый dbWeb.
Microsoft dbWeb представляет собой шлюз между 32-битными ODBC-ресурсами, в качестве которых могут выступать, например, Microsoft SQL Server, Microsoft Access, Microsoft Visual FoxPro, Oracle и т.д., и MS IIS. dbWeb предусматривает создание схемы, содержащей описание данных и связанных с ними Web-страниц. Он поддерживает исполнение запросов в реальном режиме времени на основе "pull"-модели публикации, позволяя тем самым создавать активные Web-страницы.
Рис. 1 Структура dbWeb.
Microsoft dbWeb структурно состоит из двух основных компонент: dbWeb Service и dbWeb Administrator. dbWeb Service является типичным ISAPI-приложением, которое обрабатывает пользовательские запросы, направляемые посетителем страницы через браузер, и управляет соединениями между браузером, ODBC-ресурсом и IIS. К функциям dbWeb Administrator относится создание HTML-страниц, содержащих результаты выполнения запросов на основе уже упоминавшихся схем, с помощью которых осуществляется управление публикуемыми данными. Схемы определяют сам запрос и структуру страниц. При этом не требуется знания HTML или ISAPI, так как в состав dbWeb Administrator входит интерактивный мастер-построитель схем (Schema Wizard), который в традиционной для любой программы-мастера манере позволяет задать поля поиска по методу Query-by-Example (QBE), выбрать поля для отображения в таблице страницы результатов и определить переходы из списка записей в отдельные страницы, содержащие развернутую информацию по текущей записи. Настройкой соответствующих свойств можно разрешать или запрещать операции вставки, удаления и редактирования. Для проверки прав пользователя используется система безопасности той СУБД, к которой происходит доступ. dbWeb имеет в своем составе широкий спектр шаблонов страниц, которые при необходимости могут быть легко откорректированы и настроены разработчиком для более полного соответствия его задачам. Таким образом, dbWeb не является конечным пользовательским приложением. Скорее его можно охарактеризовать как достаточно легкий в использовании инструментарий разработки, который, как всякий мастер, не поддерживает языка программирования. Тем не менее, эта программа успешно справляется с автоматизацией большинства рутинных операций по организации соединений и публикации данных из БД и покрывает, по разным оценкам, порядка 40-60% потребностей бизнеса среднестатистической фирмы при организации доступа к своим источникам данных через Internet.
3.2.3.2 IDC.
IDC является другим примером достаточно давно и успешно используемого ISAPI-приложения. Он входит в состав MS IIS. С помощью вызовов функций ODBC API IDC обеспечивает прямую связь между полями HTML-формы и соответствующим ODBC-достижимым источником данных, например, базой данных MS SQL Server, без необходимости написания замысловатых CGI-скриптов. Схема работы IDC:
Рис.2 Схема работы IDC.
Для доступа к данным и публикации на Web IDC использует файлы двух типов - .idc и .htx. Файл с расширением idc содержит всю необходимую информацию о соединении с источником данных, текст запроса, а также ссылку на соответствующий htx-файл. Файл с расширением htx служит шаблоном страницы, на которой будут опубликованы данные из базы, а также элементы оформления в виде статического текста, графики, видео и т.п. MS IIS распознает расширение .idc как вызов httpodbc.dll, которая считывает http-заголовки из управляющего блока ISAPI для определения параметров запроса. Httpodbc.dll читает и разбирает idc-файл, указанный в URL. Имя источника, имя пользователя, пароль и пр. используются для подключения к соответствующему ресурсу ODBC, после чего httpodbc передает на выполнение SQL-запрос и получает результаты. Результаты используются для наполнения заготовки в виде htx-файла, после чего полученный HTML-документ MS IIS передает браузеру.
3.2.3.3 ADO – Active Data Objects.
Active Data Objects. Когда речь заходит о компонентах ActiveX, как правило, неявно подразумевается клиентская часть приложения. Microsoft Active Server Pages (ASP) - активные серверные страницы- представляют собой инструмент для эффективной разработки серверных Web-приложений, интегрирующих в своем составе HTML-код, VBScript и компоненты ActiveX. Это означает, что в уже существующие наработки легко могут быть встроены фрагменты кода на VBScript или JavaScript, а также вызовы соответствующих объектов ActiveX. Как, наверное, известно, VBScript - это сужение хорошо знакомого языка программирования Visual Basic на область создания Web-страниц. Основным идейным отличием VBScript от VB, на мой субъективный взгляд, служит то, что VBScript не содержит операторов файлового ввода-вывода и вообще средств прямого доступа к операционной системе (напрашиваются параллели, если Java сопоставить с С/С++, не правда ли). Кроме этого, в VBScript существует только один тип переменных - variant, отсутствуют декларативные константы и т.п. Наличие привычного синтаксиса языка высокого уровня существенно упрощает создание HTML-страниц. Кроме этого, в состав среды активных серверных страниц (ASP Framework) входят следующие 5 основных встроенных объектов.
-
Application (приложение) - для разделения информации между всеми пользователями данного приложения.
-
Request (запрос) - для получения тех значений, которые броузер клиента передает на сервер по HTTP-запросу, т.е., грубо говоря, для получения информации о пользователе или от пользователя
-
Response (ответ) - для передачи информации клиенту.
-
Server (сервер) - предоставляет возможность обращения к методам и свойствам сервера для управления средой исполнения ASP.
-
Session (сеанс) - для хранения информации, относящейся к данной пользовательской сессии.
Помимо базовых объектов, ASP поддерживают многочисленные компоненты ActiveX, которые упрощают создание и значительно повышают функциональность активных Web-страниц. К ним относятся различные элементы управления, компоненты, создающие содержание приложения, компоненты ввода/вывода в файл и многие другие. Но нас в первую очередь будут интересовать компоненты, позволяющие организовать доступ к базам данных, или Active Data Objects (ADO). В отличие от хорошо известных Data Access Objects (DAO) или Remote Data Objects (RDO) ADO имеют менее иерархически строгую структуру и потому более удобны при работе с базами данных.
Рис.3 Структура DAO и ADO.
ADO являются универсальным инструментом доступа к данным. Вы можете без изменений использовать интерфейс ADO из данного примера при работе с базами данных на VB, Visual FoxPro и т.д. Наконец, с помощью ADO, в свою очередь, могут быть построены пользовательские компоненты, для обращения к серверу баз данных как со стороны "толстого" (Win32), так и со стороны тонкого (Internet Browser) клиента. Функции обеспечения целостности транзакций, сервисы безопасности и согласованной работы компонент в распределенном приложении может взять на себя Microsoft Transaction Server.
-
ASP (Active Server Page) – Активные серверные страницы.
Особое положение среди средств разработки занимают активные серверные страницы (Active Server Pages или ASP). Они предназначены для организации доступа к WEB-серверу, клиентов, располагающих только броузером. ASP представляют собой набор интерпретируемых сервером MS IIS (Microsoft Internet Information Server) сценариев, содержащих разметку HTML и программный код на языках VBScript и Javascript, который по желанию разработчика, может исполняться либо на сервере, либо на клиенте. Это позволяет в одном ASP-файле сочетать серверную и клиентскую логику. Та часть кода, которая исполняется на сервере, может использовать "родные" интерфейсы для общения с сервером и реализации как базовых, так и расширенных функций MAPI. При этом общение клиентской и серверной частей ASP-приложения происходит исключительно средствами протокола HTTP. За поддержание сессии между клиентской и серверной частями отвечает Internet Information Server.
Active Server Pages являются обычным ISAPI-фильтром, работающим в контексте процесса MS Internet Information Server, начиная с версии 3.0. (Технология ASP доступна и для других серверов. Фирмой Chili!Soft выпускается пакет Chili!ASP, после установки которого сервера других производителей начинают "понимать" ASP – страницы.) Отличие ASP от препроцессора заключается в возможности работы с COM-объектами (в контексте ASP их называют Installable components).
Проект под названием Denali почти идеально вписывается в технологию "клиент-сервер", теперь уже не настолько популярную. Хотя, что может лучше подходить для Сети, чем технология создания приложений "логически централизованных - физически децентрализованных". Говоря простым языком, логически централизованные - это распределенные вычислительные системы, доступные и управляемые из любой точки, а физическая децентрализация - это возможность расширения, масштабирования, повышения надежности.
В первую очередь, ASP имеет достаточно развитый командный язык. И даже не один, а как минимум два: VBScript и JScript. "Как минимум", потому что объектная модель OLE для «скриптовых» машин позволяет легко встраивать в среду другие языки. Поэтому разработчикам на Perl или REXX можно не переучиваться, а использовать свой накопленный опыт. И все же языком "по умолчанию" для ASP является VBScript, фактически подмножество Visual Basic, и в этом, конечно же, нет ничего удивительного - продукт Microsoft Corporation. JScript, с другой стороны, - подмножество Java и так же похож на С++. И у той, и другой скрипт-машины есть как свои преимущества, так и недостатки. Если вкратце, то JScript все-таки кажется помощнее и почти дотягивает по возможностям до нескриптовых языков. Это далеко не ассемблер, практически невозможно поковыряться в потрохах у системы, но, по всей видимости, разработчики ASP посчитали это дополнительной защитой от вторжения извне.
Само кодирование не требует никаких дополнительных затрат в виде специальных сред разработки. Поскольку ASP-файлы имеют текстовый формат, они легко могут быть модифицированы для придания клиентской и серверной частям необходимой функциональности. Microsoft рекомендует использовать MS InterDev, но почти во всех современных версиях HTML-редакторов (например, Allaire HomeSite) есть поддержка тегов ASP. Код "вставляется" прямо в HTML-текст в окружении специального тега
<% ASP-код %>, после этого файлу нужно дать с расширением .asp, чтобы он был передан на вход ASP-фильтра для переработки в обычный HTML и выдачи IIS-серверу, который уже и отдаст результат браузеру. Причем любому, не имеет значения, MS IE это, Netscape Navigator или браузер "третьего мира". Главное, чтобы он понимал HTML, а это ведь вообще-то первостепенная задача браузера. Чем не универсальная платформа, к которой долго и упорно стремятся все? Конечно, все же есть отличия в браузерах, то есть в их интерпретации стандартного HTML. Всем это знакомо: одни и те же странички, написанные на самом что ни на есть стандартнейшем HTML, смотрятся иногда совершенно по-разному в IE и NN. А вообще ASP имеет возможность справиться и с этой "проблемой". Просто определяется тип браузера, с которым пришли, и навигация идет по страницам, написанным для этого типа.
Происхождение одной из труднейших проблем при создании Интернет-приложений в самой природе Сети. Это отсутствие гарантированной постоянной связи, и, отсюда, невозможность создания непрерывного канала для отслеживания действий конкретного клиента. Единственный выход из этой ситуации - если клиент при каждом обращении будет "представляться". Именно это и сделано при помощи "cookie". Немало копий было поломано по поводу безопасности, но на данный момент, вроде бы, решили, что они достаточно безвредны, если не считать нескольких десятков байт, съедаемых на диске. Зато пользы от них, как можно увидеть, гораздо больше. После старта сервер выдает каждому пришедшему клиенту уникальный идентификатор (SessionID) в виде "cookie" и в течение сессии может понимать "кто - где". ID уникальны только в период непрерывной работы сервера. Если остановить и снова перезапустить сервер, то можно получить значения такие же, как до перезапуска. Поэтому применять SessionID в приложениях в виде уникального идентификатора не рекомендуется - лучше формировать свои.
Для настройки сессии можно использовать два объекта: Application и Session, каждый из которых имеет по два обрабатываемых события OnStart и OnEnd. Первый клиент, пришедший на сервер, вызывает создание объектов Application и Session и отработку для них своих процедур OnStart. Каждый последующий вызывает создание объекта Session для себя и отработку OnStart для своего объекта. После ухода клиента для соответствующего объекта Session отрабатывается процедура OnEnd, и объект уничтожается. С уходом последнего, кроме того, вызывается процедура OnEnd для объекта Application, и уничтожается объект Application. Уход клиента происходит либо по тайм-ауту, период которого задается в минутах свойством Timeout объекта Session (по умолчанию 30 минут), либо силовым методом Abandon того же самого объекта. Фактически, объект Session нужен для персонализации, то есть хранения пере