В этой главе речь пойдет о разных способах реализации той или иной составляющей Вашего сайта с точки зрения использования различных программных и аппаратных решений, описываются основные возможности и способы, приемлемые при создании Интернет — представительства, приводится информация, которая будет полезна при постановке задач разработчикам.
В данной части материала отсутствуют "глубокие" технические описания и программный код.
Начнем рассмотрение с "самого простого" — "физического" места положения WWW — сервера.
В зависимости от Ваших потребностей и финансовых возможностей существует несколько вариантов:
Распределенное расположение корпоративных Интернет-представительств. Данный способ применим в случае наличия нескольких территориально удаленных подразделений фирмы, холдинга, например, в разных городах, регионах, странах. Такие Интернет-представительства учитывают экономические особенности регионов или стран, на работу с которыми ориентирован сайт, язык и особенности рынка. Как правило, целесообразным является не размещение соответствующей информации в каталогах и разделах одного WWW-сервера, а наличие нескольких серверов. Их создание, дальнейшее развитие и поддержка проводит маркетинговую линию, определяемую особенностями конкретного региона, страны. При этом единый корпоративный стиль является обязательным. При реализации такого подхода возможно использование распределенных баз данных. Можно приводить множество примеров Российских и зарубежных компаний, реализовавших свои Интернет-представительства именно таким образом.
Наличие собственного WWW-сервера. Если Вы не имеете территориально-разнесенных подразделений, представительств, линия продвижения Ваших товаров и услуг не испытывает необходимости учета особенностей региональных рынков или представления и поддержки информации, отображающей маркетинговую линию "на местах", нет смысла иметь и поддерживать несколько сайтов, объединенных в единое информационное пространство. Достаточно иметь собственный WWW-сервер. Если степень автоматизации Вашего предприятия подразумевает наличие выделенного канала, то достаточно просто и весьма целесообразно иметь такой сервер, размещенный физически "на территории" вашей организации. Невозможно говорить конкретно о программно — аппаратной части решения и его стоимости не изучив детально стоящие перед Вами задачи. Например, стоимость аппаратной части, в некоторых случаях, может колебаться от десятков — сотен долларов (соответствующий компьютер с установленной Unix — совместимой операционной системой, без графической оболочки и даже не только без качественного, но и вообще любого монитора) до гораздо более серьезных сумм (например, сервер SUN).Независимо от аппаратного решения в большинстве случаев совершенно отсутствует внешняя разница в следующих составляющих:
- Стиль;
- Дизайн;
- Предоставление информации;
- Организация "двусторонней связи" с посетителями;
- Реклама;
- Большинство маркетинговых составляющих;
- Возможность обновлений;
- Организация поиска с использованием как внешних, так и собственных механизмов индексации документов;
- Использование CУБД.
Отметим, что утверждение об "отсутствии внешней разницы" относительно. Все зависит в каждом конкретном случае от числа одновременных подключений удаленных пользователей, "ресурсоемкости" запускаемых на сервере процессов. Говоря проще, чем их больше, тем выше требования к программным и аппаратным ресурсам. Некоторые из перечисленных пунктов, особенно последний, сильно зависят от требований к производительности, сложности баз данных. Например, далеко не всегда и все можно реализовать при помощи СУБД MySQL, прекрасно работающей, скажем "под Linux" или даже Oracle "под linux" на аппаратной платформе стоимостью 200 долларов.
- Размещение сайта на "собственной" аппаратной платформе в ряде случаев экономически не оправдано. Действительно, необходим персонал, в обязанности которого входит поддержка аппаратных средств, некие работы и т. д. В этом случае, проще физически разместить свой сайт на сервере организации, предоставляющей подобные услуги. Речь не идет о бесплатных доменах и сервисах, предоставляемых в Интернет. Дело в том, что на имидж фирмы влияет и адрес её Интернет — представительства. Если из адреса, например, можно понять, что организация использует бесплатный домен, экономя на десятке — другом долларов за регистрацию домена и достаточно небольших сумм за хостинг, при этом предлагая товары и услуги, стоимость которых несколько выше, то посетитель сайта может сделать негативные выводы, а может и не посетить такой сайт вообще, увидев адрес в рекламных материалах. Организации, работающие на рынке WEB-услуг, часто предлагают регистрацию доменных имен в различных зонах Интернета (ru, com, org и т. д.) и предоставляют некий объем дискового пространства на своем сервере для размещения сайта. Как правило, "сопутствующей" услугой является доступ по FTP для обновлений. Данный способ "размещения" сайта является наиболее простым и доступным практически для любой организации, независимо от наличия выделенного канала, соответствующих технических специалистов. Кроме того, одной из услуг, предоставляемых на соответствующем рынке, является поддержка сайтов, включающая в себя обновления, разработку и доработку различных элементов Интернет — представительств. Подробнее рассмотрим некоторые аспекты предоставляемой услуги, незначительно влияющие на стоимость решения, но предоставляющие широкие возможности для увеличения степени автоматизации.
- Предоставление возможности использования скриптов CGI;
- Предоставление возможности доступа к СУБД;
- Предоставление дополнительных адресов электронной почты или почтовых доменов.
Выше сказано о незначительно влияющих на стоимость услугах, с одной стороны, но все они лишь предоставляют некие возможности, а стоимость реализации этих возможностей (особенно первых двух пунктов) может быть достаточно высока и определяется реальной постановкой задачи.
Просмотр сайтов осуществляется с помощью навигатора, являющегося "тонким" клиентом. В настоящее время большинство пользователей Internet используют в качестве средства просмотра одну из версий Netscape Navigator/Communicator или Microsoft Internet Explorer.
Некоторые функции навигаторов:
- Интерпретация гипертекстовых документов;
- Поддержка графики, анимации, видео, звука;
- Передача параметров исполняемым на сервере приложениям;
- Отображение результатов, выполняемых на сервере приложений, которые, как правило, динамически формируются сервером;
- Загрузка и выполнение приложений, выполняемых на стороне клиента, например, Java — апплетов и т. д.;
- Выполнение сценариев JavaScript и JScript на стороне клиента (интерпретатор языка сценариев JavaScript встроен в ядро Netscape, а JScript — в ядро IE), код которых может быть встроен в HTML — код страниц или загружен отдельно (файл);
- Вызов вспомогательных программ для отображения загруженного файла.
Выше перечислены лишь самые важные и необходимые для реализации бизнес-приложений функции навигаторов. Этот раздел материала посвящен краткому описанию далеко не всех возможностей, которые можно реализовать в Вашем Интернет — представительстве при использовании соответствующих механизмов навигатора, WWW — сервера, приложений и служб сервера и т. д.. Термином "WWW-сервер" — обозначено соответствующее приложение сервера. "Приложения и службы сервера" могут работать независимо от WWW-сервера (СУБД, "почтовый сервер" и т. д.), а выполняться на том "физическом" сервере, где проинсталлировано ПО WWW-сервера. В некоторых случаях целесообразно вообще организовать взаимодействие WWW-сервера с некоторыми приложениями, "физически" проинсталлированными на другом компьютере.
Кроме классификации приложений по признакам возможности работы в offline или online-режиме, достаточно условно (!) можно выделить две группы по способу реализации и работы приложений, доступных в режиме online:
Приложения, автоматически загружаемые в память компьютера посетителя Вашего Интернет — представительства (а иногда и не только в память, а и, например, в подкаталог Downloaded Program Files каталога операционной системы удаленного компьютера, а возможно и инсталлируемые в системе, вносящие записи в реестр операционных систем от Microsoft). Такие приложения полностью выполняются на клиентском компьютере. Загрузка и даже инсталляция с внесением записей в реестр, может осуществляться, например, лишь при "открытии" страницы WEB-навигатором посетителя. Ниже описаны некоторые средства, основанные на подобных принципах. Основным преимуществом подобных решений является необходимость некоторых вложений в разработку и практически отсутствие затрат на дальнейшую поддержку, отсутствие дополнительных требований к аппаратным ресурсам сервера, использования дополнительных серверных приложений и механизмов, напрямую влияющих на стоимость решения. Недостатки же в том, что, во-первых, чем сложнее логика работы, тем более "громоздко" приложение, например, требуется больше времени на его загрузку, что далеко не всегда допустимо, "занимаются" ресурсы компьютера удаленного пользователя. Во-вторых, система безопасности средств Интернет операционных систем далеко не всегда в настройках "по умолчанию" позволяет загружать и выполнять, например, ActiveX компоненты и для работы с подобными приложениями требуется сознательное снижение удаленным пользователем уровня безопасности. Это связано с тем, что, например, при открытии страниц со встроенными компонентами производится их автоматическая инсталляция в системе клиента, вносятся изменения в реестр. В-третьих, в некоторых нишах потенциальных клиентов по требованиям безопасности запрещены загрузка и выполнение подобных приложений.
Приложения, выполняемые на сервере. Удаленный посетитель Вашего сайта лишь запускает их, передавая те или иные параметры. Как правило, пользовательский интерфейс страниц, предназначенных для работы с подобными приложениями, кроме необходимых элементов дизайна, текстов имеет соответствующие механизмы "организации двустороннего диалога с посетителем". Ими могут являться формы с соответствующими элементами, возможно выполненные в "привычном" виде, а возможно в виде, например, анкет. Приложения сервера получают необходимые параметры через соответствующий "шлюз", например, специальный скрипт (скажем, при использовании технологии CGI — Common Gateway Interface — общий шлюзовой интерфейс). Получив те или иные параметры (вопрос пользователя, результаты опроса, голосования, запроса и т. д.), серверное приложение выполняет то или иное действие — передает вопрос по электронной почте, возвращает результат запроса к СУБД и т. д. Под термином "приложение сервера" подразумевается не "приложение WWW-сервера", а отдельный процесс, служба, демон, программа, работающая на сервере, например, почтовая система. Кроме того, ряд технологий позволяет обращаться к приложениям, работающим совершенно не обязательно на том сервере, где "физически" установлено приложение (служба, демон) — WWW-сервер. Степень автоматизации "двустороннего диалога" с посетителем может быть совершенно различной, как и степень внесения имиджинговой, маркетинговой и других составляющих. Об этом немного ниже. Основными преимуществами использования данной категории приложений является максимальное снятие нагрузки с клиентских компьютеров, практически неограниченные возможности в реализации тех или иных задач. Задачи могут быть связаны не только с достаточно простыми вопросами, например, взаимодействием с почтовой системой, СУБД. Существуют и более сложные, такие, как ведение любых расчетов, анализа, отображения статистической информации, имеющие под собой не только достаточно сложную программную реализацию, но и непростой математический аппарат. К недостаткам же сложных серверных решений можно отнести практически неограниченную сложность реализации, повышенные требования к аппаратным ресурсам, квалификации обслуживающего и поддерживающего персонала, следствием чего является высокая стоимость.
Приведенная выше классификация весьма условна. В некоторых случаях, возможны, например, варианты, когда существует одновременно клиентская часть приложения, автоматически загружаемая и инсталлируемая, например, при открытии страницы посетителем и серверная часть, выполняемая на сервере. Например, кратко описанные ActiveX — компоненты — активные формы — приложения первой группы, вполне могут использоваться и для доступа к СУБД через Интернет, для решения задач в архитектуре клиент-сервер (например, в системах оплаты, системах расчетов и анализа и т. д.). Но такого использования лучше избегать, поскольку "самый тонкий" клиент этой архитектуры — WEB-навигатор просто теряет свои качества.
Одним из средств, позволяющих создавать приложения первой группы, может являться JavaScript и JScript.
В самые распространенные WEB-навигаторы (Microsoft Internet Explorer и Netscape Navigator) встроено ядро объектно-ориентированного языка сценариев JavaScript. Корректнее поясним, что JavaScript является собственностью Netscape. Реализация от Microsoft носит название JScript. Нижеописанные возможности применимы к обеим реализациям, поэтому ниже условно объединим их сокращением JS.
Рассмотрим пример бизнес — приложения, код которого полностью "встроен" в HTML — документ. Ограничимся лишь снимком экрана и небольшим толкованием (Рис. 5).
Код приложения JS, полностью встроенный в загружаемую WEB-страницу, выполняется на "клиентском" компьютере, содержит в себе логику расчета стоимости оборудования в зависимости от конфигурации. Данный пример достаточно хорошо иллюстрирует возможности JS: удаленный посетитель заполняет поля, выбирает тип оборудования, нажимает кнопку "расчет", после чего приложение производит вычисления и выводит результат. Общий "объем" загружаемой страницы достаточно невелик и составляет приблизительно 25 килобайт, что несущественно даже при использовании низкоскоростного модемного доступа в Интернет.
Нельзя утверждать, что логика и математический аппарат, применяемый для расчетов в данном примере, сложны. Пример лишь иллюстрирует наиболее оптимальное применение JS.
В случае необходимости производить более сложные расчеты, "объем" загружаемой страницы возрастет (как и требования к ресурсам клиентского компьютера). Чем сложнее математический аппарат и требования к отображению результатов расчетов, тем менее эффективно применение JS и все преимущества подобных приложений (отсутствие затрат на дальнейшую поддержку, отсутствие дополнительных требований к аппаратным ресурсам сервера, использования дополнительных серверных приложений и механизмов, напрямую влияющих на стоимость решения) могут быть "сведены на нет".
Приведенная в примере страница выполняет некие функции менеджера, занимающегося поставками оборудования и грамотно способного провести и обосновать расчеты. Также с некоторой степенью автоматизации реализуется "двусторонняя связь" с посетителем сайта.
К сожалению, большая степень автоматизации, которую можно реализовать с использованием JS, не всегда целесообразна, а иногда просто невозможна.
Достаточно кратко рассмотрим Java — апплеты (ниже в тексте "апплет" от английского "applet"). Подобные "загружаемые" приложения также относятся к первой группе. Это средство все же ближе к дизайну, хотя возможно создание достаточно мощных программ, выполняющих не только функции придания страницам сайта соответствующего "внешнего" вида. Сам Java — апплет является, как правило, файлом *.jar, физически находящимся в каталоге WWW-сервера.
При открытии WEB-навигатором страниц производится загрузка приложения и его выполнение на компьютере посетителя сайта.
Заметим, что чем сложнее составляющая дизайна и логика приложений, которые можно реализовать в виде Java — апплетов, тем большее время на их загрузку и выполнение потребуется посетителю сайта, он... может "уйти" не дождавшись появления в окне своего WEB-навигатора именно той информации, которую несет не загрузившийся апплет. Кроме того, ряд предприятий, организаций и фирм в целях обеспечения безопасности имеют ограничения на загрузку и выполнение подобных приложений WEB-навигаторами сотрудников или специфичные (иногда просто устаревшие) WEB-навигаторы, не поддерживающие Java.
Использование даже хорошего апплета с целью выполнения неких, скажем маркетинговых функций, ассоциативно сравнимо с неграмотным использованием архитектуры "клиент-сервер". Когда, например, в качестве СУБД используется мощное средство, скажем Oracle или MsSQL Server, позволяющее выполнять на сервере хранимые процедуры и триггеры, а не очень грамотный программист "возложил" всю логику, которую способен выполнить сервер, на клиентское приложение. От подобных решений клиентское приложение становится чрезвычайно громоздким, способно порой вызвать "зависание" даже мощной рабочей станции, хотя трафик не очень "плотный", а подобный "не тонкий" клиент обращается к данным, хранящимся в таблицах достаточно мощных СУБД, поддерживающих архитектуру "клиент-сервер".
Существует еще один способ создания бизнес-приложений первой группы — полностью выполняемых на клиентском компьютере. Подобное решение в данном разделе рассматривается ещё лишь на примере компонентов ActiveX — активных форм, которые можно использовать и для обращения через WEB-интерфейс к серверным приложениям, например, к СУБД. Хотя для этого существуют "более приемлемые для Интернет" механизмы, например, PHP, IDC и "клиент-серверная" реализация технологии ActiveX — ASP. Использование активных форм в качестве клиентских частей архитектуры "клиент-сервер" в Глобальных Сетях не всегда целесообразно и чаще приемлемо в интрасетях. Приложения инсталлируются в системе, вносят изменения в реестр, для инсталляции и работы с ними требуется умышленное снижение уровня безопасности. Кроме того, "самый тонкий клиент" — WEB-навигатор теряет свои свойства, а сами файлы серьезных приложений, кроме того, имеют достаточно большой объем и время загрузки по низкоскоростным каналам доступа в Интернет.
В связи с вышеизложенным, чаще целесообразно использование активных форм в качестве небольших бизнес — приложений, не имеющих, например, связи с приложениями сервера. Возможны и некоторые исключения, например, инсталляция клиентской части системы оплат Ваших товаров и услуг через Интернет Вашими клиентами, согласно приведенным инструкциям и договоренностям (договорам).
Рассмотрим, что же такое активная форма, как она создается и размещается в Интернет? Представьте себе окно приложения, используемого вне Глобальной Сети, а скажем при неких экономических, статистических, бухгалтерских, технических и прочих расчетах, а возможно это... игра "lines". Допустим, данное приложение использует та или иная категория сотрудников или посетителей Вашего офиса. А теперь представьте, что подобная программа "открывается" в окне WEB-навигатора удаленного посетителя соответствующего закрытого или открытого раздела Вашего корпоративного сайта, причем логика работы, да и пользовательский интерфейс ничем не отличается от того приложения, что Вы, Ваши сотрудники, посетители используете в офисе.
С технической точки зрения реализация описанных возможностей достаточно проста. Объектно-ориентированные среды программирования (например,s Borland Delphi и другие), позволяют программисту использовать те же механизмы, строки кода, объекты, свойства, методы, функции и навыки разработки для создания приложений на активных формах, что и на "обычных". Говоря проще, компилируется файл, имеющий не "более привычное" для приложений в операционных системах от Microsoft расширение *.exe, а *.ocx. Впоследствии данный файл просто размещается в каталоге WWW-сервера. При таком (только "клиентском") использовании активных форм совершенно безразлично под какой операционной системой проинсталлирован Ваш WWW-сервер. Загрузка активной формы на машину посетителя сайта производится при открытии WEB-навигатором документа, в коде которого указан данный объект. Как правило, файл приложения сохраняется в подкаталоге Downloaded Program Files основного каталога операционной системы Winnt (речь о Microsoft — операционных системах) компьютера удаленного посетителя Вашего корпоративного сайта. Это в принципе исключает повторные загрузки, которые могут потребовать достаточно длительного времени. При этом происходит инсталляция приложения и вносятся записи в реестр. Далее в окне WEB-навигатора открывается интерфейс приложения — активной формы и можно начинать работу.
Существует достаточно много постоянно развивающихся технических механизмов и способов реализации подобных свойств Вашего Интернет-представительства, здесь описаны лишь некоторые из них.
С помощью этого средства (CGI — сокращенное название от Common Gateway Interface — общий шлюзовой интерфейс) можно "связывать" исполняемые на сервере и "запускаемые" удаленным пользователем приложения. Приложения "запускает" посетитель Вашего корпоративного сайта, используя элементы интерфейса, например, формы. "Запускает" следует трактовать, как "посылает соответствующую строку, являющуюся командой на запуск приложения, выполняемого на сервере с некоторыми параметрами, определяющими выполнение тех или иных задач приложения". Поскольку приложения созданы Вами (по Вашей постановке задачи), они могут являться мощным механизмом ведения Вашего бизнеса, причем именно по тем "пунктам", из которых состоит Ваш бизнес — от маркетинговых исследований рынка, до поддержки клиентов, принесших Вам прибыль. Хотя, например, поддержку специалистов, которым Вы выдали сертификаты, можно осуществлять и другими путями, например, просто "выдать" имя пользователя и пароль на доступ к "закрытым" для других разделам информации, используя механизмы ограничения доступа WWW-сервера, что также может вполне обеспечить выполнение одного из вышеперечисленных пунктов Вашего бизнеса.
Поговорим сейчас о "содержимом" специального каталога, скажем CGI-BIN или SCRIPTS WWW-сервера. Этот каталог (или подобный), что прописывается в файле конфигурации httpd.conf (если речь идет о WWW-сервере Apache) или определяется средствами администрирования (если речь идет о решении от Microsoft — IIS — Internet Information Server) "закрыт" для просмотра, но на него распространяется "разрешение на выполнение сценариев", которые находятся "внутри". Что это за сценарии? Как правило, это специальные файлы, посредством которых производится "запуск" того или иного "механизма взаимодействия с посетителем Вашего корпоративного сайта", "двусторонней связи", которую необходимо организовать, например, между потенциальным клиентом и приложениями (программами, процессами, службами, демонами) сервера.
Степень автоматизации обработки обращения посетителя и формирования ответа может быть полной (например, посетитель передает запрос к СУБД и получает результат) или частичной (например, посетитель передает через WEB-интерфейс вопрос в отдел поддержки решений).
При помощи CGI возможно передать специальной программе сервера сведения о пользователе, узле. Достаточно часто CGI используется для передачи данных форм, заполняемых удаленным пользователем, создания WEB-страниц "на лету", подсчета количества обращений пользователей к документу. Возможна реализация средств осуществления поиска, форумов, гостевых книг, организация поддержки клиентов, передачи запросов по электронной почте и многого другого, например, тестов или игр Online для посетителей Вашего сайта.
На Рис. 6 приведен экран "горячей линии" русскоязычного сайта корпорации Ford (http://www.ford.ru/service/hotline.html) в момент попытки удаленного посетителя сформировать и отправить запрос в адрес службы "горячей линии" без указания необходимых контактных координат. Удаленному посетителю предоставлена возможность задать интересующий вопрос, который передается в службу "Горячей линии". Кроме возможности формирования вопроса, организации передачи вопроса посетителя в соответствующую службу приложение "следит" за заполнением пользователем обязательных полей формы.
Рассмотрим пример часто используемого скрипта FormMail c кратким описанием его возможностей в преломлении внесения неких имиджинговых и маркетинговых составляющих в страницы Вашего сайта. Использование данного приложения мало чем отличается "по идеологии" от подобного — hotline.cgi, которое используется на русскоязычном сайте корпорации Ford. Описание FormMail иллюстрирует некоторые возможности и принципы работы CGI.
Нетрудно догадаться из названия, что FormMail является "шлюзом" между формой, которую видит удаленный посетитель Вашего корпоративного сайта, и некой почтовой системой, отсылающей "содержимое" заполненной формы пользователем в адрес, например, Вашего отдела продаж, отдела маркетинга, технического, дилерского отделов.
Настройка скрипта достаточно проста. Необходимо в соответствующих строках указать значения переменных — путь к почтовой системе на сервере (переменная mailprog), список адресов сайтов (referes). Часто значение переменной mailprog может быть, например, записано: $mailprog = '/usr/lib/sendmail'. — наиболее типичный путь к почтовому серверу Sendmail для Unix-совместимых операционных систем. Следующее значение, которое необходимо указать в FormMail — referers — "указание" адресов сайтов, с которых может обращаться пользователь для того, чтобы через почтовую систему Вашего сервера не передавали информацию из форм, расположенных, например, на "чужих" сайтах. @referers =(список адресов сайтов). Местом "входа" в шлюз может являться, например, форма, доступная посетителю Вашего сайта и предназначенная для передачи информации в адрес, скажем отдела продаж, техотдела и т. д. по электронной почте. Существует ряд способов, использование которых позволяет в удобном для посетителя и необходимом Вам виде сформировать ту или иную форму на соответствующей странице Вашего Интернет — представительства. Формы могут создаваться не только для отсылки по электронной почте, но и для запроса к СУБД, запуска приложений сервера с теми или иными параметрами, которые, по сути, и являются информацией, вносимой в поля или формируемой переключателями, списками и другими элементами форм. Также существуют параметры, которые могут передаваться приложениям сервера через CGI и без всякого внесения их пользователем, как вместе с информацией формы, так и отдельно, а иногда и просто при открытии WEB-навигатором посетителя страницы. Именно так работают "счетчики", формирующие строку рейтинга (код которых встроен в страницу) и некоторые другие приложения.
При организации отсылки информации через FormMail, необходимо указание адреса электронной почты, на который отсылается сообщение. Кроме того, возможно указание обязательных полей формы, которые должен заполнить удаленный посетитель Вашего корпоративного сайта, указание страницы, содержащей сообщение о том, что информация передана, и адреса страницы, "говорящей" о том, что необходимо внести обязательную информацию. Для этих и других действий необходимо написание "дополнительных" строк кода, которые не являются сложными логическими операциями, а требуют лишь соответствующих знаний и навыков, которыми может и должен обладать любой разработчик.
Перечислим некоторые из "дополнительных строк", которые могут быть внесены в HTML-код страницы и являются параметрами, которые удаленный посетитель никуда не вводит, но, нажав соответствующую кнопку, независимо от его желания передает нужному приложению сервера: REMOTE_HOST — отсылает имя удаленного хоста, пославшего запрос, REMOTE_ADDR — его IP — адрес, HTTP_USER_AGENT — WEB-навигатор, через окно которого удаленный посетитель Вашего корпоративного сайта послал запрос и даже... REMOTE_USER — имя пользователя. Это далеко не все возможности, но стоит отметить, что "дополнительные строки" могут быть "вложены" в HTML-код страницы Вашего корпоративного сайта и в небольшой файл FormMail.pl из каталога CGI-BIN "объемом".. ~25 килобайт.
Передаваемая пользователем информация подлежит дальнейшей обработке и анализу с различной степенью автоматизации, как "вручную" — соответствующими специалистами, так и с использованием программных средств. Чем выше степень автоматизации, тем выше стоимость реализации законченного решения!
PHP (Personal Home Pages)- межплатформенный язык сценариев, позволяющий реализовать приложения, выполняемые на стороне сервера. Как и всякий язык, PHP имеет все необходимые "атрибуты", содержит множество инструментов. Очень важно, что PHP позволяет формировать динамически содержание страниц, доступных посетителю в окне WEB-навигатора.
Для PHP существует специальный модуль, подключаемый к WWW-серверу Apache. Код PHP может выполняться как сценарий CGI и на стороне клиента встраивается в обычную HTML-страницу.
При помощи PHP можно производить практически неограниченную интеллектуальную обработку форм, например, с использованием присутствующих во всех современных языках программирования логической конструкции IF...ELSE. В некоторых языках подобная условная конструкция выглядит как IF...THEN...ELSE, но также означает условный переход по принципу, который можно сформулировать приблизительно так: "если условие не выполнено, тогда следует выполнить другое".
Кратко отметим группу, так называемых графических функций, позволяющую динамически создавать изображения, "работая", например, с их цветом, формой и прочими характеристиками.
Неотъемлемой частью ряда современных бизнес-приложений, используемых даже "вне сети", являются диаграммы, графики и другие, ставшие неотъемлемыми элементы отображения информации. Реализовать подобные бизнес-приложения для Вашего корпоративного сайта можно, используя средства "первой группы" (указанные выше, в достаточно относительной классификации). Подобное приложение становится громоздким, и все недостатки загружаемых и выполняемых на стороне клиента приложений могут просто "перечеркнуть" вложенные в них возможности. В связи с этим динамическое формирование потока изображений, как процесс сервера — достаточно важное свойство PHP.
На Рис. 7 приведен пример работы такого приложения — диаграмма средств анализа статистики реального ресурса.
В первой части материала кратко упоминалось о возможностях работы с СУБД для индексации документов сайта как для контекстного поиска, так и для поиска по необходимым признакам (полям). Подобные действия направлены, прежде всего, на предоставление посетителю средств быстрого нахождения необходимой информации в неизбежно растущей массе документов Вашего интернет-представительства.
CGI рассматривается как универсальный шлюз, "точкой входа" в который является WEB-интерфейс удаленного посетителя Вашего корпоративного сайта, а "точкой выхода" — некое приложение на сервере. При полной автоматизации процесса "двусторонней связи", "точкой выхода из шлюза" является также и окно WEB-навигатора удаленного посетителя с результатами запроса. При рассмотрении CGI, акцент делался на "нажатие кнопки отправки данных" (для передачи данных через CGI с использованием "почтового" сервера). Теперь немного "изменим надпись на кнопке" на "запрос" и рассмотрим "шлюз" с СУБД, то есть случай полной автоматизации процесса "двусторонней связи" с потенциальным или реальным клиентом, партнером, дилером, инвестором.
Взаимодействие с СУБД осуществляется через их собственные API. Очень важно, что PHP поддерживает ODBC через соответствующие драйверы для некоторых СУБД. Хотя ODBC достаточно часто применяется в Microsoft-операционных системах, являясь "промежуточным слоем", если так можно выразиться, между WWW-сервером и СУБД, что далеко не всегда может положительно влиять на производительность системы в целом. Связь с СУБД в PHP может осуществляться и без какого-либо дополнительного "промежуточного слоя". Для взаимодействия с разными СУБД в PHP имеются все необходимые функции.
Не перечисляя всех, приведем неполный список поддерживаемых СУБД:
- Sybase;
- Oracle;
- MySQL;
- Informix;
- Interbase;
- FilePro(только чтение);
- DBM — отметим, что данные СУБД построены "не по реляционному принципу";
- DBase — поясним, что файлы *.dbf являются лишь файлами последовательного доступа, данная СУБД не является настоящей "клиент-серверной". Самое оптимальное использование файлов *.dbf — импорт и экспорт информации, который также может быть полезен в некоторых случаях при "обслуживании" Вашего корпоративного сайта. Например, Ваш достаточно широкий спектр предложений пополнился еще длинным списком, связанным с изменением цен, наименований продукции и т. д. Если через Ваше Интернет — представительство реализован доступ к СУБД, то достаточно просто формируется файл, содержащий необходимые записи и производится экспорт необходимой информации в СУБД на её уровне и её "штатными" средствами;
- Hyperwave Information Server — специальная информационная система, отчасти сходная с СУБД, хотя может использоваться в системах хранения документов и документооборота, а также в ERP — системах;
- ODBC. Данный механизм подробнее рассматривается в разделе "Технологии от Microsoft (на примере ASP)".
Логика взаимодействия с СУБД через WEB-интерфейс следующая:
- Посетитель сайта формирует запрос, используя привычные элементы WEB-интерфейса;
- Запрос и его параметры передаются через соответствующий механизм взаимодействия WWW-сервера и СУБД к самой СУБД, "отрабатывающей" запрос;
- После "отработки" запроса через соответствующий механизм, позволяющий "динамически" формировать страницы (например, PHP), пользователь получает в окне WEB-навигатора результат запроса. Лучше предоставить удаленному посетителю сайта "сузить" область поиска, поскольку информации может оказаться много и наличие возможности поиска в результатах запроса позволяет не пропустить ту самую строку, которая может повлиять на успех Вашего бизнеса.
Рассмотрим пример WEB-интерфейса, позволяющего использовать приложение, реализованное по технологии PHP для доступа к СУБД.
Данное приложение выполняет задачи поиска учетных записей о 86773 книгах (Рис. 8). Посетитель сайта формирует запрос по 6 полям и ключевым значениям с учетом любой логики. Запрос "отрабатывается" СУБД. Результат выводится в окне навигатора. Использование подобных приложений эффективно в случаях:
- Большого числа документов, когда неэффективен лишь контекстный поиск, требуется индексация по различным признакам и внесение дополнительной логики;
- Широкого ассортимента товаров и услуг.
Рассмотрим теперь другой механизм, организующий сетевое взаимодействие между приложениями, использование которого также позволяет удаленному посетителю Вашего корпоративного сайта работать с большими объемами документов. Бессмысленно говорить о "явных преимуществах" CGI и Perl, используемых в Unix-системах или ASP и VBScript, в операционных системах от Microsoft. Можно приводить множество примеров корпоративных сайтов, где применяются те или другие технологии, предоставляющие посетителю (которому все равно!) практически одинаковые сервисы. Развитие этих технологий, пожалуй, напоминает некую гонку и никто и никогда не сможет объективно оценить "кто у кого что позаимствовал", что лучше?
Развитие этих технологий, прежде всего, определялось, определяется и будет определяться тем стилем ведения бизнеса, который присущ разработчикам.
С одной стороны в пользу технологий Unix-систем часто приводят аргумент о "её доступности и бесплатности", в "противовес" говоря о том, что за решения Microsoft нужно "платить больше денег".
Пока Ваш сайт "физически расположен" на компьютере, скажем под управлением Linux, затраты складываются из:
- стоимости аппаратного обеспечения ($500, а без "графической оболочки" можно и $200, даже ниже);
- стоимости программного обеспечения (некоторые составляющие бесплатны);
- стоимости подключения;
- стоимости создания, "раскрутки" и поддержки.
Когда же Вы придете к тому, что для решения Ваших корпоративных задач необходим, скажем, сервер SUN, сайт и все механизмы созданы в удобных для WEB-использования Unix-системах, то "цена вопроса" будет вычисляться по вышеприведенной формуле, только стоимость аппаратного обеспечения "несколько" возрастет.
Некоторые производители серверов (скажем HP) сделали хороший маркетинговый ход — модельный ряд оборудования поддерживает собственную Unix-систему и системы от Microsoft. Возможно самим просчитать (или привлечь соответствующих специалистов) полную стоимость решения — корпоративного сайта, реализованного на разных программных и аппаратных платформах и выполняющего все возможные в Глобальной Сети функции с одинаковыми характеристиками. "Цена вопроса" отличаться сильно не будет для этих двух платформ. Но подобные расчеты необходимо производить с учетом ваших задач, возможных перспектив, и только на основе этих реальных цифр стоит делать выводы. Может оказаться так, что для Вас оптимальным не будет ни одно из вышеприведенных решений, а, возможно, лучше, быстрее, проще, эффективнее стоит "физически разместить сайт" в "менее характерных" для подобного использования операционных системах, но удобных именно для Вашего случая (скажем Novell).
Перейдем теперь к рассмотрению "наиболее типичной" для Microsoft технологии ASP (Active Server Pages) на примере работы IIS, MSSQL Server, ODBC и VBScript, сначала достаточно кратко приведем все составляющие технологии.
Для взаимодействия с СУБД (не только MSSQL Server!) в Microsoft-операционных системах используется ODBC (Open Database Connectivity) — специальное средство для организации доступа к СУБД. Во всех современных операционных системах от Microsoft существует механизм, позволяющий с использованием графического интерфейса быстро настраивать, так называемые, источники данных ODBC. При указании того или иного источника, ему присваивается произвольное имя — DSN (Data Source Name) и драйвер ODBC, предназначенный для работы с той или иной СУБД (например, MSSQL Server). Важным свойством является возможность создания распределенных систем в Глобальной Сети. Дело в том, что при описании источника данных ODBC можно указывать "местом расположения" СУБД имя или IP-адрес сервера, физически расположенного где угодно и не обязательно на той машине, где, например, работает Ваш корпоративный WWW-сервер ("обращающийся" к СУБД посредством запросов, формируемых WEB-навигатором клиента).
Для описания механизма взаимодействия IIS с MSSQL Server кратко остановимся на самой СУБД. MSSQL Server является достаточно мощной и гибкой СУБД от Microsoft. Как и всякая современная реляционная СУБД, предназначенная для реализации приложений архитектуры "клиент-сервер", MSSQL-Server поддерживает различные форматы данных, язык SQL, хранимые процедуры и триггеры, выполняемые на сервере, имеет встроенные механизмы экспорта и импорта информации из или во внешние таблицы, механизм репликации и множество других функций, характеризующих современную СУБД.
Кратко рассмотрим механизм репликации. Он эффективен при создании единого информационного пространства, позволяет СУБД автоматически обмениваться данными не только в интрасетях, но и в Глобальной Сети. Основное назначение репликации — использование метода свободного объединения от Microsoft. Данный метод позволяет в режиме почти реального времени (здесь также приведена дословная формулировка) осуществлять обмен информацией между SQL-серверами, синхронизировать их работу, создавая распределенные системы. Термин "почти реальное время" применяется, поскольку между серверами нет постоянного соединения и данный механизм очень эффективен на низкоскоростных каналах. При изменении информации, например, хранящейся в таблице одного сервера, мгновенного изменения информации, хранящейся в таблице другого сервера не происходит. Логика работы механизма (далеко не вся!) следующая (на примере репликации таблицы):
- Системе указывается контролируемая таблица;
- Служба репликации рассылает все внесенные изменения и "поддерживает" состояние таблицы актуальным на всех удаленных серверах, согласно указанному промежутку времени;
- Процесс "общения" между серверами при репликации напоминает логику поведения обычного файлового сервера, "ставящего в очередь". То есть, если в процессе репликации удаленная система "отказывает", то транзакция ставится в очередь и находится там до тех пор, пока её выполнение не станет возможным.
VBScript — специальный язык серверных сценариев, на котором можно "заставить запуститься и выполниться" некие процессы на сервере. Как и каждый язык VBScript имеет свой синтаксис, переменные, операторы, методы и т. д. В ядро IIS встроен механизм поддержки ASP. Данная технология может применяться не только "в преломлении" работы с СУБД. В любом случае одним из методов пользователь "запускает" файл *.asp, хранящийся в каталоге IIS — SCRIPTS. Особенностью данного каталога является запрещение доступа на просмотр, но разрешение на выполнение находящихся в нем приложений.
Логику работы можно описать следующим образом:
- Пользователь передает некие параметры (например, сформированного запроса).
- Запускается сценарий, описанный строками VBScript, которые содержит файл *.asp:
- Устанавливается соединение с указанным в строках кода источником ODBC;
- Передается запрос к СУБД через установленное соединение;
- Сервер CУБД "отрабатывает" запрос и "возвращает результат";
- Формируется динамическое содержание страницы, возвращаемой в окно WEB-навигатора пользователя, содержащее "ответ" от СУБД.
Алгоритм аналогичен приведенному в разделе "PHP", хотя пути реализации PHP и ASP совершенно различны.
Технология ASP далеко не всегда может быть использована только для работы с СУБД. Существуют и другие применения.
Лучшим показателем того или иного решения является его использование самим разработчиком. Рассмотрим пример с сайта компании Microsoft. Ниже приведена запросная форма, доступная на странице технической поддержки русскоязычного сайта. Для поиска документов используется технология ASP (Рис. 9).
Развитие информационных технологий и Интернет не стоит на месте, появляются новые перспективы и решения, о которых можно говорить бесконечно...
Для примера рассмотрим одно из "свежих решений" — использование push-технологии ("проталкивание" данных) в системе информационного терминала "RBCWin" — программного комплекса, обеспечивающего доступ к оперативной информации от РБК. Специфика деятельности РБК и клиентов, высокие требования к оперативности получения информации, и, некоторые свойства WEB-навигаторов явились толчком к применению подобной технологии. Как только на сервере появляется новая информация, сервер сам извещает об этом клиента. Таким образом, использование терминала гарантирует высокую скорость обновления данных на стороне пользователя. Кроме того, клиенту не приходится регулярно запрашивать одну и ту же страницу сайта, чтобы обновить информацию.