1. Выбор темы для дипломного проектирования.
Выбор темы для дипломного проектирования, на мой взгляд, достаточно сложная вещь. В дипломной работе требуется проявить самостоятельность с одной стороны и уровень знаний с другой. Но помимо этого хотелось осветить проблему достаточно интересную и новую, поэтому я выбрал тему диплома связанную с технологиями Internet.
Internet развивается довольно стремительно. Быстро растет количество
изданий, посвященных Сети, что предвещает широкое ее распространение даже в
далеких от техники областях. Internet превращается из большой игрушки для
интеллектуалов в полноценный источник всевозможной полезной информации для
всех. Процессы развития глобальных информационно-коммуникационных
технологий очень динамичны в настоящее время, а их возможности для общества
и экономики еще только начинают масштабно использоваться. Еще два-три года
назад Internet рассматривался преимущественно как гигантская библиотека и
главной его задачей считалась помощь в поиске нужной информации и
организация доступа к ней. В настоящий "коммуникационный" этап своего
развития главной задачей сети Internet является помощь в поиске желательных
партнеров и предоставление средств для организации с ними нужного вида
коммуникаций с необходимой интенсивностью. Результаты последних
исследований показали, что использование Internet-технологий может принести
реальную экономию и прибыль. Ожидается существенный рост увеличения объемов
Internet-коммерции, особенно в таких областях, как путешествия, розничная
торговля, финансы, тематическая реклама, а также в компьютерном секторе. В
мире накоплено огромное количество информации по различным вопросам. Чаще
всего эта информация хранится в базах данных (БД). Чтобы опубликовать её в
Сети приходилось экспортировать БД в HTML-документы, что требовало больших
затрат и усложняло поиск информации. Сегодня имеется большой опыт подобных
работ. Практически любой пользователь Сети не раз сталкивался с подобными
БД. Например, главное в работе популярного поискового сервера Yahoo (адрес- http::www.yahoo.com) - это запросы к базе данных WWW-сервера по ключевым
словам. Ответ сервера - список гипертекстовых ссылок на найденные в Сети
страницы, содержащие нужную информацию. Именно сегодня проблема Web-
интерфейса к БД как никогда актуальна.
2. Разработка технического задания на дипломное проектирование.
Работая в фирме «Телефонная Коммерческая Служба Санкт-Петербурга
008» передо мною, было поставлена задача:
. Перенести базу данных по клиентам фирмы с сервера в локальной сети телефонной справочной службы фирмы на её WEB-сервер.
. Выбрать способ реализации.
. Сделать выбор между доступными на сегодняшний день серверами баз данных, для дальнейшей реализации, на его основе, базы данных «Телефонной Коммерческой Службы Санкт-Петербурга 008».
. Сделать выбор между способами доступа к базе данных.
. Осуществить разработку доступа к базе данных фирмы с помощью
Internet-браузера.
3. Выбор методов и средств решения.
1. Выбор сервера баз данных.
В данном разделе требуется определить с помощью каких методов и
средств решения можно осуществить реализацию проекта. Сразу надо сказать,
что средств решения этой задачи на сегодняшний день достаточно много, но
практически всегда всё зависит от количества ресурсов предоставляемых для
решения – типом и характеристиками сервера, операционной системой и т.д.
Сразу надо сказать, что компьютер, выделенный под WEB-сервер достаточно
мощный (Pentium II - 300Мг, 128Мб. оперативной памяти, SCSI – диск). На нём
установлена операционная система Microsoft Windows NT 4.0, так же
установлен WEB-сервер Internet Information Server.
Доступная потребителю информация о самих системах, операционных
системах, программном обеспечении инфраструктуры (СУБД и мониторы обработки
транзакций) как правило, носит очень общий характер. Структура аппаратных
средств, на базе которых работают программные системы, стала настолько
сложной, что эксперты в одной области редко являются таковыми в другой.
Информация о реальном использовании систем редко является точной. Более
того, пользователи всегда находят новые способы использования
вычислительных систем как только становятся доступными новые возможности.
При стольких неопределенностях просто удивительно, что многие конфигурации
систем работают достаточно хорошо. Оценка конфигурации все еще остается
некоторым видом искусства, но к ней можно подойти с научных позиций.
Намного проще решить, что определенная конфигурация не сможет обрабатывать
определенные виды нагрузки, чем определить с уверенностью, что нагрузка
может обрабатываться внутри определенных ограничений производительности.
Более того, реальное использование систем показывает, что имеет место
тенденция заполнения всех доступных ресурсов. Как следствие, системы, даже
имеющие некоторые избыточные ресурсы, со временем не будут воспринимать
дополнительную нагрузку.
Следует отметить, что выбор той или иной аппаратной платформы и
конфигурации определяется и рядом общих требований, которые предъявляются к
характеристикам современных вычислительных систем.
К ним относятся:
- отношение стоимость/производительность;
- надежность и отказоустойчивость;
- масштабируемость;
- совместимость и мобильность программного обеспечения.
Уже довольно давно развитые коммерческие СУБД основываются на архитектуре "клиент-сервер". При этой организации наиболее трудоемкие операции над базами данных выполняются на выделенном компьютере-сервере, который должен быть достаточно мощным и обладать соответствующим набором ресурсов основной и внешней памяти. До поры серверная часть СУБД обладала простой организацией: запросы, поступающие из клиентских частей системы, обрабатывались последовательно с небольшой оптимизацией для совмещения процессорной работы с работой устройств внешней памяти. Однако с появлением на рынке мультипроцессорных симметричных аппаратных архитектур, производители СУБД были вынуждены пересмотреть организацию своих серверов, допустив в них внутреннюю параллельность.
Internet действительно неожиданно бурно ворвался в устоявшуюся жизнь
разработчиков клиент-серверных приложений. Однако первоначальный шок
довольно быстро прошел, как только наступило осознание нехитрого в общем-то
факта, что структура Internet/Intranet приложений имеет много общего с
традиционной платформой "клиент-сервер". Правильнее говоря, World Wide Web
(WWW) также основывается на клиент-серверной архитектуре. В самом деле, Web-
браузер является типичным клиентским front-end'ом, основное отличие
которого от клиентских мест, построенных с помощью Visual C++, Visual
Basic, Visual FoxPro и других средств разработки, состоит в более гибко
настраиваемой функциональности, которая может определяться даже во время
выполнения программы. При этом не требуется ни перекомпиляции, ни
переустановки модулей, что уже само по себе является нетривиальной задачей
в больших и сложных клиент-серверных системах масштаба корпорации. Правда,
первоначально браузеры использовались только как средства форматирования
статического текста. Однако активно развивающийся в Internet бизнес вскоре
перестал довольствоваться простой публикацией рекламы предприятия и
справочной информации о его деятельности. Например, клиент имел полное
право хотеть выбрать из рекламного проспекта фирмы понравившиеся ему
образцы и совершить покупку. Подобно типичному интерфейсу клиентского
приложения на VB, VFP и т.д., сценарий работы предполагал заполнение
клиентом некоторой формы, населенной, вообще говоря, различными элементами
управления, отправку соответствующего запроса на сервер и прием результатов
обработки. Таким образом, требования бизнеса выдвинули на первый план
принципы динамического взаимодействия браузера и Web-сервера внутри сессии,
что заставило задуматься как об активной роли браузера, так и о расширении
функциональности сервера по сравнению с простым хранением и пересылкой HTML-
документов.
Многие фирмы-производители программных продуктов выпускают или разрабатывают средства публикации баз данных в Internet-сетях. Основные функции таких программных продуктов данного вида таковы:
1. обеспечить отображение интерфейса пользователя в формате HTML для отображения программой просмотра клиента, в частности Internet- броузерами.
2. обеспечить формирование запросов к базе данных наиболее простыми для неподготовленного пользователя средствами.
3. обеспечить аутентификацию пользователя (для разграничения доступа).
4. обеспечить обработку запроса и возврат результата в HTML формате для отображения программой просмотра пользователя.
При этом необходимо помнить о защите передаваемой по Сети информации и о привлекательности и понятности интерфейса.
Для серийно выпускаемых программных продуктов данного типа характерны
высокая стоимость самого программного обеспечения (ПО), аппаратной
платформы, самой СУБД (насколько мне известно, ПО для связи с WWW пока не
включается в поставку СУБД). К достоинствам можно отнести хорошую
документированность, наличие технической поддержки, низкую стоимость
дальнейших обновлений программного обеспечения. Хотя в последнее время
начинают появляться программы такого типа для «настольных» СУБД типа Visual
FoxPro, Paradox и т.д. Но здесь другая проблема - при низкой стоимости
(некоторое ПО можно получить по Сети бесплатно - нужно лишь иметь СУБД)
отсутствует мощность и гибкость. Такое ПО годится разве что для публикации
небольших по объёму и несложных баз данных.
Можно упомянуть следующие СУБД:
SQL-server фирмы Microsoft (требует мощного сервера баз данных под
управлением ОС Microsoft Windows NT server).
Sybase System фирмы Sybase (требует мощного UNIX- сервера).
Informix фирмы Informix Software (также требует мощного UNIX- сервера).
Progress фирмы Progress Software (работает на той же аппаратной платформе,
что и два предыдущих).
InterBase фирмы Borland (есть вариант для Windows NT и для UNIX).
Кроме вышеперечисленных достоинств можно также отметить хорошую масштабирумость (наращиваемость), устойчивость в работе, защиту от несанкционированного доступа и мощность этих программных продуктов. Всё это ПО, как мне кажется, очень хорошо подходит для работы с крупными проектами в области баз данных.
Например, в последнее время, всё чаще упоминают Intranet («внутренняя»
Сеть). Это крупные корпоративные вычислительные сети, основанные на
технологиях Internet, использующие те же протоколы, форматы данных и т.д.
имеющие или не имеющие выход глобальную сеть Internet. Достоинства Intranet
в том, что не надо переучивать персонал при переходе на новое ПО (можно, в
принципе, оставить старые интерфейсы), так как научив один раз человека
пользоваться Internet’ ом, можно легко обучить его работе с ПО предприятия
- для отображения информации можно воспользоваться теми же браузерами. К
общим чертам вышеперечисленных программных продуктов можно отнести
поддержку стандартного языка запросов к базам данных SQL, что облегчает в
случае надобности переход от одной СУБД к другой, практическое отсутствие
ограничений на размеры файлов баз данных.
Оригинальная версия SQL – это интерпретируемый язык, предназначенный
для выполнения операций над базами данных. Язык SQL был создан в начале 70-
х как интерфейс для взаимодействия с базами данных, основанными на новой
для того времени реляционной теории. Реальные приложения обычно написаны на
других языках, генерирующих код на языке SQL и передающих их в СУБД в виде
текста в формате ASCII. Нужно отметить также, что практически все реальные
реляционные (и не только реляционные) системы помимо реализации стандарта
ANSI SQL, известного сейчас в последней редакции под именем SQL2 (или SQL-
92), включают в себя дополнительные расширения, например, поддержка
архитектуры клиент-сервер или средства разработки приложений.
Как говорилось выше, выбор реализации того или иного решения поставленной задачи сопряжен, прежде всего, с техническими показателями компьютера-сервера, а так же с операционной системой, установленной на нём.
Microsoft SQL Server 7.0 входит в состав семейства Microsoft
BackOffice, объединяющего пять серверных приложений, разработанных для
совместного функционирования в качестве интегрированной системы. Она
позволяет пользователям повысить производительность процесса принятия
решений средствами систем, базирующихся на архитектуре клиент-сервер. Кроме
того, Microsoft SQL Server 7.0 завершает линию средств разработки,
включающих Microsoft Access, Visual FoxPro®, Visual Basic и Visual C++™.
Расширенные возможности масштабирования и высокая производительность.
Особое внимание, которое было уделено повышению производительности
СУБД, позволило повысить скорость выполнения некоторых операций почти на
400% на многопроцессорных компьютерах. Это достигается активным
использованием многопроцеcсорной архитектуры компьютера и многопоточной
архитектуры операционной системы. Среди операций, выполняющихся
параллельно, можно назвать сканирование таблиц, загрузку,
создание/восстановление страховочной копии. Все это позволяет обеспечить
высокопроизводительную работу с большими и очень большими базами данных.
Поддержка очень больших баз данных и съемных носителей.
Для версии 4.21а очень большой считалась база данных размером 10-15 Гб
(хотя некоторые организации, например, Sprint, работали с базами данных
размером 60 Гб и более). Высокоскоростная параллельная обработка делает
возможной поддержку работы с базами данных размером 100 Гб и более на
соответствующим образом конфигурированных системах. Не только процесс
создания страховочных копий выполняется быстрее, но и такие операции, как
проверка целостности базы данных (выполняется командой DBCC), сильно
выигрывают от использования параллельного сканирования и увеличенных блоков
ввода/вывода. Возможность сохранения в страховочной копии (восстановления
из копии) индивидуальных таблиц позволяет сократить время, необходимое на
сохранение (восстановление) отдельных таблиц базы данных. Поддержка
распространения баз данных на съемных носителях (таких как CD-ROM)
позволяет выпускать различного рода справочники или информационные
материалы. Интересно отметить, что гибкость SQL Server проявляется и при
работе с очень маленькими объемами информации. Так, для того чтобы базу
данных можно было сохранить на дискете, ее минимальный размер снижен до 1
Мб.
Расширение возможностей языка и программного доступа.
Существующая версия SQL Server снабжена мощным языком программирования
-Transact-SQL, позволяющим создавать сложную логику триггеров и хранимых
процедур. В новой версии язык значительно расширен, теперь он соответствует
стандарту ANSI-92, и программисты получили новые возможности (такие как
новые, соответствующие ANSI-стандарту, типы данных и соответствующая
стандарту ANSI поддержка декларативной целостности данных). Помимо
перечисленных возможностей, программист может воспользоваться генератором,
автоматически создающим уникальные значения для ключевых полей таблицы,
возможностью передавать идентификаторы и данные типа TEXT и IMAGE как
параметры хранимым процедурам и многое другое. Использование хранимых
процедур, которые запускаются автоматически при каждом старте SQL Server,
позволяет создавать системы, способные выполнять различного рода задания
без участия администратора. Наиболее же интересным нововведением являются
скроллируемые, двунаправленные курсоры. Курсоры SQL Server поддерживают все
режимы, определенные расширенными требованиями ANSI, а также и ODBC
семантику; они совместимы с существующими курсорами, поддерживаемыми API в
DB-Library.
Производительность и масштабируемость.
Microsoft SQL Server 7.0 имеет параллельную архитектуру, интенсивно
использующую много поточность операционной системы для обеспечения высокой
производительности и масштабируемости на многопроцессорных системах. Все
управление задачами SQL Server организовано вытесняющим для повышения
надежности и изолирования возможных сбоев. За счет динамического
распределения нагрузки на процессоры SQL Server достигает автоматической
балансировки загрузки всех ЦП компьютера. Microsoft называет это
"симметричной архитектурой сервера".
Преимущества симметричной архитектуры.
Симметричная архитектура Microsoft SQL Server предоставляет следующие
преимущества:
- снижает сложность системы.
SQL Server не дублирует службы операционной системы (такие как диспетчирование, распределение памяти, управление очередями), что делает архитектуру системы более эффективной и стабильной;
- повышает производительность .
SQL Server способен обеспечить высокую скорость выполнения транзакций и обладает высокой пропускной способностью на микропроцессорных системах, даже при одновременной работе сотен пользователей;
- адаптируется к росту нагрузки.
Нагрузка на SQL Server динамически распределяется по нескольким ЦП, что повышает масштабируемость на симметричных многопроцессорных системах. повышает надежность
Задачи пользователя исполняются в самостоятельных потоках, и при необходимости одна задача принудительно завершается, не оказывая влияния на выполнение остальных. Например, SQL Server способен прервать "спящий" процесс без того, чтобы это оказало влияние на работу всей системы. Ни одна задача не может "выйти из-под контроля".
Усовершенствования, связанные с параллельной обработкой данных в SQL Server
7.0 .
У SQL Server 7.0 Microsoft еще более расширила возможности параллельной обработки симметричной архитектуры сервера. За счет параллельного выполнения широкого диапазона внутренних функций СУБД с использованием множественных потоков операционной системы при работе на много процессорных системах резко возрастает производительность и масштабируемость многих операций (таких как определенные типы запросов, сканирование таблиц, создание индексов, создание/восстановление страховочных копий, проверка целостности базы данных и т.д.).
Параллельное сканирование и асинхронное опережающее чтение.
Параллельное сканирование и асинхронное опережающее чтение повышает на
40 - 400% скорость выполнения некоторых типов запросов и других операций
над базой данных в многопроцессорных системах. Повышение производительности
достигается за счет использования SQL Server 7.0 множественных потоков
операционной системы и алгоритмов определения следующего блока данных,
необходимых для вывода в кэш. Эта операция типична для длительного запроса
с вычислениями или операции создания отчета. Подобная технология
обеспечивает резкое повышение производительности для любой операции,
требующей просмотра таблиц, например, SELECT, UPDATE и DELETE с
необходимостью поиска, CREATE INDEX, DBCC, DUMP/LOAD и т.п.
Параллельная загрузка.
При работе с новой версией SQL Server можно запускать несколько
параллельно работающих копий BCP или SQL Enterprise Manager и выполнять
параллельные перекрывающиеся операции загрузки данных в SQL Server.
Подобные возможности оказываются особенно полезными при необходимости
массивного копирования данных в ограниченные сроки.
И конечно же безопасность:
- Улучшенная интеграция с безопасностью NT ;
- Аутентификация средствами NT (как текущий пользователь - без пароля, как другой - login+pwd) ;
- Mixed (возможна аутентификация средствами SQL Srv) ;
- Полная поддержка пользователей, групп и ролей ;
- Роли могут быть приписаны пользователям и группам NT, а также пользователям Sphinx ;
- Роли могут быть вложены ;
- Прикладные роли для 3-уровневых систем ;
- Позволяют назначать права при доступе через приложение, а не isql ;
- Гибкая гранулярность прав и системных ролей ;
- Предопределенные роли ServerAdmin, SecurityOfficer, ... ;
- Поддержка делегирования в NT 4.0 ;
- На 2-м сервере не как удаленный пользователь, а под тем же именем ;
- Простое и мощное администрирование.
Потому было принято решение установить сервером базы данных –
Microsoft SQL Server 7.0.
2. Выбор методов доступа к базе данных.
Далее необходимо сравнить способы реализации доступа к базе данных.
Схематически можно представить взаимодействие базы данных и WEB-сервера так:
3.2.1 CGI – Common Gateway Interface.
Первым способом стали приложения Common Gateway Interface (CGI),
поскольку спецификация CGI позволяет браузеру вызвать тот или иной
исполняемый модуль или скрипт на Web-сервере, который мог обратиться с
запросом к базе данных, построить в HTML-кодах страницу результатов и
передать ее обратно Web-серверу, который же, в свою очередь, отсылал
результаты браузеру. CGI-приложения могут содержать вызовы других
программных (написанных, например, на С++) или командных (.bat, .cmd)
файлов. С помощью CGI-cкриптов, а точнее на языке PERL (Practical
Extraction and Reporting Language), построено немало интерактивных Web-
приложений. К сожалению, каждый такой скрипт исполняется как иной, нежели
Web-сервер, процесс, что быстро "съедает" ресурсы даже достаточно
"навороченной" по сегодняшним меркам машины, особенно при большом
количестве заходов на сервер.
3.2.2 PHP - Personal Home Page Tools.
Модуль PHP начал жизнь как простая небольшая CGI оболочка, написанная
на Perl. Чтобы избавиться от значительных непроизводительных затрат из-за
необходимости запуска Perl при каждом обращении к серверу в стандартном
обращении CGI. Первоначально использовался для маленьких Internet-страниц.
Позднее был встроен инструмент для включения SQL в WEB-страницы. Это была
CGI-оболочка, которая анализирует запросы SQL и облегчает создание форм и
таблиц, основанных на этих запросах.
PHP/FI версии 2.0 - полная перезапись из этих двух пакетов,
объединенных в одиночную программу. Это теперь развилось по сути в простой
язык программирования, внедренный внутрь HTML файлов. PHP/FI сегодня
используется больше для создания целых WEB серверов, чем для малых домашних
страниц. Модуль устраняет потребность в многочисленных малых cgi программах
на Perl, позволяя поместить простые скрипт-программы непосредственно в ваши
HTML файлы. Пакет также упрощает управление большими WEB серверами, помещая
все компоненты WEB страницы в одиночном файле HTML. Встроенная поддержка
различных баз данных делает тривиальной разработку WEB страниц с доступом к
базам данных. Многие находят, что иметь дело с внедренным в html-документы
языком намного проще, чем создавать отдельные HTML и CGI файлы.
3.2.3 ISAPI – приложения.
3.2.3.1 dBWeb.
Помимо исполнения 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.
3. 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-фильтра для переработки в обычный 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 нужен для персонализации, то есть хранения
переменных среды конкретного клиента, а Application - для хранения
глобальной информации всего приложения. Процедуры для обработки событий
OnStart и OnEnd описываются в файле Global.asa, который должен лежать в
корне виртуального каталога.
Механизм приема-передачи данных в ASP реализован с помощью двух встроенных
объектов: Request и Response. Используя свойства и методы этих объектов,
можно добиться настоящей интерактивности, единственным неудобством остается
необходимость закачки новой страницы каждый раз при исполнении какого-
нибудь действия. Но тут не стоит забывать, что ASP - это именно серверная
часть в клиент-серверной модели, а для клиентской части существуют другие
решения.
Как уже было сказано выше, COM-объекты играют важную роль в жизни ASP. И
самым значимым среди них является Database Access. О