SQL Server 2000

Доступ к Microsoft SQL Server 2000 из Internet

Разбить на страницы
Показывать лекцию целиком

Появление Microsoft SQL Server 2000 на платформе операционной системы Microsoft Windows 2000 упростило публикацию баз данных SQL Server в Internet. Сочетание Windows 2000 и Microsoft Internet Information Server (IIS) 5 образует обширный массив компонентов и интерфейсов, которые можно использовать для связи и взаимодействия с вашими базами данных SQL Server 2000. Эта лекция знакомит вас с базовыми концепциями доступа к Microsoft SQL Server из Internet с использованием разнообразных методов. Поскольку эта книга не является руководством по разработке, в данной лекции дается лишь обзор различных методов доступа. Выпущено много хороших книг, из которых вы можете получить информацию об особенностях программирования.

Эта лекция начинается с описания концепций программирования для Internet и используемых по умолчанию интерфейсов программирования для Internet, доступных в среде Microsoft Windows 2000. Вы ознакомитесь с основами ODBC-программирования и с ADO. Вы также ознакомитесь с ISAPI и ASP как средствами доступа к SQL Server. И, наконец, вы ознакомитесь с языком XML, узнаете, что это такое, и как его использовать. Эта лекция охватывает много тем, но она поможет вам понять работу базовых инструментов программирования для Internet.

Концепции программирования для Internet

В этом разделе вы ознакомитесь с основами подсоединения к SQL Server приложений, снабженных средствами Internet. Эти приложения содержат два различных интерфейса, причем необходимы оба интерфейса, поскольку они выполняют различные задачи: это интерфейс для пользователя и интерфейс для SQL Server. Данный раздел знакомит вас с возможностями соединения между приложением и SQL Server, и в нем рассматриваются методы соединения с помощью служб IIS и механизма ODBC.

Использование Windows 2000 и IIS 5 как платформы для Internet

Используя Windows 2000 IIS 5 как платформу для Internet-приложений, разработчики получают непревзойденные средства доступа к возможностям SQL Server. Разработчики могут использовать такие возможности, как сценарии выполняемые на сервере (server-side scripting) с интегрированным доступом к базам данных, источники данных открытого интерфейса доступа к базам данных, OLE DB (обширный набор интерфейсов модели компонентных объектов [COM] для универсального доступа к данным) и архитектура Web-приложений, известная под названием ISAPI (Internet Server API – интерфейс прикладного программирования Internet-сервера) (сильный "конкурент" традиционных приложений на основе общего шлюзового интерфейса CGI [Common Gateway Interface]).

Использование источников данных ODBC

ODBC, несомненно, является наиболее предпочтительным интерфейсом баз данных для платформы Microsoft Windows. Используя ODBC, разработчики могут получать доступ к широкому спектру разнородных источников данных, начиная с простых текстовых файлов, электронных таблиц Microsoft Excel и до баз данных Microsoft Access и SQL Server. ODBC обеспечивает общедоступный и при этом мощный уровень абстрагирования для программиста баз данных.

Разработка Internet-приложений с использованием SQL Server не является исключением. Источники данных ODBC являются главным средством доступа к базам данных SQL Server через Web-серверы. Они осуществляют это с помощью набора COM-объектов OLE DB, которые называют объектами данных ActiveX (ADO). ADO обеспечивает объектно-ориентированный интерфейсный доступ в источники данных ODBC, что является более простым методом, чем использование интерфейса API ODBC C. Используя ADO, разработчики могут реализовать простые объекты, представляющие соединения с базой данных, команды (такие как операторы SQL или хранимые процедуры) и наборы записей, аналогичные курсорам клиента и обладающие в значительной степени такими же функциональными возможностями, как курсоры баз данных сервера. Все эти объекты и интерфейсы баз данных делают Internet-разработку с помощью SQL Server почти тривиальной, обеспечивая при этом некоторые из более сильных возможностей, доступных в ODBC, такие как организация пула соединений (связного пула).

Наиболее важным аспектом Web-приложения на основе ODBC является надлежащее использование пула соединений. Организация пулов соединений позволяет приложению среднего звена поддерживать и использовать разделяемым образом соединения с базами данных SQL Server. Разделяемые (совместно используемые) соединения остаются открытыми в течение заданного периода времени и доступными для разделяемого использования пользователями. Установление соединений часто является операцией с интенсивным использованием ресурсов и может налагать большую дополнительную нагрузку на сервер базы данных. Поскольку Web-серверы и связанные с ними Internet-приложения обрабатывают большой объем трафика, то установление и, что еще более важно, – повторное установление соединений следует минимизировать с помощью пула соединений базы данных. Это позволит сократить время соединений для пользователей и снизит дополнительную нагрузку на ресурсы сервера баз данных. По умолчанию служба IIS 5 активизирует пул соединений с базами данных.

Примечание. При использовании источников данных ODBC и ADO вам следует использовать объекты соединений ADO на страничной основе. Создавая объекты соединений, только когда это требуется для страницы и освобождая их, когда они больше не нужны (в отличие от использования объекта для всего сеанса пользователя) соединение с базой данных можно возвращать в пул быстрее для использования другим соединением. Тем самым радикально снижается время ожидания соединения пользователями вашего Internet-приложения.

Выбор сетевой библиотеки

Хотя SQL Server поддерживает сетевые библиотеки, такие как named pipes (именованные каналы) и Banyan Vines, вам следует при развертывании базы данных SQL Server в Internet использовать в качестве сетевой библиотеки TCP/IP. TCP/IP обеспечивает гибкое использование сети и самую быструю возможность соединений при максимальной производительности среди всех сетевых библиотек в SQL Server. (О сетевых библиотеках см. лекцию 11.)

Используя в качестве сетевой библиотеки TCP/IP, вы ограничены использованием стандартного метода обеспечения безопасности как метода безопасности SQL Server. В этом методе для аутентификации используется учетная запись подключения (login-запись) SQL Server. Использование интегрированной системы безопасности, которая не поддерживается TCP/IP и в которой для аутентификации используются учетные записи Windows, обеспечивает более надежную защиту, и можно доказать, что эта система является наиболее эффективным средством поддержки централизованного управления учетными записями на предприятии. Однако по ряду причин использование интегрированной системы безопасности может приводить к снижению производительности*.

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

Во-вторых, соединения, базирующиеся на сетевой библиотеке named pipes (именованные каналы), наиболее часто используемой с интегрированной системой безопасности, обычно имеют низкую скорость. Кроме того, использование библиотеки named pipes создает проблемы для пулов соединений. Вы можете использовать пулы соединений в сочетании с named pipes путем использования учетной записи Anonymous как допустимого входа в SQL Server, но в большинстве реализаций для создания отдельных соединений с SQL Server используется аутентификация с запросом/подтверждением или базовая аутентификация. Это фактически сводит на нет любые улучшения производительности, которые могут быть получены с помощью пула соединений.

Если SQL Server инсталлируется на машине, отличной от Web-сервера, то использование интегрированной системы безопасности также ограничивает доступные возможности аутентификации. В этом случае нельзя использовать аутентификацию с запросом/подтверждением, и остаются только варианты базовой аутентификации и анонимной аутентификации. Анонимная аутентификация для системы, которая защищена каким-либо иным образом в Internet, обычно не рекомендуется, и, как уже отмечалось, использование базовой аутентификации ограничивает преимущества организации пула соединений.

Использование ISAPI для доступа к SQL Server

ISAPI – это набор вызовов функций, предназначенных для того, чтобы снабдить разработчиков Internet-приложений мощным методом расширения функциональных возможностей IIS. Приложения ISAPI показывают очень высокую производительность и позволяет осуществлять низкоуровневое управление. Фактически приложения ISAPI могут работать лучше других существующих Web-приложений для IIS. Кроме того, используя ISAPI, разработчик получает доступ ко всему массиву функций Win32 API.

Приложения ISAPI реализуются как динамически подключаемые библиотеки (DLL), которые поставляются в двух формах: расширения и фильтры. Поскольку библиотеки DLL – это обычно откомпилированные программные компоненты для данного типа машины, они выполняются намного быстрее, чем любая интерпретируемая программа или сценарий. Если высокая производительность и масштабируемость являются важными факторами вашего Internet-приложения (в ущерб простоте программирования и модифицирования), то расширение или фильтр ISAPI наиболее подходят для этой цели. В следующих двух разделах подробно описываются расширения и фильтры ISAPI, а в следующем за ними разделе рассматриваются ограничения программирования и использование приложений ISAPI.

Расширения ISAPI

Расширения ISAPI реализуются как библиотеки DLL и загружаются либо в пространство процесса IIS, либо в пространство отдельного процесса. У вас имеется этот выбор для каждого расширения ISAPI, которое вы индексируете на вашем Web-сервере. Если стабильность приложений является важным фактором, то расширения следует загружать в пространство отдельного процесса, чтобы ошибка расширения ISAPI не привела к аварийному отказу всего сервера (что возможно в случае экспериментальных или непроверенных расширений ISAPI).

Для обращения к расширению ISAPI используется виртуальный адрес .dll-файла в URL. Пример: http://www.mydomain.com/SampleISAPI.dll.

При таком способе обращения соответствующее расширение ISAPI загружается в память (если оно еще не загружено), и это расширение обрабатывает весь запрос, причем IIS действует просто как "посредник" для обмена данными с браузером клиента. Еще одним возможным применением этого подхода может быть реализация собственного (заказного) поискового механизма для сайта Internet.

Фильтры ISAPI

Фильтры ISAPI также реализуются как библиотеки DLL, но они загружаются в пространство процесса IIS, когда происходит запуск Web-сервера, и остаются в памяти, пока он не будет закрыт. Фильтры ISAPI можно сконфигурировать для получения любого количества уведомлений о событиях фильтра (filter event notifications), возникающих для каждого запроса протокола HTTP (протокола гипертекстовой передачи), который обрабатывается IIS, и для каждого HTTP-ответа, который генерируется IIS. При загрузке фильтра ISAPI он сообщает IIS (посредством специальной передаваемой структуры), о каких типах событий следует оповещать фильтр. При возникновении такого события уведомление об этом событии передается на каждый фильтр ISAPI, который зарегистрировал свою "заинтересованность" в этом событии.

Фильтры ISAPI являются довольно мощным средством и могут быть использованы для реализации сжатия или шифрования данных, нестандартной аутентификации, регистрации и анализа Web-трафика и даже сценарных механизмов на сервере (server-side scripting engines). Вы можете создать фильтр ISAPI, который просматривает каждый набор Web-страниц, который должен быть доставлен клиенту, ищет специальные теги разметки и действует в соответствии с этими инструкциями подобно тому, как это делает ASP-страница.

Способность проверки и модифицирования каждого входного и выходного потока данных делает фильтры ISAPI мощным и гибким средством. Однако слишком интенсивное использование фильтров ISAPI приводит к резкому снижению общей производительности и масштабируемости сайта. Например, при фильтрации каждой входной и выходной страницы это может стать слишком большой нагрузкой, чтобы с ней могла справляться система, поскольку это требует передачи большого объема дополнительной информации. Следует уделять огромное внимание тому, чтобы свести к минимуму объем работы, выполняемой фильтрами ISAPI. Например, в заказной схеме шифрования фильтр должен выполнять шифрование, а IIS должна выполнять обмен данными с клиентом. Это позволяет снизить количество задач, которые должен выполнять данный фильтр ISAPI.

Ограничения ISAPI

Технология ISAPI может обеспечивать наиболее высокую производительность, но она имеет некоторые недостатки. Для разработки расширений и фильтров ISAPI требуется больше времени, чем для разработки сценарных страниц, поскольку расширения и фильтры ISAPI обычно пишутся на C или C++, и по этой же причине возрастают трудности сопровождения. Для перехода на расширение или фильтр ISAPI требуется повторная компиляция всего приложения, а не просто замена какого-либо одного файла. Хотя расширения и фильтры ISAPI обычно работают быстрее, чем их сценарные аналоги на сервере, они не дают абсолютной гарантии полной масштабируемости. И наконец, определенные абстракции программирования, которые считают очевидными большинство разработчиков сценариев для сервера (в особенности сеансовый объект – session object), почему-то отсутствуют в ISAPI-программировании. ISAPI-программирование происходит на существенно более низком уровне, чем создание сценариев на сервере.

Использование ASP для доступа к SQL Server

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

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

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

Технология ASP нейтральна в языковом смысле. Разработчики, имеющие опыт работы с такими языками, как Microsoft Visual Basic Scripting Edition (VBScript), Microsoft JScript или Perl, обнаружат много знакомого в разработке ASP-файлов. В ASP-страницах может использоваться язык сценариев, для которого Web-сервер имеет инсталлированный совместимый с COM механизм обработки сценариев. Механизм (машина) обработки сценариев – это программа, обрабатывающая команды, написанные на определенном языке. В IIS включены механизмы обработки сценариев для популярных языков VBScript (основывается на Visual Basic) и JScript (реализация Microsoft для спецификации языка 262 Европейской ассоциации производителей компьютеров [ECMA]). Механизмы сценариев для популярных языков, таких как Perl, можно получить от независимых поставщиков.

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

Использование XML для доступа к SQL Server

"XML" – это сокращение от "Extensible Markup Language" (расширяемый язык разметки), но на самом деле XML – это не язык. Это, скорее, система определения других языков и общего синтаксиса для выражения структуры данных. В отличие от языка HTML, который является языком разметки, используемым строго для описания того, как будет представлен Web-документ, XML описывает содержание и структуру документа. Структурированные данные – это данные, которые размечены для своего содержимого или использования.

XML является расширяемым по своей сути. Разработчики используют XML для определения данных внутри Web-страниц, а уровень детализации определяется только потребностями самого разработчика. Например, разработчик будет использовать теги <AUTHOR> (автор) или <TITLE> (заголовок) для описания информации о книгах и публикациях. Если требуются дополнительные определения, то разработчик может добавить теги <RETAILPRICE> (розничная цена), <PUBLISHER (издательство) или даже <ISBN> (стандартный международный код книги).

Использование XML аналогично созданию таблицы в базе данных, когда требуется определить, какие элементы данных (колонки) необходимы для полного описания строк данных в этой таблице, исходя из требований приложения.

Поскольку XML не описывает представление на экране, то XML-документ можно написать один раз и затем выводить его разнообразными способами с использованием различных устройств: через Web-браузер, сотовый телефон, на дисплеях, используемых в автомобилях, и т.д. Каждое из этих устройств может иметь свои требования к отображению: монитор компьютера может выводить изображение с разрешением 800 x 600 пикселов, в то время как беспроводное Internet-устройство – только 200 x 200 пикселов. Так как XML определяет только структуру и содержание документа, то каждое устройство может визуализировать версию документа, адаптируемую к своему дисплею с помощью собственного интегрированного браузера. В отличие от HTML-документов XML-документы могут еще долго применяться после того, как устареют технологии разработки и визуализации, использовавшиеся в период написания этих XML-документов.

Реальным преимуществом XML является способность взаимодействия с объектной моделью документов (DOM) – интерфейсом, который определяет механизмы доступа к данным в документе. Используя DOM, разработчики могут писать сценарии динамического содержимого в стандартизованной форме. Например, разработчики могут использовать модель DOM, чтобы определенная часть содержимого формировалась определенным образом. С помощью этого метода можно реализовать небольшие эффекты, такие как добавление части текста, например заголовка книги, в тег XML с именем <TITLE>, который изменяет цвета, когда устройство указания пользователя перемещается вокруг него, и является гиперссылкой на онлайновый книжный магазин. Получение таких эффектов является в настоящее время не слишком простой задачей при использовании специализированных моделей DOM и спецификаций страниц стилей, однако новые стандарты DOM от консорциума World Wide Web (W3C) помогут разработчикам XML поддерживать настоящую независимость от используемых платформ.

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

Заключение

В этой лекции вы ознакомились с основами разработки Internet-приложений при использовании SQL Server и IIS 5 на платформе операционной системы Windows 2000. Существует широкий диапазон средств разработки – от сред разработки сценариев, таких как ASP, до использования откомпилированных продуктов, таких как расширения и фильтры ISAPI. Каждый из этих вариантов имеет свои преимущества и недостатки. Выбирая инструментарий для разработки вашего полномасштабного Internet-приложения, тщательно проанализируйте компромиссы каждого варианта, чтобы избежать последующих проблем.

Страницы:

Появление Microsoft SQL Server 2000 на платформе операционной системы Microsoft Windows 2000 упростило публикацию баз данных SQL Server в Internet. Сочетание Windows 2000 и Microsoft Internet Information Server (IIS) 5 образует обширный массив компонентов и интерфейсов, которые можно использовать для связи и взаимодействия с вашими базами данных SQL Server 2000. Эта лекция знакомит вас с базовыми концепциями доступа к Microsoft SQL Server из Internet с использованием разнообразных методов. Поскольку эта книга не является руководством по разработке, в данной лекции дается лишь обзор различных методов доступа. Выпущено много хороших книг, из которых вы можете получить информацию об особенностях программирования.

Эта лекция начинается с описания концепций программирования для Internet и используемых по умолчанию интерфейсов программирования для Internet, доступных в среде Microsoft Windows 2000. Вы ознакомитесь с основами ODBC-программирования и с ADO. Вы также ознакомитесь с ISAPI и ASP как средствами доступа к SQL Server. И, наконец, вы ознакомитесь с языком XML, узнаете, что это такое, и как его использовать. Эта лекция охватывает много тем, но она поможет вам понять работу базовых инструментов программирования для Internet.

Концепции программирования для Internet

В этом разделе вы ознакомитесь с основами подсоединения к SQL Server приложений, снабженных средствами Internet. Эти приложения содержат два различных интерфейса, причем необходимы оба интерфейса, поскольку они выполняют различные задачи: это интерфейс для пользователя и интерфейс для SQL Server. Данный раздел знакомит вас с возможностями соединения между приложением и SQL Server, и в нем рассматриваются методы соединения с помощью служб IIS и механизма ODBC.

Использование Windows 2000 и IIS 5 как платформы для Internet

Используя Windows 2000 IIS 5 как платформу для Internet-приложений, разработчики получают непревзойденные средства доступа к возможностям SQL Server. Разработчики могут использовать такие возможности, как сценарии выполняемые на сервере (server-side scripting) с интегрированным доступом к базам данных, источники данных открытого интерфейса доступа к базам данных, OLE DB (обширный набор интерфейсов модели компонентных объектов [COM] для универсального доступа к данным) и архитектура Web-приложений, известная под названием ISAPI (Internet Server API – интерфейс прикладного программирования Internet-сервера) (сильный "конкурент" традиционных приложений на основе общего шлюзового интерфейса CGI [Common Gateway Interface]).

Использование источников данных ODBC

ODBC, несомненно, является наиболее предпочтительным интерфейсом баз данных для платформы Microsoft Windows. Используя ODBC, разработчики могут получать доступ к широкому спектру разнородных источников данных, начиная с простых текстовых файлов, электронных таблиц Microsoft Excel и до баз данных Microsoft Access и SQL Server. ODBC обеспечивает общедоступный и при этом мощный уровень абстрагирования для программиста баз данных.

Разработка Internet-приложений с использованием SQL Server не является исключением. Источники данных ODBC являются главным средством доступа к базам данных SQL Server через Web-серверы. Они осуществляют это с помощью набора COM-объектов OLE DB, которые называют объектами данных ActiveX (ADO). ADO обеспечивает объектно-ориентированный интерфейсный доступ в источники данных ODBC, что является более простым методом, чем использование интерфейса API ODBC C. Используя ADO, разработчики могут реализовать простые объекты, представляющие соединения с базой данных, команды (такие как операторы SQL или хранимые процедуры) и наборы записей, аналогичные курсорам клиента и обладающие в значительной степени такими же функциональными возможностями, как курсоры баз данных сервера. Все эти объекты и интерфейсы баз данных делают Internet-разработку с помощью SQL Server почти тривиальной, обеспечивая при этом некоторые из более сильных возможностей, доступных в ODBC, такие как организация пула соединений (связного пула).

Наиболее важным аспектом Web-приложения на основе ODBC является надлежащее использование пула соединений. Организация пулов соединений позволяет приложению среднего звена поддерживать и использовать разделяемым образом соединения с базами данных SQL Server. Разделяемые (совместно используемые) соединения остаются открытыми в течение заданного периода времени и доступными для разделяемого использования пользователями. Установление соединений часто является операцией с интенсивным использованием ресурсов и может налагать большую дополнительную нагрузку на сервер базы данных. Поскольку Web-серверы и связанные с ними Internet-приложения обрабатывают большой объем трафика, то установление и, что еще более важно, – повторное установление соединений следует минимизировать с помощью пула соединений базы данных. Это позволит сократить время соединений для пользователей и снизит дополнительную нагрузку на ресурсы сервера баз данных. По умолчанию служба IIS 5 активизирует пул соединений с базами данных.

Примечание. При использовании источников данных ODBC и ADO вам следует использовать объекты соединений ADO на страничной основе. Создавая объекты соединений, только когда это требуется для страницы и освобождая их, когда они больше не нужны (в отличие от использования объекта для всего сеанса пользователя) соединение с базой данных можно возвращать в пул быстрее для использования другим соединением. Тем самым радикально снижается время ожидания соединения пользователями вашего Internet-приложения.

Выбор сетевой библиотеки

Хотя SQL Server поддерживает сетевые библиотеки, такие как named pipes (именованные каналы) и Banyan Vines, вам следует при развертывании базы данных SQL Server в Internet использовать в качестве сетевой библиотеки TCP/IP. TCP/IP обеспечивает гибкое использование сети и самую быструю возможность соединений при максимальной производительности среди всех сетевых библиотек в SQL Server. (О сетевых библиотеках см. лекцию 11.)

Используя в качестве сетевой библиотеки TCP/IP, вы ограничены использованием стандартного метода обеспечения безопасности как метода безопасности SQL Server. В этом методе для аутентификации используется учетная запись подключения (login-запись) SQL Server. Использование интегрированной системы безопасности, которая не поддерживается TCP/IP и в которой для аутентификации используются учетные записи Windows, обеспечивает более надежную защиту, и можно доказать, что эта система является наиболее эффективным средством поддержки централизованного управления учетными записями на предприятии. Однако по ряду причин использование интегрированной системы безопасности может приводить к снижению производительности*.

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

Во-вторых, соединения, базирующиеся на сетевой библиотеке named pipes (именованные каналы), наиболее часто используемой с интегрированной системой безопасности, обычно имеют низкую скорость. Кроме того, использование библиотеки named pipes создает проблемы для пулов соединений. Вы можете использовать пулы соединений в сочетании с named pipes путем использования учетной записи Anonymous как допустимого входа в SQL Server, но в большинстве реализаций для создания отдельных соединений с SQL Server используется аутентификация с запросом/подтверждением или базовая аутентификация. Это фактически сводит на нет любые улучшения производительности, которые могут быть получены с помощью пула соединений.

Если SQL Server инсталлируется на машине, отличной от Web-сервера, то использование интегрированной системы безопасности также ограничивает доступные возможности аутентификации. В этом случае нельзя использовать аутентификацию с запросом/подтверждением, и остаются только варианты базовой аутентификации и анонимной аутентификации. Анонимная аутентификация для системы, которая защищена каким-либо иным образом в Internet, обычно не рекомендуется, и, как уже отмечалось, использование базовой аутентификации ограничивает преимущества организации пула соединений.

Использование ISAPI для доступа к SQL Server

ISAPI – это набор вызовов функций, предназначенных для того, чтобы снабдить разработчиков Internet-приложений мощным методом расширения функциональных возможностей IIS. Приложения ISAPI показывают очень высокую производительность и позволяет осуществлять низкоуровневое управление. Фактически приложения ISAPI могут работать лучше других существующих Web-приложений для IIS. Кроме того, используя ISAPI, разработчик получает доступ ко всему массиву функций Win32 API.

Приложения ISAPI реализуются как динамически подключаемые библиотеки (DLL), которые поставляются в двух формах: расширения и фильтры. Поскольку библиотеки DLL – это обычно откомпилированные программные компоненты для данного типа машины, они выполняются намного быстрее, чем любая интерпретируемая программа или сценарий. Если высокая производительность и масштабируемость являются важными факторами вашего Internet-приложения (в ущерб простоте программирования и модифицирования), то расширение или фильтр ISAPI наиболее подходят для этой цели. В следующих двух разделах подробно описываются расширения и фильтры ISAPI, а в следующем за ними разделе рассматриваются ограничения программирования и использование приложений ISAPI.

Расширения ISAPI

Расширения ISAPI реализуются как библиотеки DLL и загружаются либо в пространство процесса IIS, либо в пространство отдельного процесса. У вас имеется этот выбор для каждого расширения ISAPI, которое вы индексируете на вашем Web-сервере. Если стабильность приложений является важным фактором, то расширения следует загружать в пространство отдельного процесса, чтобы ошибка расширения ISAPI не привела к аварийному отказу всего сервера (что возможно в случае экспериментальных или непроверенных расширений ISAPI).

Для обращения к расширению ISAPI используется виртуальный адрес .dll-файла в URL. Пример: http://www.mydomain.com/SampleISAPI.dll.

При таком способе обращения соответствующее расширение ISAPI загружается в память (если оно еще не загружено), и это расширение обрабатывает весь запрос, причем IIS действует просто как "посредник" для обмена данными с браузером клиента. Еще одним возможным применением этого подхода может быть реализация собственного (заказного) поискового механизма для сайта Internet.

Фильтры ISAPI

Фильтры ISAPI также реализуются как библиотеки DLL, но они загружаются в пространство процесса IIS, когда происходит запуск Web-сервера, и остаются в памяти, пока он не будет закрыт. Фильтры ISAPI можно сконфигурировать для получения любого количества уведомлений о событиях фильтра (filter event notifications), возникающих для каждого запроса протокола HTTP (протокола гипертекстовой передачи), который обрабатывается IIS, и для каждого HTTP-ответа, который генерируется IIS. При загрузке фильтра ISAPI он сообщает IIS (посредством специальной передаваемой структуры), о каких типах событий следует оповещать фильтр. При возникновении такого события уведомление об этом событии передается на каждый фильтр ISAPI, который зарегистрировал свою "заинтересованность" в этом событии.

Фильтры ISAPI являются довольно мощным средством и могут быть использованы для реализации сжатия или шифрования данных, нестандартной аутентификации, регистрации и анализа Web-трафика и даже сценарных механизмов на сервере (server-side scripting engines). Вы можете создать фильтр ISAPI, который просматривает каждый набор Web-страниц, который должен быть доставлен клиенту, ищет специальные теги разметки и действует в соответствии с этими инструкциями подобно тому, как это делает ASP-страница.

Способность проверки и модифицирования каждого входного и выходного потока данных делает фильтры ISAPI мощным и гибким средством. Однако слишком интенсивное использование фильтров ISAPI приводит к резкому снижению общей производительности и масштабируемости сайта. Например, при фильтрации каждой входной и выходной страницы это может стать слишком большой нагрузкой, чтобы с ней могла справляться система, поскольку это требует передачи большого объема дополнительной информации. Следует уделять огромное внимание тому, чтобы свести к минимуму объем работы, выполняемой фильтрами ISAPI. Например, в заказной схеме шифрования фильтр должен выполнять шифрование, а IIS должна выполнять обмен данными с клиентом. Это позволяет снизить количество задач, которые должен выполнять данный фильтр ISAPI.

Ограничения ISAPI

Технология ISAPI может обеспечивать наиболее высокую производительность, но она имеет некоторые недостатки. Для разработки расширений и фильтров ISAPI требуется больше времени, чем для разработки сценарных страниц, поскольку расширения и фильтры ISAPI обычно пишутся на C или C++, и по этой же причине возрастают трудности сопровождения. Для перехода на расширение или фильтр ISAPI требуется повторная компиляция всего приложения, а не просто замена какого-либо одного файла. Хотя расширения и фильтры ISAPI обычно работают быстрее, чем их сценарные аналоги на сервере, они не дают абсолютной гарантии полной масштабируемости. И наконец, определенные абстракции программирования, которые считают очевидными большинство разработчиков сценариев для сервера (в особенности сеансовый объект – session object), почему-то отсутствуют в ISAPI-программировании. ISAPI-программирование происходит на существенно более низком уровне, чем создание сценариев на сервере.

Использование ASP для доступа к SQL Server

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

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

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

Технология ASP нейтральна в языковом смысле. Разработчики, имеющие опыт работы с такими языками, как Microsoft Visual Basic Scripting Edition (VBScript), Microsoft JScript или Perl, обнаружат много знакомого в разработке ASP-файлов. В ASP-страницах может использоваться язык сценариев, для которого Web-сервер имеет инсталлированный совместимый с COM механизм обработки сценариев. Механизм (машина) обработки сценариев – это программа, обрабатывающая команды, написанные на определенном языке. В IIS включены механизмы обработки сценариев для популярных языков VBScript (основывается на Visual Basic) и JScript (реализация Microsoft для спецификации языка 262 Европейской ассоциации производителей компьютеров [ECMA]). Механизмы сценариев для популярных языков, таких как Perl, можно получить от независимых поставщиков.

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

Использование XML для доступа к SQL Server

"XML" – это сокращение от "Extensible Markup Language" (расширяемый язык разметки), но на самом деле XML – это не язык. Это, скорее, система определения других языков и общего синтаксиса для выражения структуры данных. В отличие от языка HTML, который является языком разметки, используемым строго для описания того, как будет представлен Web-документ, XML описывает содержание и структуру документа. Структурированные данные – это данные, которые размечены для своего содержимого или использования.

XML является расширяемым по своей сути. Разработчики используют XML для определения данных внутри Web-страниц, а уровень детализации определяется только потребностями самого разработчика. Например, разработчик будет использовать теги <AUTHOR> (автор) или <TITLE> (заголовок) для описания информации о книгах и публикациях. Если требуются дополнительные определения, то разработчик может добавить теги <RETAILPRICE> (розничная цена), <PUBLISHER (издательство) или даже <ISBN> (стандартный международный код книги).

Использование XML аналогично созданию таблицы в базе данных, когда требуется определить, какие элементы данных (колонки) необходимы для полного описания строк данных в этой таблице, исходя из требований приложения.

Поскольку XML не описывает представление на экране, то XML-документ можно написать один раз и затем выводить его разнообразными способами с использованием различных устройств: через Web-браузер, сотовый телефон, на дисплеях, используемых в автомобилях, и т.д. Каждое из этих устройств может иметь свои требования к отображению: монитор компьютера может выводить изображение с разрешением 800 x 600 пикселов, в то время как беспроводное Internet-устройство – только 200 x 200 пикселов. Так как XML определяет только структуру и содержание документа, то каждое устройство может визуализировать версию документа, адаптируемую к своему дисплею с помощью собственного интегрированного браузера. В отличие от HTML-документов XML-документы могут еще долго применяться после того, как устареют технологии разработки и визуализации, использовавшиеся в период написания этих XML-документов.

Реальным преимуществом XML является способность взаимодействия с объектной моделью документов (DOM) – интерфейсом, который определяет механизмы доступа к данным в документе. Используя DOM, разработчики могут писать сценарии динамического содержимого в стандартизованной форме. Например, разработчики могут использовать модель DOM, чтобы определенная часть содержимого формировалась определенным образом. С помощью этого метода можно реализовать небольшие эффекты, такие как добавление части текста, например заголовка книги, в тег XML с именем <TITLE>, который изменяет цвета, когда устройство указания пользователя перемещается вокруг него, и является гиперссылкой на онлайновый книжный магазин. Получение таких эффектов является в настоящее время не слишком простой задачей при использовании специализированных моделей DOM и спецификаций страниц стилей, однако новые стандарты DOM от консорциума World Wide Web (W3C) помогут разработчикам XML поддерживать настоящую независимость от используемых платформ.

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

Заключение

В этой лекции вы ознакомились с основами разработки Internet-приложений при использовании SQL Server и IIS 5 на платформе операционной системы Windows 2000. Существует широкий диапазон средств разработки – от сред разработки сценариев, таких как ASP, до использования откомпилированных продуктов, таких как расширения и фильтры ISAPI. Каждый из этих вариантов имеет свои преимущества и недостатки. Выбирая инструментарий для разработки вашего полномасштабного Internet-приложения, тщательно проанализируйте компромиссы каждого варианта, чтобы избежать последующих проблем.

Вернуться к учебному плану