Создание приложений с базами данных для Интернета и интрасетей: практическое руководство (С) Александр Вячеславович Фролов, Григорий Вячеславович Фролов, 2000 1. Сервер Web как ядро приложений для Интернета 1. Сервер Web как ядро приложений для Интернета Пассивные и активные серверы Web Клиентские сценарии JavaScript Проблемы с реализацией клиентской активности Интеграция серверов Web и SQL Server Программный интерфейс DB Library Объектный интерфейс Remote Data Object Объектный интерфейс ActiveX Data Objects В этой главе мы рассмотрим основные понятия, такие, как активный сервер Web, и относительно новый класс программ — приложения Web. Свое название они получили из-за того, что их работа самым непосредственным образом связана с серверами Web, составляющими основу информационной структуры Интернета. Эта глава имеет ознакомительный характер. Введенные здесь понятия будут раскрыты в последующих главах нашей книги. Прежде чем перейти к детальному описанию особенностей приложений Web, мы хотим напомнить Вам принцип работы сервера Web. Известно, что серверы Web хранят информацию в виде текстовых файлов, называемых также страницами сервера Web. Помимо текста, такие страницы могут содержать ссылки на другие страницы (расположенные на том же самом или другом сервере Web), ссылки на графические изображения, аудио- и видеоинформацию, различные объекты ввода данных (поля, кнопки, формы и т. д.), а также другие объекты. Фактически страницы Web представляют собой некоторое связующее звено между объектами различных типов. Их проектируют с применением специального языка разметки гипертекстов Hyper Text Markup Language, или сокращенно HTML. Для доступа к информации, расположенной на серверах Web, пользователи применяют специальные клиентские программы — браузеры. В настоящее время существуют десятки различных браузеров, но у пользователей Интернета наибольшей популярностью пользуются два — Microsoft Internet Explorer и Netscape Navigator. Каждая страница сервера Web имеет свой так называемый универсальный адрес ресурса Universal Resource Locator (URL). Для того чтобы получить доступ к той или иной странице, пользователь должен указать ее адрес URL программе браузера. Как правило, любой сервер Web имеет одну главную страницу, содержащую ссылки на все другие страницы этого сервера. Поэтому просмотр содержимого сервера Web обычно выполняется, начиная с его главной страницы. Когда пользователь указывает браузеру адрес страницы сервера Web, она начинает загружаться с сервера. При этом браузер устанавливает соединение с сервером Web, применяя протокол передачи данных Hyper Text Transfer Protocol (HTTP), получает нужную страницу и разрывает соединение. Принятая страница отображается в окне браузера. Этот процесс показан на рис. 1-1.
Рис. 1-1. Взаимодействие браузера и сервера Web Пассивные и активные серверы Web Различают пассивные и активные серверы Web. Если страницы сервера содержат только статическую текстовую и мультимедийную информацию, а также гипертекстовые ссылки на другие страницы, то сервер называется пассивным. Когда же страницы сервера ведут себя аналогично окнам обычных интерактивных приложений, вступая в диалог с пользователем, мы имеем дело с активным сервером. Очевидно, статический сервер Web не может служить основой для создания интерактивных приложений в сети Интернет с базами данных, так как он не предусматривает никаких средств ввода и обработки запросов. Поэтому в нашей книге мы будем рассматривать только активные серверы Web. Как же создаются и как работают активные серверы Web? Мы рассмотрим два варианта. Первый них предполагает применение специальных программных расширений сервера Web, таких, как CGI и ISAPI. Второй связан с использованием серверных сценариев и технологии активных страниц Active Server Pages (ASP). Для того чтобы сервер Web мог вести диалог с пользователем, был разработан механизм программных расширений сервера, основанный на применении так называемого стандартного шлюзового интерфейса Common Gateway Interface (CGI). Программы CGI пользуются этим интерфейсом для получения (через протокол HTTP) информации от пользователя, для ее обработки и отправки обратно в виде нового документа HTML, ссылки на существующий документ или на другой объект. При этом для ввода информации со стороны пользователя в документ HTML встраиваются формы, содержащие такие органы управления, как текстовые поля, списки, переключатели, кнопки и т. д. Обычно одна из кнопок предназначена для завершения ввода. Когда пользователь заполнит всю форму, он нажимает эту кнопку, и данные из полей формы передаются программе CGI. Обработав данные, программа CGI динамически формирует новый документ HTML с результатами обработки и отправляет его обратно пользователю. При необходимости программа CGI может обращаться к СУБД. Этот процесс проиллюстрирован на рис. 1-2. О программах ISAPI Вы узнаете из следующего раздела. Рис. 1-2. Формирование динамических документов HTML с помощью CGI и ISAPI Таким образом, программы CGI позволяют серверу Web вести активный диалог с пользователем. Что представляет собой программа CGI? Это обычное консольное приложение, работающее в среде операционной системы сервера Web и осуществляющее обмен данными через стандартные потоки ввода и вывода. Такое приложение загружается в оперативную память сервера и запускается только по явному запросу пользователя, когда к нему выполняется обращение из документа HTML. Окончив обработку запроса пользователя, программа CGI завершает свою работу и выгружается из памяти сервера. Программа CGI работает на сервере как отдельный процесс. В рамках этого процесса она способна, в частности, обращаться к базам данных для выборки или обновления информации. Вы можете писать программы CGI на любом языке программирования, допускающем создание исполняемых модулей. Часто их составляются с применением интерпретируемого языка Perl. Интерпретаторы Perl доступны на различных платформах. Однако программы CGI, приведенные в нашей книге, написаны на языке программирования C++, так как книга ориентирована на применение платформы Microsoft Windows. Если сервер Web создан на базе Microsoft Internet Information Server, вместо программ CGI Вы можете использовать приложения ISAPI, реализованные в виде библиотек динамической загрузки DLL. Приложения ISAPI условно делятся на расширения ISAPI и фильтры ISAPI. Расширения ISAPI выполняют те же функции, что и только что рассмотренные программы CGI. Однако есть и очень важные отличия. Самое главное из них заключается в том, что расширение ISAPI загружается в адресное пространство сервера Web, но не работает как отдельный процесс. Причем такая загрузка выполняется один раз, когда к расширению обращается первый пользователь. В дальнейшем расширение остается в оперативной памяти и может быть задействовано без повторной загрузки. Заметим, что сервер Microsoft Internet Information Server версии 4.0 позволяет загружать программы ISAPI в отдельное адресное пространство. Эта возможность, замедляющая работу сервера, обычно используется для отладки новых программ. Аварийное завершение программы ISAPI, загруженной в отдельное адресное пространство, как правило, не приводит к полной остановке сервера Web. В результате расширения ISAPI работают быстрее по сравнению с программами CGI, особенно когда сервер Web посещают много пользователей. Что же касается программ CGI, то для каждого пользователя приходится запускать отдельный процесс, а это отнимает немало времени. С другой стороны, приложения ISAPI приходится отлаживать намного тщательнее, чем программы CGI. Так как приложение ISAPI работает в адресном пространстве сервера Web, ошибка в приложении ISAPI способна вызвать аварийное завершение работы сервера Web. Ошибки в программе CGI обычно менее значимы, так как в худшем случае авария произойдет только в том процессе, в котором работает эта программа, а не в процессе сервера Web. Фильтры ISAPI, так же как и расширения ISAPI, реализованы в виде библиотек динамической загрузки DLL, однако они предназначены для другого. Фильтры ISAPI способны контролировать весь поток данных между браузером и сервером Web на уровне протокола HTTP. Благодаря этому их можно применять для решения таких задач, как динамическая перекодировка и шифрование данных, создание дополнительных процедур аутентификации пользователей, сбор статистической информации об использовании ресурсов сервера и т. д. Технология ASP предполагает интенсивное использование серверных сценариев и объектов COM для создания активных серверов Web. При ее применении на сервере Microsoft Internet Information Server располагаются текстовые файлы с расширением asp, содержащие операторы языка HTML, и сценарии, составленные на языках JScript или VB Script. Средствами технологии ASP можно легко создавать интерактивные страницы Web, не используя расширения CGI или ISAPI, что позволяет в ряде случаев полностью избежать или максимально сократить программирование на C++ или Perl. Активные страницы ASP выполняют обработку данных, введенных пользователями при помощи форм, обращаясь при необходимости к базам данных или другим активным объектам. Как работают серверные сценарии в страницах ASP? Когда пользователь обращается к странице ASP, сервер Web интерпретирует расположенный в ней сценарий. При этом анализируются параметры, переданные этой странице. Далее страница модифицируется (или создается заново), а затем отправляется обратно пользователю. Заметим, что пользователь не может каким-либо образом получить содержимое страницы ASP, так сервер Web отправляет ему не саму страницу, а результат ее интерпретации. Таким образом, логика работы страницы скрыта от пользователей. Серверный сценарий, встроенный в страницу ASP, способен обращаться к базам данных через вызов методов интерфейса ActiveX Data Objects (ADO) — простую и понятную процедуру. Если у Вас возникнет необходимость реализовать собственную бизнес-логику, Вы можете создать новые объекты COM или использовать объекты COM сторонних разработчиков. Наша книга главным образом посвящена активным страницам ASP, однако мы уделим некоторое внимание и созданию активных серверов при помощи расширений CGI и ISAPI. В нашей книге мы постоянно будем оперировать такими понятиями, как «приложения Web», «приложения для Интернета и интрасети». Теперь, когда Вы узнали об активных серверах Web, мы раскроем эти понятия. Однако вначале напомним, как работают обычные программы. Первые программы для мэйнфреймов работали в пакетном режиме. Им были доступны все ресурсы компьютера. Немного позже появились интерактивные системы, поддерживающие одновременное обращение к ресурсу компьютера многих пользователей при помощи неинтеллектуальных терминалов. Создатели таких систем учли, что программам придется работать в многозадачном и многопользовательском режиме. Если система содержала базу данных, то все интерактивные пользователи обращались к ней через терминалы с помощью специального программного обеспечения, работающего на мэйнфрейме. В рамках приложений Web на стороне клиента работает браузер, который по своим интеллектуальным возможностям далеко опережает алфавитно-цифровые или графические терминалы. Как видно из следующих разделов, браузер способен предварительно обрабатывать данные, отправляемые на сервер, а также обрабатывать и представлять результаты, полученные от сервера, в удобном для пользователя виде. В роли основного сервера для приложений Web выступает, как можно легко догадаться, сервер Web — разумеется, активный. Однако сервер Web выполняет только часть работы. Он отвечает за получение данных от пользователя и подготовку страниц, отправляемых обратно. Что же касается запросов к базе данных или обращений к другим активным объектам, реализующим бизнес-логику, то для решения этих задач сервер Web обращается к серверам базы данных или другим серверам приложений. Обращения выполняются либо средствами ASP, либо при помощи расширений CGI или ISAPI. Мы будем называть приложениями Web набор страниц ASP, HTML, DHTML, объектов COM, клиентских и серверных элементов управления ActiveX, клиентских и серверных сценариев, а также аплетов Java, расположенных на одном или нескольких серверах Web и предназначенных для работы в рамках одного приложения. При этом активные компоненты приложений Web могут обращаться к серверам баз данных или другим прикладным серверам для выполнения тех ли иных запросов. Подмножество приложений Web, созданных с применением технологии активных серверных страниц ASP, мы будем называть приложениями ASP. Более точное определение мы приведем в третьей главе нашей книги. Несмотря на кажущееся сходство приложений Web и программ, ориентированных на мэйнфреймы и терминалы, они относятся к разным типам, каждый из которых имеет свои особенности. И если во втором случае системой управляет администратор, а линии связи между терминалами пользователей и мэйнфреймом обладают высокой надежностью и достаточной пропускной способностью, то в случае приложений Web дело обстоит иначе. Разработчик приложения Web должен быть готов к тому, что линия связи может в любой момент оборваться, а пользователь после ее восстановления пожелает возобновить работу с того места, на котором случился обрыв. Пропускная способность и надежность каналов Интернета пока оставляет желать лучшего, поэтому необходимо минимизировать обмен данными между клиентом и сервером. На стороне клиента может оказаться любая операционная система и любой браузер, поэтому забота о совместимости — насущная необходимость. В Интернете много желающих получить несанкционированный доступ к популярным ресурсам и воспользоваться номерами чужих кредитных карточек, а значит, вопросы обеспечения безопасности становятся первоочередными. В большинстве случаев целесообразно разделять работу между клиентом и сервером, чтобы добиться оптимальной производительности в условиях низкоскоростных каналов Интернета и лимитированных ресурсов серверов Web. Так, предварительную обработку введенных данных, отправляемых серверу, имеет смысл выполнять на стороне клиента. Это позволит исключить, например, повторные передачи неправильно заполненных форм. Графическое представление результатов запроса также стоит выполнять на стороне клиента, что существенно сократит объем данных, передаваемых по сети. А вот выборку из базы данных должен выполнять сервер. Для реализации клиентской активности Вы можете применять сценарии JavaScript, VB Script, аплеты Java и элементы управления ActiveX. Клиентские сценарии JavaScript Язык сценариев JavaScript разработан фирмой Netscape Communication Corporation и первоначально назывался LiveScript. Заметим, что JavaScript не имеет никакого отношения к языку Java, созданному Sun Microsystems на базе языка Oak. Конструкции языка JavaScript встраиваются в страницы HTML и исполняются (интерпретируются) под управлением браузера при загрузке страниц, а также при совершении пользователем определенных действий над объектами, расположенными в этих страницах. В частности, сценарии JavaScript способны обрабатывать данные, введенные пользователями в полях форм, а также события, возникающие в процессе манипуляций пользователя с мышью, копировать в окно браузера другие страницы HTML или изменять содержимое уже загруженных страниц. Сценарии JavaScript широко применяются для создания различных визуальных эффектов, таких, например, как изменение внешнего вида элементов управления, над которыми установлен курсор мыши, анимация графических изображений, создание звуковых эффектов и т. д. Механизм локальной памяти Cookie позволяет сценариям JavaScript сохранять на компьютере локальную информацию, введенную пользователем. Например, в Cookie может храниться список товаров из Интернет-магазина, отобранных для покупки. Так как язык JavaScript разработан для применения непрофессиональными программистами, создание клиентских сценариев обычно не составляет особого труда. Однако для обеспечения совместимости с различными браузерами все же приходится учитывать многочисленные детали. Например, браузер Microsoft Internet Explorer реализует собственную версию JavaScript, называемую JScript. Кроме того, для выполнения многих функций клиентские сценарии обращаются к интерфейсу объектной модели браузера. Эта модель отличается для разных браузеров. Помимо JScript, браузер Microsoft Internet Explorer (и только он) способен работать с языком клиентских сценариев VB Script. Последний представляет собой подмножество Microsoft Visual Basic и функционально равноценен языку JavaScript. Так как многие пользователи сети Интернет не работают с браузером Microsoft Internet Explorer, применение VB Script для создания страниц серверов Web, расположенных в Интернете, едва ли можно считать оправданным. Ситуация меняется, если технологии Интернета применяются в корпоративной интрасети. Когда администратор может установить на компьютеры всех пользователей Microsoft Internet Explorer, а в штате компании есть программисты, имеющие большой опыт работы с Microsoft Visual Basic, то применение VB Script вместо JavaScript заметно сокращает сроки и стоимость разработки. Подмножество приложений Java, называемых аплетами Java, используют наряду с клиентскими сценариями для организации активности на стороне клиента. Вы можете применять аплеты Java для получения визуальных и звуковых эффектов, для организации ввода и предварительной обработки данных перед отправкой их на сервер, а также для представления полученных от сервера данных в графическом, табличном или каком-либо другом виде. Аплеты Java встраивают в страницы сервера Web, дабы они взаимодействовали с клиентскими сценариями, составленными на JavaScript или VB Script. В частности, сценарии способны вызывать методы аплета, передавать данные или принимать их от аплетов. Создание аплетов во многом упрощается благодаря наличию обширных библиотек классов Java. В этих библиотеках есть мощные и удобные средства для организации пользовательского интерфейса, работы с графическими изображениями, передачи данных по сети и др. Это позволяет больше внимания уделить логике работы аплета, а не реализации типовых задач программирования вроде организации динамических массивов или загрузки графических изображений. Аплеты выполняются под управлением браузера и не имеют никакого доступа к локальным ресурсам компьютера. Однако они способны взаимодействовать с расширениями сервера CGI и ISAPI, а также читать файлы с того сервера Web, с которого они были загружены. Это несколько увеличивает выигрыш от применения аплетов Java при создании приложений для Интернета. На рис. 1-3 показано, как аплеты Java используются на сервере Web издательства «Русская редакция».
Рис. 1-3. Использование аплетов Java В левой нижней части страницы находится аплет, в окне которого отображаются пиктограммы книг, подготовленных издательством. Изображение периодически обновляется. Если щелкнуть пиктограмму, то в правой части страницы появится подробное описание книги. Таким образом пользователь не будет тратить усилий на просмотр списка книг. Ему достаточно щелкнуть пиктограмму понравившейся книги, чтобы получить о ней полную информацию. Заметим, что, несмотря на идею независимости приложений Java от конкретной компьютерной платформы, на практике возможны случаи несовместимости. Это происходит из-за того, что на различных платформах интерпретатор Java реализуется по-разному. Поэтому пока, к сожалению, о полной переносимости приложений Java вообще и аплетов Java в частности говорить не приходится. Элементы управления ActiveX можно использовать как на стороне сервера, так и на стороне клиента. В последнем случае их применяют для решения тех же задач, что и аплеты Java. Дополнительно они предоставляют неограниченный доступ к ресурсам локального компьютера. Надо сказать, что возможность доступа элементов управления ActiveX к локальным ресурсам компьютера имеет не только преимущества, но и недостатки. Конечно, удобно, когда Ваш сервер Web сможет обрабатывать любую информацию, «добытую» из компьютера пользователя. Однако мы полагаем, что найдется очень мало людей, готовых предоставить неограниченный доступ к своим дискам. Для того чтобы убедить пользователей в том, что предлагаемый для загрузки элемент управления ActiveX безопасен, предлагается технология цифровых сертификатов. Следует, однако, учесть, что сама по себе эта технология не ограждает от проблем, связанных с наличием дыр в защите браузера. Многие просто предпочтут не рисковать и не станут загружать потенциально опасное программное обеспечение. Кроме того, чтобы получить цифровой сертификат и подписать свой элемент управления ActiveX, разработчик должен внести единовременный денежный взнос, а затем производить ежегодную плату. Заметим, что если Вы разрабатываете элементы управления ActiveX для сервера Web, то их можно не подписывать. Эти модули не загружаются клиентами, а выполняются непосредственно на сервере. Проблемы с реализацией клиентской активности Выбирая между серверной и клиентской активностью, Вам надо принять во внимание многие факторы. Прежде всего, при создании информационной системы в Интернете необходимо учесть ее разнородность. Если Вы, например, создаете в Интернете свой электронный магазин, то Вам, скорее всего, хочется, чтобы в него заглянуло как можно больше посетителей. Значит, стоит проявить особую заботу о совместимости своих решений с максимальным количеством компьютерных платформ. По возможности не обременяйте посетителей загрузкой разного рода клиентских программ, особенно больших. Если посетитель столкнется с необходимостью загрузить, например, приложение размером 2 Мб, весьма вероятно, что он решит поискать тот же товар в другом магазине. Следует также продумать выбор средств безопасности для защиты номеров кредитных карточек и другой подобной информации, передаваемой клиентом на Ваш сервер или на сервер банка, выполняющего операции со счетами пользователей. Ну и, конечно, не забудьте о дизайне страницы и удобстве работы пользователя. Позаботьтесь, чтобы покупатели быстро находили нужный им товар (или некую информацию), а страницы не выглядели отталкивающе и аляповато. С учетом сказанного выше Вам следует с осторожностью выбирать средства клиентской активности. Например, сценарии JavaScript составляйте таким образом, чтобы они исполнялись без ошибок всеми популярными браузерами. Применять эти сценарии следует лишь в самых необходимых случаях. Кроме того, обязательно учитывайте, что особенно осторожные пользователи могут запретить работу сценариев JavaScript, соответствующим образом настроив свой браузер. Что же касается клиентских сценариев VB Script, то мы не рекомендуем их применять. Создав с их помощью в сети Интернет электронный магазин, Вам заранее придется отказаться от посетителей, использующих, например, браузер Netscape Navigator. А таких весьма много. Аплеты Java тоже способны вызвать проблемы, связанные с совместимостью, а также с тем, что пользователи отключают их загрузку при настройке браузера. И уж, конечно, еще больше сложностей будет с самодельными органами управления ActiveX. Вы, естественно, можете средствами соответствующего модуля заставить их работать под управлением браузера Netscape Navigator, но Вам придется еще убедить пользователей в безопасности их загрузки. Поэтому мы рекомендуем создавать приложения для Интернета с использованием не клиентской, а серверной активности. Так Вам будет легче обеспечить совместимость с различными браузерами и компьютерными платформами. Что же касается корпоративных интрасетей, то здесь у Вас больше возможностей реализовать клиентскую активность, так как вопросы совместимости решаются централизованно. Интеграция серверов Web и SQL Server В нашей книге мы рассмотрим использование приложений Web с сервером Microsoft SQL Server, однако многое из сказанного можно применить и к другим серверам баз данных, вместе с которыми поставляются драйверы ODBC для операционной системы Microsoft Windows. Что же касается Microsoft SQL Server, то для него разработан целый набор интерфейсов и средств доступа. Мы расскажем, как использовать некоторые из них для интеграции SQL Server и сервера Web, выполненного на базе Microsoft Internet Information Server. Если Ваш сервер Web содержит информацию о каком-либо товаре, то его интеграция с базой данных позволит посетителям увидеть всю информацию о товаре. При этом содержимое страниц сервера Web будут автоматически отражать текущее состояние дел, учитывая, например, наличие товара на складе и возможность его заказа по предварительной заявке. На сервере Web издательства «Русская редакция» Вы сможете просмотреть список книг, хранящийся в базе данных и просмотреть детальное описание этих книг (рис. 1-4). Рис. 1-4. Список книг, полученный из базы данных Программный интерфейс DB Library Программный интерфейс DB Library представляет собой естественный интерфейс SQL Server, реализованный как набор функций. В документации Microsoft не рекомендует применять этот интерфейс, так как вместо него гораздо удобнее пользоваться другими, о которых мы расскажем далее. Фактически в новой версии SQL Server этот интерфейс оставлен только для совместимости с разработанными ранее приложениями. Программный интерфейс ODBC создан специально для доступа к реляционным базам данных. Это универсальный интерфейс, доступный не только в SQL Server, но и при работе с другими (в том числе нереляционными) базами данных. Предполагается, что разработчик базы данных предоставляет в распоряжение прикладных программистов драйвер ODBC, и все обращения к базе данных выполняются с использованием интерфейса ODBC, предоставляемого этим драйвером. Преимущества организации доступа к базам данных через унифицированный интерфейс ODBC очевидны — программы, обращающиеся к базам данных, становятся менее зависимыми от этих баз данных. Однако это только в теории. На практике отличия в реализации драйверов ODBC не всегда позволяют добиться полной независимости. Заметим, что программный интерфейс ODBC выполнен как набор функций. Поэтому он непосредственно доступен только из программ, составленных на традиционных языках программирования, таких, как С++. Следовательно, этот интерфейс можно использовать при взаимодействии сервера Web с базами данных только через расширения CGI и ISAPI. Технология ASP не позволяет обращаться непосредственно к интерфейсу ODBC, так как серверные сценарии способны вызывать интерфейсы объектов COM только посредством механизма автоматизации (известным ранее как OLE Automation). Объектный интерфейс Remote Data Object Современные технологии Microsoft в области Интернета основаны не на программных интерфейсах — Win32 или ODBC, а на объектных интерфейсах, доступных в модели компонентных объектов COM. Упрощенно такую модель можно представить в виде набора интерфейсов, реализующих методы и свойства. Проведя аналогию между моделью компонентных объектов COM и обычными классами языка программирования C++, можно сказать, что методы соответствуют функциям — членам класса, а свойства — переменным, определенным в классе. На самом деле свойства в модели компонентных объектов COM тоже реализуются через функции, однако суть дела от этого не меняется. Свойства используются преимущественно для хранения данных, а методы — для выполнения операций над данными или другими объектами. Подробнее обо всем этом мы расскажем в главе, посвященной разработке и использованию элементов управления ActiveX. Теперь вернемся к интерфейсам SQL Server. Специально для упрощения доступа к SQL Server из приложений Microsoft Visual Basic и Visual Basic for Applications разработан объектный интерфейс Remote Data Object (RDO). Он реализует все основные возможности интерфейса ODBC, но не применяется при разработке приложений Web. Мы его упомянули для полноты изложения. Другой объектный интерфейс, разработанный для предоставления доступа к базам данных, называется OLE DB. Фактически OLE DB представляет собой открытый стандарт, предназначенный для организации универсального доступа к базам данных. Причем здесь имеются в виду не только реляционные БД, но и нереляционные, такие, как серверы почты, базы данных на мэйнфреймах с методами доступа IMS, VSAM и т. д. Компоненты OLE DB состоит из трех элементов: провайдера (provider), потребителя (consumer) и служебного элемента, выполняющего обработку и передачу данных. В роли потребителя могут выступать приложения, составленные на языке программирования C++, или объекты ADO, о которых мы расскажем позже. Такие приложения получают доступ к базам данных посредством объектного интерфейса OLE DB. Задача провайдера OLE DB — реализовать интерфейс OLE DB. В составе OLE DB поставляются провайдеры для интерфейсов ODBC, для текстовых файлов и некоторые другие. Пользуясь провайдером ODBC, потребители интерфейса OLE DB могут получить доступ к базам данных через драйвер ODBC. Объектный интерфейс OLE DB не реализует механизм автоматизации. Поэтому Вы сумеете задействовать OLE DB только в расширениях CGI и ISAPI сервера Web, но не в страницах ASP (строго говоря, к объектам OLE DB можно обращаться через интерфейс ADO, о котором мы расскажем ниже). Тем не менее, интерфейс OLE DB иногда удобнее интерфейса ODBC, особенно в тех случаях, когда сервер Web должен обращаться к нереляционным базам данных. Он рекомендуется как средство для создания системных утилит, работающих с базами данных, а также для создания инструментов для разработки приложений. Объектный интерфейс ActiveX Data Objects Объектный интерфейс ActiveX Data Objects (ADO) построен на основе интерфейса OLE DB. Модель ADO представляет собой набор объектов и значительно упрощает разработку приложений с базами данных, так как позволяет использовать высокоуровневые средства разработки и серверные сценарии. Это возможно, в частности, потому, что объекты ADO реализуют средства автоматизации. В результате интерфейс ADO доступен из приложений, составленных с применением целого спектра инструментальных средств, таких, как ASP, C++, Visual Basic, Visual Basic for Applications, Java и т. д. Для нас сейчас важнее всего то, что интерфейс ADO доступен из серверных сценариев, размещенных в страницах ASP на сервере Microsoft Internet Information Server. Это позволяет организовать очень простой и наглядный интерфейс приложения Web с базой данных, исключающий необходимость программирования на таких сложных языках, как C++. Разумеется, объекты ADO доступны и из программных расширений сервера Web типа программ CGI и приложений ISAPI, однако нас будет интересовать в первую очередь именно связь страниц ASP с базами данных через объекты ADO. Параллельно увеличению влияния Интернета на все сферы человеческой деятельности появилась и быстро развивается электронная коммерция. В Интернете открываются все новые и новые электронные магазины, благодаря которым Вы можете покупать товары в разных странах мира, не вставая из-за своего рабочего стола. Наша книга, как мы надеемся, поможет Вам в вашей практической деятельности, поэтому мы рассмотрим вопросы создания отдельных элементов такого магазина. Предположим, он торгует книгами (а на что еще, спросите Вы, хватит фантазии авторов книг?), но Вы, конечно, вправе разместить в нем любой другой товар. В качестве примера мы приведем список книг, расположенный в одном из сущесвующих и реально работающих Интернет-магазинов (рис. 1-5). Рис. 1-5. Выбор книг в Интернет-магазине Здесь после регистрации в качестве покупателя Вы можете просмотреть список книг и другого товара. Щелкнув название книги, Вы увидите ее подробное описание. С помощью ссылки купить книга может быть добавлена в Вашу персональную корзину покупателя. На рис. 1-6 мы показали содержимое корзины после добавления в нее одной книги.
Рис. 1-6. Просмотр содержимого корзины покупателя Здесь Вы можете отредактировать заказ, изменив количество заказанных экземпляров книг, или удалить книгу из корзины, щелкнув крестик в столбце Удалить напротив названия книги. При создании собственного электронного магазина Вам надо решить множество вопросов. Вот некоторые из них: · необходимо организовать базу данных, содержащую сведения о товаре, поставщиках, клиентах, сотрудниках, доставляющих товар покупателям, бухгалтерскую информацию, сведения о платежах и т. д.; · часть этой базы данных, содержащая сведения о товаре, должна быть доступна всем покупателям в Интернете, причем покупателям надо предоставить возможность не только ознакомится со всеми достоинствами товара, но и “положить” купленное в специальную электронную корзину; · следует тщательно продумать вопрос оплаты товара покупателями — кредитными карточками, через банк или наличными деньгами по получении товара ; · процесс обработки кредитных карточек должен выполняться в безопасном режиме, исключающем возможность похищения важной информации третьими лицами; · необходимо продумать вопросы администрирования магазина через Интернет при помощи специально разработанного для этой цели приложения Web; · административное приложение должно позволять редактировать базу данных и составлять подробные отчеты о клиентах, товарах, поставщиках, продажах, а также собирать необходимую статистическую информацию. Много проблем вызовет обработка номеров кредитных карточек. Как правило, если Вы создаете Интернет-магазин с оплатой товара посредством кредитных карточек, Вам нужно заключить договор с компанией, выполняющей обработку (процессинг) таких карточек через Интернет. К сожалению, на момент написания этой книги мы не слышали ни об одной подобном процессинговом центре в России. Однако Вы можете заключить договор на обработку кредитных карточек и с зарубежными компаниями. После этого Вы полностью уясните себе технические детали процесса обработки. Например, это может выглядеть так. Вы получаете в процессинговом центре библиотеку динамической компоновки DLL или элемент управления ActiveX и размещаете его на сервере Web Вашего магазина. Кроме того, Вам выделяется страница на сервере Web процессингового центра, выполняющая обработку номеров кредитных карточек с использованием защищенного соединения. Когда пользователь собирается оплатить товар, Ваш сервер Web направляет его на страницу процессингового центра. Там покупатель вводит тип кредитной карточки и ее номер, а также срок действия карточки. Эта информация передается в безопасном режиме, причем защита обеспечивается средствами сервера процессингового центра, а не средствами Вашего сервера Web. Таким образом, за сохранность конфиденциальной информации отвечаете не Вы, а процессинговый центр. На следующем этапе процессинговый центр связывается с сервером соответствующего банка и снимает деньги со счета клиента (эта связь обычно осуществляется не через Интернет, а через специальные выделенные каналы связи, защищенные от несанкционированного доступа). Номер транзакции и результат ее выполнения заблаговременно отправляется на Ваш сервер Web, причем сведения о транзакции не известны клиенту. Когда клиент опять обратится на Ваш сервер, Вы можете показать ему динамически сформированную страницу с информацией о результате выполнения транзакции. Эта схема, с одной стороны, избавляет Вас от необходимости создавать защищенное соединение между посетителем Интернет-магазина и вашим сервером Web (перекладывая все эти проблемы на процессинговый центр), а с другой защищает интересы посетителей магазина, так как номера кредитных карточек не становятся известны администратора сервера Web вашего магазина. Пользуясь номером транзакции, Ваши сотрудники всегда смогут проследить прохождение платежа, взаимодействуя с процессинговым центром. Это иногда требуется для разрешения всякого рода конфликтных ситуаций. Описанная выше процедура обработки кредитных карточек проиллюстрирована на рис. 1-7. Рис. 1-7. Обработка кредитных карточек при покупке товара в Интернет-магазине Еще одна проблема, с которой Вы столкнетесь, Такова: номера кредитных карточек иногда воруют. Время от времени процессинговый центр будет Вам присылать списки украденных номеров кредиток, с помощью которых были сделаны покупки в Вашем магазине. Это — чистый убыток. Поэтому, открывая электронный магазин в Интернете, будьте готовы, что какую-то часть товара попросту украдут. Практика показывает, что доля покупок, сделанных по украденным номерам кредиток, составляет несколько процентов. Помимо сказанного выше, Вам придется продумать способ получения и доставки товара, однако эти (и многие другие) вопросы коммерции не связаны с тематикой настоящей книги. Как видите, создание полноценного электронного магазина в Интернете представляет собой достаточно сложную задачу. Наша книга не ставит перед собой цель решить ее, однако мы рассмотрим вопросы, связанные с организацией пользовательского интерфейса, интерфейса с базой данных, интерфейса с платежной системой банка, обрабатывающего кредитные карточки, и другие технические вопросы, без которых не обойтись при создании своего магазина. В качестве технической базы электронного магазина мы будем использовать SQL Server 7.0 и Microsoft Internet Information Server 4.0, работающие в среде Microsoft Windows NT Server 4.0. На рабочем месте администратора и сотрудников магазина, как мы считаем, установлен браузер Microsoft Internet Explorer 5.0. Что же касается рабочих мест покупателя, то мы постараемся обеспечить максимально возможную совместимость с различными компьютерными платформами. Установка программ и подготовка к работе Прежде чем далее работать с нашей книгой, Вам придется установить и настроить программное обеспечение. Мы остановимся только на основных моментах, поэтому, возможно, Вам придется обратиться к соответствующим разделам документации, поставляемой вместе с программами, или к дополнительной литературе. Далее мы будем считать, что все программные средства установлены на один компьютер, хотя Вы, конечно, можете выбрать для серверов Web и SQL Server отдельные компьютеры. Это благоприятно скажется на общей производительности Вашего приложения, хотя потребует дополнительных затрат. Прежде всего, на более или менее мощный компьютер с 128 Мб оперативной памяти и 10 Гб дисковой памяти установите операционную систему Microsoft Windows NT Server 4.0. Далее если Вы собираетесь пользоваться в своих разработках кириллицей, откройте папку Control Panel и с помощью аплета Regional Settings выберите Russian. Пометьте переключатель Set as system default locale. Только после выполнения этой процедуры установите пакет обновления Service Pack для Windows NT версии 6.0 или более новой версии. Важно отметить, что, если в процессе работы Вам пришлось менять конфигурацию операционной системы, Вам придется выполнить повторную установку пакета обновления Service Pack для Windows NT. Далее обновите браузер Microsoft Internet Explorer до версии 5.0. Вы можете рассматривать эту операцию как второй этап установки пакета обновлений. Фактически без этого Вы не сможете полноценно работать со средствами разработки приложений, созданных Microsoft и справочной библиотекой MSDN Library. Для тестирования совместимости страниц HTML и клиентских сценариев стоит установить еще несколько браузеров и прежде всего браузер Netscape Navigator (он доступен по адресу http://www.netscape.com). Устанавливая другие браузеры, оставьте приоритет за Microsoft Internet Explorer — по умолчанию именно он должен открывать файлы с расширением имени htm и html. SQL Server Хотя по умолчанию мы считаем, что Вы пользуетесь Microsoft SQL Server версии 7.0, большинство приведенных в нашей книге примеров (но не все) работают и с версией 6.5. Вы можете устанавливать SQL Server как обычно, пользуясь руководством по установке или одной из книг, упомянутых в списке литературы. Главное — не забудьте выбрать правильный тип сортировки и установить самые свежие пакеты обновления Service Pack для SQL Server. На момент написания этой книги для SQL Server 6.5 был доступен пакет обновления Service Pack 5a, а для SQL Server 7.0 — пакет обновления Service Pack 1. Для работы с книгой Вам потребуется сервер Web на базе Microsoft Internet Information Server IIS 4.0. Он поставляется в составе Microsoft Windows NT 4.0 Option Pack. Устанавливая Option Pack, не забудьте установить расширение FrontPage Extensions, а также средства взаимодействия с Microsoft InterDev. Последнее потребуется для отладки серверных сценариев, расположенных в страницах ASP. Если Вы будете устанавливать Microsoft Windows NT 4.0 Option Pack после пакета обновления Service Pack 4.0-6.0 для Windows NT, то получите предупреждающее сообщение о том, что Option Pack не тестировался с пакетом обновлений данной версии. Вы можете проигнорировать это сообщение, однако по завершении установки Option Pack обязательно повторите установку Service Pack 6.0 для Windows NT. Microsoft Developer Studio Практически все примеры в этой книге подготовлены с использованием Microsoft Developer Studio 6.0. Устанавливая Microsoft Developer Studio, не забудьте выбрать такие его компоненты, как Microsoft InterDev и Microsoft Visual C++ (если Вы собираетесь создавать собственные элементы управления ActiveX или расширения сервера Web в виде программ CGI или ISAPI). Для разработки аплетов Java Вам пригодится Microsoft Visual J++. После установки Microsoft Developer Studio обязательно установите для этой системы пакет обновлений Service Pack 3.0 или более новой версии. Без этого, в частности, не будут транслироваться программы, подготовленные с применением стандартной библиотеки шаблонов STL. В процессе установки Microsoft Developer Studio Вам будет предложено установить справочную систему MSDN Library. Устаревшая версия этот системы поставляется в комплекте с Microsoft Developer Studio 6.0, однако мы рекомендуем Вам оформить подписку в Microsoft на ежеквартальное получение MSDN Library. Если у Вас есть новая версия MSDN Library, используйте ее вместо старой версии. Не поленитесь скопировать все необходимые Вам разделы MSDN Library на жесткий диск. Несмотря на то, что полная установка этой грандиозной библиотеки документации и примеров потребует свыше 1 Гб памяти, имеет смысл все же переписать ее на жесткий диск компьютера, а не запускать с компакт-дисков. Это позволит сэкономить немало времени, потому что в процессе разработки приложений Вы будете постоянно обращаться к различным разделам MSDN Library. Microsoft FrontPage Мы не относим себя к тем разработчикам серверов Web, которые стремятся редактировать документы HTML исключительно примитивными текстовыми редакторами, украшая свои страницы надписями вроде “Powered by Notepad”. Когда Вам нужно быстро создать сервер Web, насыщенный большим количеством сложно структурированной информации и многочисленными ссылками, лучше применять современные мощные средства проектирования, к которым можно отнести систему Microsoft FrontPage. На наш взгляд, основным достоинством Microsoft FrontPage является наличие программы FrontPage Explorer. Она позволяет отслеживать ссылки при перемещении каталогов и переименовании страниц и других файлов и умеет выполнять комплексное тестирование серверов Web на отсутствие оборванных ссылок. Немаловажное значение имеет и возможность импорта в редактор FrontPage документов, подготовленных средствами самых разных программ, а также наличие встроенного сервера Personal Web Server, удобного для проектирования и тестирования. Тем не менее при установке и использовании Microsoft FrontPage необходимо учитывать ряд особенностей. Если Вы уже установили на своем компьютере Microsoft Internet Information Server IIS 4.0, то встроенный в Microsoft FrontPage сервер Web устанавливать не надо. Настройте Microsoft FrontPage таким образом, чтобы он взаимодействовал с сервером Microsoft Internet Information Server. К сожалению, редактор Microsoft FrontPage не всегда “понимает” клиентские и серверные сценарии, особенно если они содержат строки с тегами HTML. Для разрешения этой проблемы клиентские сценарии JavaScript, например, можно вынести в отдельные файлы с расширением имени js, указав ссылки на эти файлы в документе HTML. Серверные сценарии ASP можно также выносить в отдельные файлы и включать их при помощи оператора #include. Однако наилучший редактор сценариев, на наш взгляд, — это редактор, встроенный в Microsoft InterDev. Он, в частности, отображает строки сценария и конструкции HTML с использованием цветового выделения. Таким образом значительно повышается читаемость сложных сценариев. |