Logo Море(!) аналитической информации!
IT-консалтинг Software Engineering Программирование СУБД Безопасность Internet Сети Операционные системы Hardware
Скидка до 20% на услуги дата-центра. Аренда серверной стойки. Colocation от 1U!

Миграция в облако #SotelCloud. Виртуальный сервер в облаке. Выбрать конфигурацию на сайте!

Виртуальная АТС для вашего бизнеса. Приветственные бонусы для новых клиентов!

Виртуальные VPS серверы в РФ и ЕС

Dedicated серверы в РФ и ЕС

По промокоду CITFORUM скидка 30% на заказ VPS\VDS

VPS/VDS серверы. 30 локаций на выбор

Серверы VPS/VDS с большим диском

Хорошие условия для реселлеров

4VPS.SU - VPS в 17-ти странах

2Gbit/s безлимит

Современное железо!

4.2. Взаимодействие Internet/Intranet-приложений с СУБД

С появлением технологии баз данных было накоплено больше информации, чем за всю предыдущую историю. Однако, доступ пользователя к базам данных ограничен по целому ряду причин:

  • для получения информации необходим физический доступ к соответствующей СУБД;
  • пользователь должен быть в курсе модели данных, знать схему базы данных;
  • требуется умение пользоваться языком запросов к БД.

Каковы возможности взаимодействия Web-приложений и СУБД? С одной стороны, технологии Internet/Intranet имеют удобный язык разработки распределенных гипертекстовых документов, включая простые, удобные, развитые и унифицированные интерфейсы для доступа к информации. С другой стороны - наличие большого количества ценных баз данных, управляемых разнородными СУБД, а также стремление увеличить доступность данных для корпоративных пользователей. Возникает естественное желание скрестить эти две технологии и обеспечить доступ к базам данных в интерфейсе Web. Еще два года назад существовали только идеи такого скрещивания и не очень тщательно разработанные подходы к реализации. На сегодня имеется два класса механизмов такого взаимодействия: 1) обеспечивающие доступ к БД (по запросу клиента) на стороне Web-сервера; 2) работающие непосредственно на стороне клиента.

Доступ к базе данных на стороне сервера

Механизм доступа к БД на стороне сервера реализуется за счет наличия стандартизованных средств:

  • поддержки диалоговых форм на уровне гипертекстового документа (язык HTML);
  • возможности запуска серверных программ, взаимодействие которых происходит через стандартный интерфейс CGI или прикладные интерфейсы Web-сервера.

При реализации на основе CGI общая схема реализации доступа к базе данных на стороне Web-сервера выглядит следующим образом:

  • при просмотре документа пользователь встречает ссылку на страницу, содержащую одну или несколько форм, предназначенных для запроса данных из базы данных;
  • пользователь запрашивает эту страницу, помимо незаполненных форм страница может содержать общую информацию о базе данных и о назначении предлагаемых форм;
  • если пользователя интересует информация из БД, которую можно получить на основе предложенных форм, то он заполняет одну из форм и отправляет заполненную форму на сервер;
  • получив заполненную форму, сервер запускает соответствующую внешнюю программу, передавая ей параметры и получая результаты на основе протокола CGI;
  • внешняя программа преобразует запрос, выраженный с помощью заполненной формы, в запрос на языке, понятном серверу баз данных (обычно это язык SQL).

При использовании CGI вся интерпретация пользовательского запроса производится серверной программой. Она может быть предельно жесткой, ориентированной на выполнение запроса к фиксированной таблице фиксированной базы данных, или относительно гибкой, способной выполнить произвольный запрос к одной или нескольким таблицам базы данных, идентифицируемой в параметрах клиента.

API - это, фактически, дешевый, но небезопасный способ выполнить в адресном пространстве сервера WWW программу, которая соответствует спецификациям на языке HTML. Такая программа должна быть заранее подготовлена и включена в библиотеку, из которой сервер может производить динамическую загрузку (DLL-модули в Windows или разделяемая библиотека sharedlibrary в Unix).

Доступ к базе данных на стороне клиента

Видимо, наиболее мощные средства обеспечения доступа к базам данных на стороне Web-клиента обеспечивает язык Java. Java - это объектно-ориентированный язык программирования, являющийся, по сути дела, "безопасным" подмножеством языка С++. В частности, Java не содержит средств адресной арифметики, не поддерживает механизм множественного наследования и т.д. Поэтому утверждается, что корректность Java-программы можно проверить до ее реального выполнения (это абсолютно недоказанное утверждение). Различают:

  • язык Java как таковой, для которого существуют компиляторы в так называемый "мобильный код" (машинно-независимый код, который может интерпретироваться или из которого могут генерироваться машинные коды на разных платформах);
  • язык JavaScript, который обычно используется для расширения возможностей языка HTML за счет добавления процедурной составляющей;
  • и программный продукт HotJava, являющийся, по сути, интерпретатором мобильных кодов Java.

Для обеспечения доступа к базам данных на стороне Web-клиента наиболее существенно наличие языка Java. Технология разработки HTML-документа позволяет написать произвольное количество дополнительных Java-программ, откомпилировать их в мобильные коды и поставить ссылки на соответствующие коды в теле HTML-документа. Такие дополнительные Java-программы называются апплетами (Java-applets). Получив доступ к документу, содержащему ссылки на апплеты, клиентская программа просмотра запрашивает у Web-сервера все мобильные коды. Коды могут начать выполняться сразу после размещения в компьютере клиента или быть активизированы с помощью специальных команд.

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

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

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

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

На самом деле и при применении первого подхода, и при использовании второго остается нерешенной одна организационно-производственная проблема: кто должен проектировать, писать, отлаживать и сопровождать процедурный код? Web-мастера, производящие HTML-документы, обычно считают себя, скорее, дизайнерами нежели программистами. А здесь требуется чисто программистская работа.

4.2.1. Использование интерфейса CGI для связи с СУБД

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

Программы, поддерживающие спецификацию CGI, можно писать на различных языках программирования, в том числе С, С++ и PERL. Они могут обращаться к реляционным БД, считывать и выводить данные, собирать информацию с других компьютеров и исполнять многие другие функции. Множество CGI-программ самого различного назначения бесплатно распространяются по Internet. По мнению аналитиков, принципиальные ограничения на функциональные возможности CGI-совместимых продуктов отсутствуют. Эти программы могут взаимодействовать практически с любой реляционной базой данных и Web-сервером. Однако CGI-продукты имеют один существенный недостаток: не поддерживают непрерывную связь между БД и Web-сервером. Они подключаются к базе данных, исполняют запрос пользователя Web-страницы, а затем отключаются от БД. При следующем запросе весь процесс подключения к БД повторяется.

На сленге Web-мастеров любая внешняя программа, запускаемая Web-сервером в соответствии со спецификациями CGI, называется CGI-скриптом. CGI-скрипт может быть написан на языке программирования (С, С++, Паскаль и т.д.) или на командном языке (языки семейства shell, perl и т. д.). CGI-скрипт, выполняющий роль посредника между Web-сервером и другими видами серверов (например, сервером баз данных), называется шлюзом (видимо, более правильно было бы использовать термин CGI-шлюз). Наличие CGI-скриптов на стороне Web-сервера позволяет, в частности, перенести часть логики приложения из клиента на сервер. CGI-шлюзы представляют собой средство для организации трехзвенной (в общем случае, многозвенной) архитектуры клиент-сервер.

В спецификациях CGI предусмотрены четыре способа взаимодействия Web-сервера и CGI-скрипта (по крайней мере, в среде ОС Unix). Первый способ состоит в использовании создаваемых сервером переменных окружения, через которые передается как общая информация, независящая от функциональных особенностей CGI-скрипта (например, имя и версия Web-сервера), так и специфические данные, определяющие поведение CGI-скрипта (скажем набор значений, введенных в форму на стороне клиента). Второй способ заключается в формировании параметров argc и argv, которые передаются функции mainCGI-скрипта (как если бы CGI-скрипт вызывался командной строкой в интерактивном режиме). Этот способ применяется для реализации ограниченного класса запросов ISINDEX. Наконец, входные параметры могут передаваться CGI-скрипту через файл стандартного ввода, а CGI-скрипт может передавать Web-серверу результирующие данные через файл стандартного вывода.

Достоинства и недостатки спецификации CGI

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

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

На сегодняшний день имеется множество продуктов, которые дают возможность пользователям создавать собственные программы в стандарте CGI (на языках С, С++ или PERL). Они по-разному решают проблемы CGI и реализуют достоинства этой спецификации. Вот несколько примеров.

  • Bluestone предлагает среду для разработки CGI-приложений Sapphire/Web. Проблема преждевременного отключения от базы данных решена в этом продукте за счет автоматической поддержки связи с БД в течение заданного времени. Если пользователь обращается к Web-узлу и передает запрос БД, которая используется большинством приложений, не требующих регистрации в базе данных, то шлюзовое ПО автоматически использует уже установленную связь.
  • IBM разработала продукт Net. Data, который представляет собой исполнительный механизм CGI, интегрированный с динамически компонуемой библиотекой. В его состав входит также программа для управления подключениями (менеджер подключения), позволяющая задавать период времени, в течение которого поддерживается непрерывная связь с БД.
  • WebMate выпускает интегрированную среду для разработки приложений WebMate/Foundation. Этот продукт позволяет не только создавать программные коды в стандарте CGI (как и все другие аналогичные пакеты), но и дает возможность устанавливать права доступа к файлам баз данных (по чтению или по записи), предохраняя БД от внесения несанкционированных изменений.
  • Simware предлагает продукт Salvo - инструментальные средства разработки интерактивных Web-приложений, которые обеспечивают защиту данных за счет того, что источник информации остается "невидимым" пользователю. Продукт позволяет также собирать данные, поступающие от различных приложений и БД.
  • Intersolv выпускает набор драйверов для стандарта ODBC, который обеспечивает доступ к БД Oracle; программу для подключения к серверу базы данных и шлюз между стандартами JDBC и ODBC. Продукты позволяют программистам создавать Web-страницы на языке Java и использовать их для доступа к БД. Аналогичные средства выпускает компания VisigenicSoftware.

4.2.2. ISAPI и NSAPI

Ведущие поставщики, такие как Netscape, BorlandInternational, Microsoft и Sun, устраняют недостатки, присущие спецификации CGI, используя вместо нее собственные API-интерфейсы. Netscape предлагает NetscapeServerAPI, компания Microsoft разрабатывает технологию ActiveX и интерфейсы InternetServerAPI (ISAPI), которые взаимодействуют с совместимыми OLE-серверами для выполнения распределенных вычислений. Sun занимается созданием интерфейса JDBC, который позволит устанавливать непосредственную связь между Web-страницами, написанными на языке Java, и базой данных. Некоторые API-интерфейсы из набора JDBC уже предлагаются пользователям, но большая их часть находится в стадии разработки.

Microsoft выпустила Web-сервер InternetInformationServer (IIS), поддерживающий ISAPI, который входит в состав WindowsNT и тесно интегрирован с СУБД SQLServer. Запрос передается серверу IIS, который использует ISAPI для извлечения данных из БД и передачи их пользователю в формате HTML. Представители Microsoft считают, что такое решение намного проще в использовании, чем CGI, и работает на порядок быстрее.

Oracle предлагает ПО WebServer, который также использует API-интерфейсы Oracle. С его помощью можно разрабатывать приложения на языках PL/SQL, C и C++, которые исполняют запросы к базе данных, написанные на языке PL/SQL. В дальнейшем компания намерена дополнить WebServer поддержкой спецификаций JDBC.

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

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

Два ведущих производителя Web-серверов, Netscape и Microsoft, опубликовали свои собственные патентованные схемы расширения Web-сервера, основанные на DLL. Интерфейс NSAPI компании Netscape работает на платформе Unix, которая поддерживает совместно используемые объекты. Интерфейс ISAPI корпорации Microsoft не будет работать в Unix, поскольку сервер IIS этой же корпорации запускается только на системе WindowsNTServer.

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

ISAPI может следующее:

  • запросить дополнительную информацию по имени при помощи вызова GetServerVariable;
  • считать информацию из тела HTTP- запроса Web-клиента при помощи вызова ReadClient;
  • послать информацию HTTP-клиенту при помощи вызова WriteClient;
  • возвратить серверу информацию о расположении, переадресации и состоянии процесса при помощи вызова ServerSupportFunction.

Дополнительную информацию по ISAPI вы можете найти в IISSDK корпорации Microsoft по адресу: http://www.microsoft.com/intdev/.

Дать резюме для NSAPI нелегко. Будучи аналогичным ISAPI, интерфейс NSAPI все же является более сложным и теснее привязан к конфигурации сервера, хотя и более гибок. Конфигурация каждой функции NSAPI должна быть задана в объектной базе данных конфигурации Netsite. Блоки параметров NSAPI базируются на парах name-value, что во многом аналогично переменным Web-форм. Дополнительную информацию по NSAPI можно найти по адресу: http://www.netscape.com/newsref/std/server_api.html.

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

4.2.3. Доступ к БД через интерфейс JDBC

Апплеты Java не позволяют напрямую связываться с базами данных. Для разработчиков, использующих язык Java в среде клиент/сервер, разработан прикладной программный интерфейс APIJDBC, обеспечивающий доступ к базам данных из языка Java.

Спецификация JDBC представляет собой прикладной программный интерфейс и разработана в подразделении JavaSoft корпорации Sun. Стандарт пока еще не утвержден. JDBC базируется на интерфейсе уровня вызовов X/OpenSQLCLI - основе ODBC. Прикладной программный интерфейс JDBC реализуется поверх других SQL-API, включая ODBC. Это означает, что все базы данных, допускающие работу с ODBC, будут взаимодействовать с JDBC без изменений.

JDBC использует двухуровневую архитектуру для связи апплетов и баз данных. Этот процесс прост - Internet- или Intranet-пользователи, использующие броузеры, подключаются к локальному или удаленному Web-серверу и загружают HTML-документ с включенным апплетом. Апплет выполняется на клиентской ЭВМ в среде броузера и устанавливает обратную связь с сервером базы данных. Механизм связи с базами данных является стандартным классом Java, поэтому средства безопасности, обеспечиваемые языком Java, поддерживают безопасную связь с базами данных.

Архитектура JDBC состоит из двух уровней: JDBCAPI, который обеспечивает связь между приложением и менеджером JDBC, и драйвер JDBCAPI, который поддерживает связь между JDBC менеджером и драйвером. Разработчики имеют возможность взаимодействовать напрямую с ODBC посредством моста JDBC-ODBC. Согласно JavaSoft, производительность при использовании моста не ухудшится.

При необходимости доступа к базе данных, апплет получает объект java.sql.Connection непосредственно из слоя управления JDBC и менеджера драйвера java.sql.DriverManager. Менеджер драйвера использует строку URL в качестве аргумента и уровень управления JDBC обнаруживает и загружает соответствующий драйвер для целевой базы данных, с которой пытается соединиться апплет. Менеджер драйвера выполняет это, опрашивая каждый драйвер, для выявления драйвера, который может соединиться с указанным адресом URL. Драйвер определяет, требует ли данный URL субпротокол, поддерживаемый драйвером. После этого драйвер подключается к удаленной базе данных, возвращая правильный объект java.sql.Connection, являющийся методом доступа апплета к сервисам базы данных.

Рис. 4.1. Механизм доступа JDBC к базам данных из Java-апплетов

JDBC не может выполнить свою работу без драйвера и уровень управления JDBC должен знать о размещении всех доступных драйверов баз данных. Существуют два способа, которыми JDBC может это выполнить. Первый способ - во время инициализации класс java.sql.DriverManager ищет свойства sql.drivers в системных свойствах. Если он существует, DriverManager класс загрузит его. Второй способ заключается в явном вызове определенного драйвера, тем самым отпадает необходимость в поиске.

4.2.4. Обзор средств Microsoft

MicrosoftSQLServerWebAssistant

В состав MicrosoftSQLServer 6.5 входит SQLWebAssistant - довольно простая в использовании утилита, не требующая знания HTML и серьезной практики работы с SQL. WebAssistant имеет интерфейс мастера (wizard), т.е. состоит из ряда последовательных форм с вопросами, отвечая на которые администратор может сэкономить время по выполнению рутинного HTML-кодирования и получить готовую (в HTML-кодах) страницу, содержащую результаты опубликования произвольного запроса к базе. Полученная страница не является активной в строгом смысле этого слова, так как публикуется при помощи push-метода, т.е. обновление происходит по инициативе сервера, и не допускает обновления со стороны клиента. Однако сервер может производить обновление (перегенерацию) страницы на триггерной основе или на основе расписаний задач под управлением SQLExecutive. Мастер работает только с базами данных MSSQLServer и использует три хранимых процедуры sp_makewebtask, sp_runwebtask и sp_dropwebtask. При необходимости они могут использоваться самостоятельно в кодах T-SQL.

Шлюз dbWeb для доступа к БД

MicrosoftdbWeb представляет собой шлюз между 32-битными ODBC-ресурсами, в качестве которых могут выступать, например, MicrosoftSQLServer, MicrosoftAccess, MicrosoftVisualFoxPro, Oracle и т.д., и Web-сервером MSIIS. Пакет dbWeb предусматривает создание схемы, содержащей описание данных и связанных с ними Web-страниц. Он поддерживает исполнение запросов в реальном режиме времени на основе "pull"-модели публикации, позволяя тем самым создавать активные Web-страницы.

MicrosoftdbWeb структурно состоит из двух основных компонент: dbWebService и dbWebAdministrator. Компонент dbWebService является типичным ISAPI-приложением, которое обрабатывает пользовательские запросы, направляемые посетителем страницы через броузер, и управляет соединениями между броузером, ODBC-ресурсом и IIS. К функциям dbWebAdministrator относится создание HTML-страниц, содержащих результаты выполнения запросов на основе уже упоминавшихся схем, с помощью которых осуществляется управление публикуемыми данными. Схемы определяют сам запрос и структуру страниц. При этом не требуется знания HTML или ISAPI, так как в состав dbWebAdministrator входит интерактивный мастер-построитель схем (SchemaWizard), который в традиционной для любой программы-мастера манере позволяет задать поля поиска по методу Query-by-Example (QBE), выбрать поля для отображения в таблице страницы результатов и определить переходы из списка записей в отдельные страницы, содержащие развернутую информацию по текущей записи. Настройкой соответствующих свойств можно разрешать или запрещать операции вставки, удаления и редактирования. Для проверки прав пользователя используется система безопасности той СУБД, к которой происходит доступ. dbWeb имеет в своем составе широкий спектр шаблонов страниц, которые при необходимости могут быть легко откорректированы и настроены разработчиком для более полного соответствия его задачам. Таким образом, dbWeb не является конечным пользовательским приложением. Скорее его можно охарактеризовать как достаточно легкий в использовании инструментарий разработки, который, как всякий мастер, не поддерживает языка программирования и оттого несколько проигрывает в функциональности SQLWebAssistant, несмотря на возможность инициируемого посетителем обновления информации в базе. Тем не менее, эта программа успешно справляется с автоматизацией большинства рутинных операций по организации соединений и публикации данных из БД и покрывает, по разным оценкам, порядка 40-60% потребностей бизнеса среднестатистической фирмы при организации доступа к своим источникам данных через Internet. dbWeb является свободно распространяемым приложением и может быть установлен с MicrosoftTechnet, WindowsNTResourceKit или непосредственно с http://www.microsoft.com.

Серверные расширения IDC и ASP

Microsoft предоставляет расширение для Web-сервера -InternetDatabaseConnector, программу на базе ISAPI, обеспечивающую доступ к MicrosoftAccess, MicrosoftSQLServer, Oracle, Sybase, Informix и другим ODBC-совместимым базам данных.

IDC является примером достаточно давно и успешно используемого ISAPI-приложения. Он входит в состав MSIIS. С помощью вызовов функций ODBCAPIIDC обеспечивает прямую связь между полями HTML-формы и соответствующим ODBC-достижимым источником данных, например, базой данных MSSQLServer, без необходимости написания замысловатых CGI-скриптов.

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

4.2.5. Динамическая публикация отчетов из БД

Помимо статической публикации отчетов из БД, в Intranet находит применение динамическая публикация отчетов из БД на основе запроса пользователя. Такой метод можно реализовать через CGI или с помощью специальных средств на основе API для Web-серверов. Ряд фирм предлагает такие средства, часто в них используются HTML-шаблоны для подстановки значений полей из записей БД. Примером средства динамической публикации может служить компонент InternetDatabaseConnector (IDC) для сервера MicrosoftIIS. IDC позволяет по SQL-запросу обращаться через интерфейс ODBC к настольным и реляционным СУБД. Рассмотрим подробнее процесс динамической публикации, обеспечиваемый IDC. На InternetInformationServer полный цикл работы IDC состоит из шести шагов, которые показаны ниже на схеме.

Шаг 1. InternetInformationServer принимает адрес URL.

Адрес URL посылается Web-броузером на InternetInformationServer.

Шаг 2. IIS загружает библиотеку Httpodbc.dll и передает ей адрес URL.

Библиотека Httpodbc.dll загружается и извлекает из полученного от IISURL-адреса имя IDC-файла (и другие элементы).

Шаг 3. Библиотека Httpodbc.dll читает IDC-файл.

IDC-файл содержит элементы в виде

field: value

Например, источник данных ODBC - Datasource: WebSQL,HTML-шаблон, в который будут размещены результаты SQL-запроса, - Template: sample.htx, имя пользователя, которое определяет, если это необходимо, имя для доступа к источнику данных ODBC - Username: sa,SQL-предложения, которые будут выполнены -

SQLStatement:
SELECTau_lname, ytd_sales
FROMpubs.dbo.titleview
WHEREytd_sales>5000

Шаг 4. Библиотека Httpodbc.dll соединяется с источником данных ODBC и выполняет SQL-предложения, находящиеся внутри IDC-файла.

Соединение с источником данных ODBC осуществляется библиотекой Httpodbc.dll, которая загружает ODBC-драйвер (в примере, указанном выше, - ODBC-драйвер для SQLServer) и соединяется с сервером, указанном в описании источника данных. В продолжении примера, при установлении связи, SQL-предложения из IDC-файла пересылаются ODBC-драйверу SQLServer, который перенаправляет их в SQLServer.

Шаг 5. Библиотека Httpodbc.dll выбирает данные из БД и отправляет их в HTX-файл.

После того, как SQL-предложения будут выполнены, Httpodbc.dll прочитывает HTX-файл, имя которого определено в IDC-файле. HTX-файл содержит специальные HTML-теги, которые Httpodbc.dll использует для определения, где и как разместить результирующие данные SQL-запроса.

Шаг 6. Библиотека Httpodbc.dll отправляет заполненный результирующий HTML-документ InternetInformationServer, который возвращает его клиенту.

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

Кроме построения приложений для генерации отчетов и для поиска по образцу, существует возможность создания на базе IDC диалоговых приложений регистрации данных. Более сложные приложения обработки транзакций IDC не поддерживает из-за невозможности обеспечить целостность сложных транзакций при отсутствии понятия сеанса для протокола HTTP. Новый продукт ActiveServerPage (ASP) позволяет строить более сложные серверные приложения с использованием VBScript и обеспечивает поддержку транзакций.

Рис. 4.2. Динамическая публикация БД с помощью IDC

Назад | Содержание | Вперед

 

Бесплатный конструктор сайтов и Landing Page

Хостинг с DDoS защитой от 2.5$ + Бесплатный SSL и Домен

SSD VPS в Нидерландах под различные задачи от 2.6$

✅ Дешевый VPS-хостинг на AMD EPYC: 1vCore, 3GB DDR4, 15GB NVMe всего за €3,50!

🔥 Anti-DDoS защита 12 Тбит/с!

VPS в 21 локации

От 104 рублей в месяц

Безлимитный трафик. Защита от ДДоС.

🔥 VPS до 5.7 ГГц под любые задачи с AntiDDoS в 7 локациях

💸 Гифткод CITFORUM (250р на баланс) и попробуйте уже сейчас!

🛒 Скидка 15% на первый платеж (в течение 24ч)

Новости мира IT:

Архив новостей

IT-консалтинг Software Engineering Программирование СУБД Безопасность Internet Сети Операционные системы Hardware

Информация для рекламодателей PR-акции, размещение рекламы — adv@citforum.ru,
тел. +7 495 7861149
Пресс-релизы — pr@citforum.ru
Обратная связь
Информация для авторов
Rambler's Top100 TopList liveinternet.ru: показано число просмотров за 24 часа, посетителей за 24 часа и за сегодня This Web server launched on February 24, 1997
Copyright © 1997-2000 CIT, © 2001-2019 CIT Forum
Внимание! Любой из материалов, опубликованных на этом сервере, не может быть воспроизведен в какой бы то ни было форме и какими бы то ни было средствами без письменного разрешения владельцев авторских прав. Подробнее...