Область применения данной технологии, как и у технологии CGI -очень широка. РНР позволяет динамически создавать HTML-документы, работать с базами данных, сетевыми протоколами. Средства языка подходят для обработки HTML-форм. По сравнению с другими языками сценариев, выполняемыми на стороне сервера, РНР наилучшим образом подходит для решения задач, не предъявляющих высоких требований к производительности: гостевые книги, доски объявлений, системы регистрации, чаты - все это создается на РНР значительно с меньшими трудовыми затратами, нежели на других языках, например, на Perl.
Технология построения интерактивных документов
Перечисленные в предыдущей главе технологии действительно делают HTML-документы интерактивными. Содержание страницы может зависеть от действий пользователя и других событий, однако для его изменения все равно необходимо производить перезагрузку новой страницы. Причем все изменения, которые может произвести пользователь, связаны с необходимостью взаимодействия с элементами управления: кнопкой, полем ввода, переключателем и т.п. Динамические расширения языка HTML (DHTML) позволяют менять содержание документов, взаимное расположение отдельных элементов, реагировать на действия пользователя мышью, на ввод данных с клавиатуры и прочие действия, причем все это выполняется без перезагрузки документа с сервера. Средства DHTMLпозволяют настраивать внешний вид целых сайтов - современные порталы предлагают пользователю персонализированные страницы, значительную часть оформления которых пользователь может выбрать сам.
ДинамическийHTML (DynamicHTML, или DHTML) не является каким-то особым языком разметки страниц. Это термин, применяемый для обозначения HTML-страниц с динамически изменяемым на стороне клиента содержимым.
Элементы управления ActiveX - это самостоятельные программные компоненты, которые можно использовать в разрабатываемых программах для реализации необходимых функциональных возможностей. Элементы ActiveX - это действительно лишь компоненты, они не являются самостоятельным программным приложением, а выполняются только в приложении, позволяющем встраивать элементы ActiveX, являясь, тем самым, для них неким контейнером.
Компоненты ActiveX создаются с применением технологии
программирования COM (ComponentObjectModel), разработанной Microsoft.
С точки зрения программиста, использующего его, ActiveX-элемент - это
дальнейшее развитие технологии объектно-ориентированного программирования. При включении подобного объекта-компонента в тело разрабатываемой программы он делает доступными свои свойства и методы, которые открыты для использования в соответствующей объектно-ориентированной манере в программе-контейнере. Все эти свойства и методы могут быть использованы при применении технологии DHTML в языках-сценариях JavaScript или VBScript.
Элементы ActiveX хранятся на компьютере пользователя. Каждый элемент имеет уникальный идентификатор, и соответствующую, уникальную для каждого элемента запись в реестре операционной системы Windows. Встраивание элемента в HTML-страницу выполняется с помощью пары тегов <OBJECT>..</OBJECT>, содержащих идентификатор встраиваемого элемента ActiveX, а так же необходимое количество других параметров, задающих свойства элементов. Кроме того, может быть задан параметр, определяющий, откуда может быть загружен используемый ActiveX элемент, если он еще не имеется на компьютере пользователя.
ActiveServerPages (ASP)
Технология ASP компании Microsoft является аналогом рассмотренных ранее серверных технологий. Более всего ASP функционально походит на CGI. ASP-страница - это HTML-документ, содержащий сценарии, которые позволяют работать с управляющими элементами ActiveX, в том числе, и элементами для доступа к базам данных. Особенностью этой технологии является то, что в качестве языков сценариев для написания динамических вставок как правило используются JavaScript и VBScript, хотя допустимо использование и других языков. Сценарий управляет объектами, результаты работы которых представляются в формате DynamicHTML.
Технологию ASP используют Web-серверанабазе Windows - Internet Information Server и Personal Web Server. Таким образом, ASP в некоторой мере может служить заменой CGI на Windows-платформах.
Рассмотрим особенности CGI и РНР. Очевидно, что реализация серьезных динамических Web-документов в этих технологиях неосуществима без передачи исходной информации от клиента на сервер. При изложении CGI были рассмотрены способы, которыми на сервер могут быть переданы данные. Было сказано, что задача написания функций, реализующих тот или иной алгоритм раскодирования информации и интерпретации строки параметров возлагается на программиста. На каком бы языке сценарий написан бы ни был, если этот язык не имеет соответствующих функций, то программисту придется заботиться и о решении этой совсем не простой задачи. В этом смысле выгодно отличается РНР, который был специально разработан для работы с Web-документами. Если PHP-сценарию была передана строка параметров, вне зависимости от использовавшегося для этого метода, все эти параметры становятся автоматически доступны в сценарии. Иными словами, если серверу была передана строка valuel=aaa&value2=%8E%8F%90, то в сценарии на момент выполнения программы эти данные будут в распоряжении программиста в виде массива. Никаких перекодированний и никаких интерпретаций строк параметров выполнять не потребуется.
В DHTML обращение к значениям данных возможно через объектное представление документа.
Теперь попробуем качественно оценить быстродействие средств рассматриваемых технологий программирования. Учитывая то, что для написания CGI-сценариев может применяться любой язык программирования, в том числе и компилируемые - С, Pascal, именно в этой технологии потенциально может быть достигнута наивысшая скорость обработки информации и генерации Web-документов. Однако следует учесть, что при каждом обращении к CGI-сценарию операционная система сервера выполняет его загрузку с диска в оперативную память. Данный процесс занимает некоторое время. При повышении нагрузки на сервер время, требуемое для чтения файла с диска, увеличивается, и эта задержка может оказаться существенной при формировании документа.
Язык РНР обладает меньшим быстродействием при обработке больших объемов информации, однако интерпретатор команд РНР находится в оперативной памяти сервера постоянно, и готов к исполнению программного кода РНР. Благодаря этому никаких обращений к жесткому диску сервера не требуется. Кроме того, если верить разработчикам, с версии 4 этого языка он уже является полу-компилятором - перед выполнением исходный код программы однократно на этапе трансляции преобразуется в промежуточный байт-код, который в последствии интерпретируется. Такой подход позволяет добиться большей производительности, чем по строковая интерпретация и проверка синтаксиса на этапе выполнения, существовавшие в предыдущих версиях.
Построение Web-серверов на базе серверной операционной системы Microsoft Windows 2003 Server не должно принести значительные финансовые затраты на приобретение программного обеспечения. Это связанно с тем, что в настоящее время в ВС МО РФ широко распространены продукты компании Microsoft и на их закупку не придётся тратить значительные финансовые средства. Отметим, что все средства для создания Web-серверов с технологиями CGI или РНР (Web-сервер Apache, сам язык РНР) могут быть получены бесплатно без нарушений каких бы то ни было лицензий.
Выбор оптимального с точки зрения быстродействия решения возможен лишь при сравнении нескольких способов решения одной задачи с применением различных технологий.
Оптимальной платформой для проекта будет, уже ставшей классической, связка Apache+MySQL+PHP под ОС на базе Windows. Рассмотрим компоненты.
ОС Microsoft Windows 2003 Server
MW 2003 Server - это полная многозадачная многопользовательская операционная система (точно также как и другие версии Windows). Она обеспечивает полный набор протоколов TCP/IP для сетевой работы, включая драйверы устройств для многих популярных карт Ethernet, SLIP (SerialLineInternetProtocol, обеспечивающие вам доступ по TCP/IP при последовательном соединении), PLIP (ParallelLineInternetProtocol), PPP (Point-to-PointProtocol), NFS (NetworkFileSystem). Поддерживается весь спектр клиентов и услуг TCP/IP, таких как FTP, telnet, NNTP и SMTP.
Apache 3.0.1
Особенности сервера:
1. поддержка согласования кодировок клиента и сервера как при выдаче документов пользователю, так и при обработке пользовательского ввода (при вводе поддерживаются как GET, так и POST);
2. выдача правильных кодировок символов, в том числе и на кириллице;
. выдача при необходимости заголовка Expires: для proxy серверов;
. выдача корректных заголовков Vary: и ETag, в результате возможно корректное кэширование документов (если proxy-cacheсовместим с НТТР/1.1);
5. автоматическое перенаправление клиента на URL в нужной кодировке;
В сервере реализовано совмещение нескольких методов согласования кодировок клиента и сервера:
1. через заголовки клиента Accept-Charset: и/или Accept: text/x-cyrillic ... Если сервер знает о том charset, который запросил клиент, то эти заголовки имеют высший приоритет для сервера, вне зависимости от его настройки на nativecharset;
2. через поиск в имени сервера названия одной из сконфигурированных кодовых страниц;
3. через поиск в префиксе запрошенного URI названия одной из сконфигурированных кодовых страниц;
4. через явное указание соответствия "номер порта - кодировка";
5. через конфигурацию кодовых страниц по умолчанию для различных типов клиентских программ в случае, когда сервер может опознать клиентскую программу (иногда среду, в которой работает клиентская программа);
6. для разных серверов и/или директорий - по отдельности. Т.е. для каждой директории или виртуального сервера можно указать свой набор директив, которые будут работать от этого узла дерева и "ниже";
7. в случае принятия сообществом единой транспортной кодировки, необходимо будет оставить только ее в сервере, независимо от физического способа представления данных документов.
Некоторые особенности:
1. администратор сервера сам определяет - в каких случаях должны использоваться разные кодовые страницы. Администратор сервера,
2. также, может самостоятельно создавать таблицы перекодировки и
3. подключать их к серверу. Администратор сервера может указывать характерные признаки клиентской программы (User-agent: заголовок) и соответствующий данной клиентской программе charsetпо-умолчанию;
4. администратор сервера может указать клиентские программы, которые неадекватно воспринимают MIME, для них такие заголовки сервером не будут выдаваться;
5. администратор сервера может указать приоритет в выборе сервером charset между URL и User-agent;
. администратор сервера может определить реакцию сервера на некорректно запрошенный charset (т.е. выдавать ли запрошенный документ в таком случае в charsetпо-умолчанию);
СУБД MySQL 5.5SQL - это реляционная система управления базами данных. То есть данные в ее базах хранятся в виде логически связанных между собой таблиц, доступ к которым осуществляется с помощью языка запросов SQL. Mysql - свободно распространяемая система, т.е. платить за ее применение не нужно. Кроме того, это достаточно быстрая, надежная и, главное, простая в использовании СУБД, вполне подходящая для не слишком глобальных проектов.
Работать с Mysql можно не только в текстовом режиме, но и в графическом. Существует очень популярный визуальный интерфейс (кстати, написанный на PHP) для работы с этой СУБД. Называется он PhpMyAdmin. Этот интерфейс позволяет значительно упростить работу с базами данных в Mysql.позволяет пользоваться всеми достоинствами браузера, включая прокрутку изображения, если оно не умещается на экран. Многие из базовых SQLфункций работы с данными в PhpMyAdmin сведены к интуитивно понятным интерфейсам и действиям, напоминающим переход по ссылкам в Internet. Но, тем не менее, стоит все же поработать и в текстовом режиме.
Основные свойства пакета MySQL:
1. много поточность, поддержка нескольких одновременных запросов;
2. оптимизация связей с присоединением многих данных за один проход;
3. записи фиксированной и переменной длины;
4. ODBC драйвер в комплекте с исходником;
5. гибкая система привилегий и паролей;
6. до 16 ключей в таблице. Каждый ключ может иметь до 15 полей;
7. поддержка ключевых полей и специальных полей в операторе CREATE;
8. поддержка чисел длинной от 1 до 4 байт (ints, float, double, fixed), строк переменной длины и меток времени;
9. интерфейс с языками С и perl;
10. основанная на потоках, быстрая система памяти;
11. утилита проверки и ремонта таблицы (Jsarnchk);
12. все данные хранятся в формате IS08859_1;
13. все операции работы со строками не обращают внимания на регистр символов в обрабатываемых строках;
14. псевдонимы применимы как к таблицам, так и к отдельным колонкам в таблице;
15. все поля имеют значение по умолчанию. INSERT можно использовать на любом подмножестве полей;
16. легкость управления таблицей, включая добавление и удаление ключей и полей.
Программно - аппаратное обеспечение клиента
Клиентская часть системы предусматривает использование Интернет - браузера. В настоящее время Интернет - браузеры представляют собой комплексное приложение для обработки и вывода разных составляющих вебстраницы и для предоставления интерфейса между веб-сайтом и его посетителем. Практически все популярные браузеры распространяются бесплатно или "в комплекте" с другими приложениями: InternetExplorer(совместно с Microsoft Windows), Mozilla Firefox (бесплатно, свободное ПО, совместимо с некоторыми дистрибутивами Linux, например Ubuntu), Safari(совместно с MacOSX и бесплатно для Microsoft Windows), Opera
(бесплатно начиная с версии 8.50), Google Chrome (бесплатно), Avant (бесплатно). Каждый из представленных браузер имеет ряд своих преимуществ и недостатков. Для выбора одного из них для использования на клиентской части создаваемой системы, за основу были взяты результаты испытательных исследований. Эти исследования проводились специалистами компании Tom'shardwareguide. Исследования проводились с целью определения следующего перечня характеристик каждого браузера:
1. времени запуска;
2. использования памяти;
. соответствия стандартам языка javascript;
. соответствие стандартов языка разметки HTML 5 и CSS.
Наиболее выгодным по результатам проведённого исследования представляется браузер Google Chrome. Этот браузер решено взять на вооружение клиентской части системы. Помимо хороших рекомендаций полученных от исследователей, он имеет ряд преимуществ. Он распространяется совершенно бесплатно, имеет открытый программный код, а также легко расширяем за счёт установки новых плагинов.
На основании разработанной во второй главе модели был создан программный прототип, включающий в себя следующие подсистемы:
1. подсистема регистрации пользователей;
2. подсистема идентификации и авторизации пользователей;
3. подсистема первоначального ввода и редактирования личных данных;
4. подсистема просмотра информации о пользователе;
5. подсистема обмена личными сообщениями между пользователями;
6. подсистема планирования, распределения и учета нарядов;
7. подсистема просмотра нарядов;
8. подсистема администрирования.
Главная страница представляет собой календарь на месяц и меню в верхней
части страницы, содержащее две ссылки, с помощью которых можно перейти в
подсистемы "идентификации и авторизации" и "регистрации
пользователей".
Рисунок 11 - Главная страница сайта
Зарегистрироваться в системе может любой желающий в одной из 5 категорий профиля: