Системы голосования на web серверах


Содержание

Скрипт для голосования своими руками на PHP и MySQL с использованием AJAX
(изменения от 03.01.2012)

Часто на различных сайтах мы видим блоки с опросом общественного мнения. Как сделать подобный скрипт, для проведения голосования на своем сайте, да еще и таким образом, чтобы при выборе нужного пункта страница не перегружалась целиком, а изменялся только блок с опросом и сразу показывал результаты. Об этом и пойдет речь в данной статье.

Важно!
Для того, чтобы пример работал корректно, необходимо:
1. Все файлы должны быть записаны в кодировке UTF-8.
2. Скрипты должны выполняться на веб-сервере, а не запускаться в браузере, как файл.

Скачать пример можно здесь, 3,1 Кб

Пример состоит из 5 различных файлов, рассмотрим каждый из них в отдельности.

Файл dbconnect.php

Служит для соединения с базой данных, для создания необходимой таблицы и для заполнения её примером нашего голосования.

В нашем случае база данных состоит из одной таблицы с тремя полями:
id – идентификатор записи;
title – название записи;
votes – количество голосов, отданных за эту запись.

Первоначально таблица заполняется следующими значениями:

id title votes
1 Куда вы сегодня пойдете NULL
2 Никуда
3 В кино
4 В клуб
5 В магазин
6 Другое

Запись, для которой поле votes имеет значение NULL – считаем названием опроса, которое содержится в поле title.

Файл showcontent.js

Содержит в себе AJAX-функцию showContent() для обновления контента без перезагрузки страницы. Подробное описание работы данной функции приведено в статье «AJAX и JavaScript. Загрузка контента без перезагрузки страницы».

Файл functions.php

Содержит описание двух функций, применяющихся нами в программе.

Функция drawForm() отображает форму для голосования.

Функция drawResults() отображает результаты голосования.

Данные для построения формы и вывода результатов берутся из базы данных.

Файл index.php

Основной файл скрипта голосования. Здесь мы рассмотрим его основную часть. Как мы видим — тело документа состоит из контейнера contentBody.

При загрузке этой страницы мы сперва проверяем, было ли уже произведено голосование. Проверку осуществляем через переменную cookie, поскольку это является наиболее простым случаем. Если голосование произведено не было, то мы выводим в контейнер contentBody форму для голосования. Если же пользователь уже голосовал — выводим результаты поиска.

Файл vote.php

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

Поскольку, выполнение этого файла вызывается через AJAX функцию showContent(), то перезагрузки всей страницы не происходит и результаты выполнения файла помещаются в контейнер contentBody.

Профессиональный Web-сервер — этапы подготовки и создания

В статье использованы отрывки из новой книги А. и Г. Фроловых «Создание Web-приложений», которая выйдет в издательстве компьютерной литературы «Русская Редакция».

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

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

Наиболее распространенные области применения Web-приложений — это Интернет-магазины, биржи, электронные конференции (доски объявлений), системы общения в реальном времени, предназначенные для обмена информацией между пользователями Интернета, системы видеоконференций, проводимых в Интернете, Интернет-телефония и т.д.

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

Эти и некоторые другие особенности накладывают ограничения на технологии, применяемые при создании Web-приложений; как следствие, большинство хорошо проверенных и удобных методов и средств проектирования обычных приложений оказываются непригодными. Например, если нужно организовать доступ к базе данных через Интернет, то едва ли вам удастся ограничиться такими средствами быстрого проектирования приложений, как Borland Delphi, Microsoft Visual C++ или Microsoft Visual Basic (хотя отдельные компоненты Web-приложений можно создавать с применением этих инструментов).

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

Иногда в прессе можно встретить утверждения о том, что со временем приложения, ориентированные на Интернет, вытеснят традиционные программы, такие как текстовые редакторы или электронные таблицы. На наш взгляд, если это и случится, то только тогда, когда рядовому пользователю станут по карману высокоскоростные каналы доступа в Интернет. Так что пока традиционные программы и приложения для Интернета не конкурируют, а органично дополняют друг друга. И такая ситуация, на наш взгляд, сохранится еще довольно долго.

Системы асимметричного доступа в Интернет (с применением модема и спутниковых технологий) позволяют «загружать» данные из Интернета в компьютер пользователя поистине с «космической» скоростью, исчисляемой сотнями килобайт в секунду. К сожалению, в обратном направлении данные идут намного медленнее, так как они проходят через модем и обычную телефонную линию. Так что, несмотря на значительное ускорение процесса загрузки файлов и просмотра Web-страниц, асимметричный спутниковый доступ все же не позволяет создавать полноценные Интернет-приложения, заменяющие многие привычные для вас программы.

Тем не менее для разработчика Web-приложений и программистов высокие скорости означают реальную возможность загрузки из Интернета программных продуктов и пакетов исправлений за приемлемое время.

Что же касается подключения к Интернету небольших и средних компаний, то сегодня вполне доступен по ценам высокоскоростной доступ по обычной телефонной линии с применением технологии асимметричных абонентских цифровых линий ADSL. На линиях ADSL достигается скорость получения данных из Интернета порядка 7,5 Мбит/с, а в обратном направлении — до 1,5 Мбит/с. Единственный недостаток — относительно высокая стоимость трафика.

Этапы создания Web-приложения

Хотя создание простейших Web-серверов и домашних Web-страниц доступно многим, разработка Web-приложений — непростая задача. Если для создания обычного приложения достаточно какого-либо одного инструментального средства (Microsoft Visual C++, Microsoft FoxPro, Inprise Delphi и т.п.), то Web-программисту намного труднее: ему приходится иметь дело со многими, подчас не вполне совместимыми между собой технологиями.

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

Рис. 1. Этапы создания Интернет-магазина.

Разработка проекта

Разумеется, создание нового Web-приложения необходимо начинать с разработки проекта. На этом этапе следует выяснить, что же, собственно, нужно сделать и каким именно образом. Хотя этап разработки проекта обычно выполняется в тесном взаимодействии с заказчиком, далеко не всегда заказчик представляет себе возможности Интернет-технологий и свои реальные потребности.

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

Хорошо, если у вас уже есть опыт создания проектов. Тогда вы сможете предложить заказчику готовое решение, которое можно использовать после некоторых доработок.

Регистрация доменного имени

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

Разработка дизайна

Очень важный этап — разработка дизайна. Дизайн определяет внешний вид приложения, в котором оно предстанет перед пользователями. Возможно, у заказчика уже имеется разработанный ранее фирменный стиль.

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

Размещение Web-сервера

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

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

Установка и настройка

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

Интеграция с платежными системами

Проектирование Интернет-магазина требует проработки вопроса об оплате товара. Поскольку в России кредитные карточки пока еще не слишком широко распространены, большинство Интернет-магазинов — это по сути системы сбора заказов. Оплата же выполняется банковским переводом денежных средств или каким-либо другим традиционным способом.

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

Разработка серверного и клиентского ПО

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

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

Витрины в Интернет-магазине относятся к клиентскому ПО. Как и в обычном магазине, они предназначены для предоставления потенциальным покупателям полной информации о товаре, а также для отбора приобретаемого товара в корзину (разумеется, в Интернет-магазине используется специальная «электронная» корзина).

Обработка изображений и звука

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

Создание или приобретение компонентов

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

Готовые модули придется приобрести и для подключения к таким внешним системам, как платежные системы и биржи. Эти модули реализуют защищенные алгоритмы передачи данных (например, номеров кредитных карточек или приказов на приобретение или продажу ценных бумаг). Самостоятельная разработка таких модулей, как правило, чрезвычайно трудоемка, а порой даже невозможна.

Верстка статических страниц HTML

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

Если Web-сервер хранит только статическую информацию, изменяющуюся лишь эпизодически, он может содержать набор одних только статических документов HTML (а также графических иллюстраций, звуковых файлов и т.п.). Для создания таких документов можно использовать практически любой текстовый редактор (даже простейший Microsoft Notepad), хотя есть и мощные средства визуального проектирования страниц HTML.

Обычно статические страницы HTML создает Web-дизайнер, перерабатывая материал, полученный от заказчика. Этот процесс не требует никаких познаний в области программирования, но предполагает наличие художественного вкуса и навыков работы с программами обработки графики.

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

Программирование динамических страниц

В тех случаях, когда Web-сервер должен не только «поставлять» информацию своим посетителям, но и получать от них какие-либо данные или файлы, необходимо создавать так называемое активное Web-приложение. Помимо статических страниц HTML, такое приложение содержит компоненты, динамически создающие страницы HTML «на лету». Разработка таких компонентов требует обязательного участия профессионального программиста. Помимо традиционных языков программирования, таких как С++ или Pascal, Web-программист должен владеть языками, разработанными специально для проектирования Web-приложений: JavaScript, Visual Basic Scripting Edition, Perl, PHP и др.

Настройка процедур обслуживания

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

Тестирование и опытная эксплуатация

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

Обучение персонала

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

Организация рекламной кампании

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

Приступаем к изучению Web-технологий

Чтобы быстрее добиться получения практического результата, мы предлагаем свой план изучения приемов разработки Web-приложений. Этот план предполагает постепенное продвижение от простого к сложному.

Первый этап: язык HTML и Web-сервер

Прежде всего вам предстоит изучить основы языка разметки гипертекста HTML (Hypertext Markup Language), являющегося одним из краеугольных камней многих Интернет-технологий. Именно с его помощью создаются страницы Web-серверов.

На рис. 2 схематически показаны темы, которые мы рекомендуем изучить в рамках первого этапа. Стрелочками указана рекомендуемая последовательность изучения материала.

Рис. 2. Изучение HTML и способов установки Web-сервера.

Сам по себе язык HTML относительно несложен, однако эта простота обманчива. В силу ограниченности его возможностей и ряда других обстоятельств порой приходится немало потрудиться, чтобы получить желаемый результат. Одна и та же страница может по-разному отображаться в браузерах различных типов (и даже в браузерах одного и того же типа, но разных версий), поэтому вопросам совместимости с браузерами необходимо уделять особое внимание.

Чтобы ускорить загрузку страниц, необходимо минимизировать общий объем расположенных на них иллюстраций. Эта работа предполагает знакомство с технологиями обработки изображений.

Другой непростой вопрос — разработка дизайна страниц сервера, создаваемых с применением HTML. Дизайн предполагает определение внешнего вида страниц, выбор шрифтов для текста, создание графических иллюстраций, выбор размеров и взаимного расположения текстовых блоков и иллюстраций и т.п.

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

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

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

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

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

Завершив первый этап обучения, вы сможете самостоятельно открыть в Интернете свою персональную Web-страничку или персональный сайт.

Второй этап: активные Web-страницы

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

Для того чтобы «оживить» ваш сайт, помимо анимированных графических изображений, состоящих из нескольких сменяющих друг друга кадров, приходится прибегать к программированию на языках сценариев — JavaScript или Visual Basic Scripting Edition.

Второй этап освоения Web-технологий следует начинать с изучения наиболее распространенного языка сценариев JavaScript, а также динамического языка разметки страниц DHTML (Dynamic HTML). Далее необходимо ознакомиться с аплетами Java, придающими динамичность страницам HTML и пригодными для решения ряда других задач.

Клиентские сценарии размещаются внутри Web-страниц и запускаются (как интерпретируемые программы под управлением браузера) на компьютере посетителя Web-сайта. Существуют еще и серверные сценарии; о них мы скажем ниже.

Если вы освоили языки JavaScript, DHTML и аплеты Java, это еще не означает, что вы можете приступить к созданию сложных Web-приложений. Тем не менее данный этап очень важен для дальнейшего изучения.

К сожалению, различные браузеры по-разному интерпретируют клиентские сценарии, что приводит к появлению непростой проблемы совместимости. Для серверных сценариев, работающих под управлением Web-сервера, таких проблем не существует.

Третий этап: активный Web-сервер с базой данных MS SQL

Вооружившись знаниями HTML и JavaScript, вы можете смело переходить к следующему, третьему этапу освоения Web-программирования. Он предполагает изучение технологий, позволяющих получать данные от посетителей Web-сайта и обрабатывать их на Web-сервере, обращаясь при необходимости к СУБД. Мы полагаем нужным изучить на этом этапе активные серверные страницы ASP (Active Server Pages), применяемые в Web-сервере Microsoft Internet Information Server (IIS) для создания сложных интерактивных Web-приложений.

Страницы ASP содержат только что упоминавшиеся серверные сценарии на языках JavaScript или VB Script. Поэтому, чтобы успешно создавать страницы ASP, вам необходимо освоить один из этих языков. Применение VB Script достаточно хорошо освещено в литературе и прежде всего в документации, поставляемой Microsoft. Кроме того, вам необходимо изучить средства создания страниц ASP, которые предоставляет программисту сервер IIS.

Практически любой Интернет-магазин, а также сложные информационные Web-сайты хранят информацию в базах данных. Мы расскажем об использовании серверов СУБД Microsoft SQL Server 7.0 и SQL Server 2000, применяемых на платформе Microsoft Windows NT 4.0 и Windows 2000 Server. Что же касается сайтов, созданных с применением широко распространенной операционной системы Linux, то там популярны такие бесплатные или условно-бесплатные СУБД, как MySQL.

Для доступа к данным, хранящимся в СУБД, используются специальные языки программирования. Например, в СУБД Microsoft SQL Server применяется язык Transact-SQL. Этому языку посвящено множество неплохих изданий, с которыми вам стоит ознакомиться перед разработкой Web-приложений с базами данных.

Мы рассмотрим применение СУБД Microsoft SQL Server и объектов ADO (ActiveX Data Objects). Технология ADO предоставляет в распоряжение программиста простой и удобный набор объектов и интерфейсов, позволяющих эффективно выполнять все операции с базами данных из сценариев ASP.

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

Четвертый этап: расширение возможностей Web-сервера

Хотя знания, полученные вами на третьем этапе, позволят создавать достаточно сложные Web-сайты, до разработки профессиональных Web-приложений еще далеко. Дело в том, что хотя возможности сценариев ASP и велики, все равно их оказывается недостаточно. Так или иначе, вам, скорее всего, придется создавать собственные расширения Web-сервера в виде дополнительных программных модулей. Этому мы предлагаем посвятить четвертый этап изучения Интернет-технологий (рис. 3).

Рис. 3. Возможности расширения функциональности Web-сервера.

Программы CGI. Самый старый и распространенный способ расширения возможностей Web-сервера — создание так называемых программ CGI, реализующих стандартный шлюзовой интерфейс (Common Gateway Interface, CGI). Такие программы способны получать от посетителей различные данные и обрабатывать их, обращаясь при необходимости к базам данных и другим системным компонентам.

Программы CGI можно составлять на различных языках программирования — С, С++, Perl, Pascal, Java и т.д. Язык Perl особенно удобен, так как, во-первых, он содержит множество необходимых для этой работы функций, а во-вторых, доступен в различных операционных системах, в том числе Linux, Solaris, Microsoft Windows NT/2000.

Если вы разрабатываете программы CGI на языке С++, то можете использовать библиотеку стандартных шаблонов STL (Standard Template Library). Она заметно облегчит работу с такими структурами данных, как динамически расширяемые массивы, словари и списки.

Расширения ISAPI. ISAPI — это программный интерфейс сервера Microsoft IIS (Internet information Server Application Program Interface). По своим функциональным возможностям модули ISAPI аналогичны программам CGI, однако работают быстрее за счет того, что расположены в одном адресном пространстве с сервером IIS.

Чтобы создавать расширения ISAPI, вы должны в совершенстве владеть языками программирования C и C++, а также функциями программного интерфейса ОС Microsoft Windows. Заметную помощь в организации обработки данных может оказать упомянутая выше библиотека шаблонов STL.

Элементы управления ActiveX. Современные версии ОС Microsoft Windows содержат множество программных компонентов, созданных с применением модели компонентных объектов COM (Component Object Model) и элементов управления ActiveX. Сервер Microsoft IIS предоставляет в распоряжение разработчиков сценариев ASP наборы готовых элементов управления ActiveX, предназначенные для выполнения самых разных функций, — таких, как обработка данных, полученных от посетителей сайта, и доступ к СУБД.

Вы можете использовать готовые элементы управления ActiveX или создавать собственные (в частности, предназначенные для передачи электронной почты или выполнения каких-либо нестандартных операций). При этом имеет смысл использовать библиотеки шаблонов Microsoft ATL (Active Template Library) и STL, значительно облегчающие создание таких элементов в среде разработки Microsoft Visual Studio.

Страницы PHP. Еще один способ создания активных Web-серверов — использование технологии предварительной обработки гипертекста PHP. PHP — это сокращение от «PHP: Hypertext Preprocessor» (известно также как сокращение от Personal Home Page — персональные домашние странички). Эта технология во многом напоминает технологию ASP, однако использует свой язык программирования сценариев и доступна на многих платформах (в том числе Microsoft Windows и Linux).

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

Пятый этап: будьте на переднем крае технологий Интернета

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

Расширяемый язык разметки XML. Относительно недавно получил применение новый язык расширяемой разметки гипертекста XML (eXtensible Markup Language), являющийся подмножеством другого языка — стандартного языка обобщенной разметки документов SGML (Standard Generalized Markup Language). Этот язык, в частности, позволяет отделить представление данных от самих данных, что облегчает разработку Интернет-приложений. На базе XML создано немало стандартов обмена бизнес-информацией, которые позволяют интегрировать разнородные системы схожего назначения.

Язык VML. Вместе с браузером Microsoft Internet Explorer 5.0 появился векторный язык разметки VML (Vector Markup Language). Этот язык позволяет рисовать в окне браузера сложные векторные иллюстрации, не перегружая каналы данных большими объемами передаваемой информации. Например, для рисования графика Web-сервер передает браузеру лишь координаты его вершин, а не полное графическое изображение. В результате страница загружается намного быстрее.

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

Хотя теоретически аплеты Java (как и любые другие программы Java) должны быть работоспособны на любой компьютерной платформе в соответствии с принципом «написано однажды, работает везде», на практике это не всегда так. Программы Java работают под управлением интерпретирующей программы — виртуальной машины Java. Реализации этой машины для разных платформ имеют свои особенности, что и накладывает ограничение на переносимость программ Java.

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

Что же касается языка VML, то он полностью исключает необходимость в аплетах Java или элементах управления ActiveX для рисования на страницах HTML векторных графических изображений.

Тем не менее для просмотра страниц с графикой, реализованной средствами VML, у посетителя должен быть установлен браузер Microsoft Internet Explorer версии 5.0 или более поздней версии.

Язык VRML. Язык виртуального моделирования реальности VRML (Virtual Reality Modeling Language) позволяет создавать трехмерную интерактивную анимацию. Если вы когда-либо играли в трехмерные компьютерные игры, то знаете, что это такое.

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

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

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

Уже сегодня мобильные телефоны умеют принимать и передавать информацию через Интернет, в том числе звуковую, а также обладают зачаточными способностями распознавания речи. Вероятно, в будущем человек будет меньше пользоваться клавиатурой и мышью, а больше микрофоном и другой звуковой аппаратурой.

Чтобы ваши знания не устарели, постоянно следите за развитием Интернета и всего, что с ним связано.

Необходимое программное обеспечение

На первом этапе для обучения основам HTML вам будет достаточно установить на свой компьютер ОС Microsoft Windows любой современной версии и два наиболее распространенных браузера — Microsoft Internet Explorer версии 5.0 или более новой и Netscape Navigator версии не старее, чем 4.76.

Для обработки графических изображений удобнее всего Adobe Photoshop версии 5.5 или 6.0, содержащей дополнительные возможности, удобные для Web-дизайнеров. Для создания статических страниц HTML можно воспользоваться средой разработки Web-сайтов Microsoft FrontPage 2000, входящей в состав Microsoft Office 2000.

Примеры Web-приложений, которые мы будем рассматривать, были отлажены в среде Microsoft Windows 2000 Server, в состав которой входит Internet Information Server 5.0. В крайнем случае допустимо начинать работу в среде Microsoft Windows NT Server 4.0 с дополнительно установленным пакетом обновлений Service Pack 6.0 и Web-сервером IIS 4.0, входящим в комплект Microsoft Option Pack for Windows NT Server.

Для работы с базами данных мы использовали Microsoft SQL Server 2000. Можно заменить эту СУБД на Microsoft SQL Server версии 7.0 (с пакетом обновления Service Pack 2) или даже на Microsoft SQL Server версии 6.5 (с пакетом обновления Service Pack 5), но при этом следует учитывать ограничения старых версий.

Создание, редактирование и отладку страниц ASP лучше всего выполнять с помощью инструментального средства Microsoft InterDev версии 6.0, входящего в комплект Microsoft Visual Studio 6.0.

Для изучения разделов, посвященных языку программирования Perl, мы пользовались интерпретатором ActivePerl версии 5.6, который можно бесплатно загрузить с Web-сайта сообщества ActiveState (http://www.activestate.com). Кроме того, вам потребуется средство предварительной обработки HTML-страниц PHP 4.0, также доступное через Интернет по адресу http://www.php.net.

Требования к компьютеру

Требования к конфигурации компьютера полностью определяются установленным ПО. Наиболее требовательна к ресурсам операционная система Microsoft Windows 2000 Server и СУБД Microsoft SQL Server 2000. Несмотря на то, что для этих программных средств рекомендуется объем оперативной памяти 256 Мбайт и более, в крайнем случае для разработки и отладки Web-приложений хватит и 128 Мбайт. В рабочий Web-сервер, предназначенный для коммерческих приложений, мы рекомендуем установить не менее 256 Мбайт оперативной памяти.

Что касается дисковой памяти, то для разработки и изучения Web-технологий достаточно диска размером 10-15 Гбайт. Объем дисков для реализации коммерческих проектов полностью определяется объемом информации, хранимой на создаваемом вами Web-сайте. Хотя на первый взгляд эти требования достаточно высоки, сегодня, когда оперативная и дисковая память заметно подешевела, эти цифры не выглядят шокирующими.

Для комфортной работы мы рекомендуем оборудовать компьютер процессором Pentium III с тактовой частотой не ниже 500 МГц, хотя в крайнем случае хватит и 350 Мгц.

Необходимо также подумать о надежном подключении вашего компьютера или локальной сети к Интернету. Наилучший способ, несомненно, подключение по линии ADSL или ISDN; тем не менее можно работать и с модемом. Если вам удается соединиться с провайдером Интернета на скорости от 24 до 33,6 Кбит/с, этого достаточно. При ненадежном соединении стоит попробовать установить модем другого типа. Мы рекомендуем использовать профессиональные модели модемов: хотя их стоимость может превышать 200 долл., в некоторых случаях только с помощью таких модемов удается добиться сколько-нибудь надежного соединения.

Те, кому посчастливилось подключить свою телефонную линию к современной цифровой АТС, могут попробовать установить модем с протоколом V.90, способным работать на скоростях 48-56 Кбит/с. В некоторых районах Москвы и в других городах России создаются домашние локальные сети, подключенные к Интернету.

И, наконец, для ускорения загрузки страниц Web-сайтов и файлов мы рекомендуем установить систему асимметричного спутникового доступа, такую как НТВ Интернет (http://www.ntvi.ru). Хотя эта система и не даст никакого выигрыша при копировании файлов на создаваемые вами Web-сайты, она обеспечит реальную (и относительно недорогую по сравнению с другими системами быстрого доступа в Интернет) возможность загружать ПО и документацию большого объема за приемлемое время.

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

Кроме того, желательно подключить к компьютеру принтер. Помимо того, что он даст вам возможность распечатывать исходные тексты создаваемых программ и документацию, принтер позволит узнать, как выглядят страницы вашего сервера на печати.

Реальные примеры

В основу этой статьи и планирующейся к выпуску книги «Создание Web-приложений», положен опыт создания реальных проектов в Интернете, накопленный нами и нашими партнерами, в частности, Web-студией Spektrum Web Development (http://www.spektrum.org.ru). Ниже мы кратко расскажем о некоторых таких проектах в порядке возрастания сложности их реализации.

Наша домашняя Web-страничка

Свой первый опыт создания сайтов в Интернете мы получили в процессе работы над собственной домашней страничкой. Сейчас, после регистрации нашего собственного домена frolov.pp.ru, она преобразована в Web-сайт, расположенный по адресу http://www.frolov.pp.ru.

Как и любая домашняя страница, эта страница содержит персональную информацию, перечень наших проектов, предложения услуг и другую аналогичную информацию (рис. 4).

Рис. 4. Персональный Web-сайт авторов.

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

Сайт службы восстановления данных DataRecovery.Ru

Служба восстановления данных DataRecovery.Ru предоставляет услуги по ликвидации последствий сбоев программного обеспечения и аппаратуры, повлекших за собой потерю компьютерных данных. На Web-сайте службы DataRecovery.Ru (рис. 5, http://www.datarecovery.ru) посетители могут заполнить подробную анкету с описанием случившейся неприятности, а также вызвать через Интернет экстренную помощь. Сообщение об экстренном вызове передается оператору службы DataRecovery.Ru на пейджер или мобильный телефон. О том, как этого удалось добиться, мы расскажем в одной из следующих статей.

Рис. 5. Сайт службы восстановления данных DataRecovery.Ru.

Сайт компании NetTrader.Ru

Компания NetTrader.Ru предоставляет услуги дисконтного брокера, позволяющие проводить торги ценными бумагами через Интернет в реальном времени. Посетители сайта компании (рис. 6) могут в реальном времени ознакомиться с котировками ценных бумаг, выдать приказы на их продажу или приобретение, управлять собственным счетом, получать различные отчеты и обширную аналитическую информацию.

Рис. 6. Сайт компании NetTrader.Ru.

Данный сайт интересен тем, что в нем используются самые современные технологии компании Microsoft, такие как ASP, XML, VML и другие. В одной из следующих статей мы расскажем о том, как эти технологии применяются на сервере NetTrader.ru.

Авторы участвовали в разработке справочной (рис. 7) и обучающей (рис. 8) систем на этом сайте. При создании справочной системы использовались фреймы, сценарии JavaScript и каскадные таблицы стилей CSS. На ее примере можно показать, как создавать иерархически организованное меню, предназначенное для навигации по разделам разветвленной справочной системы.

Рис. 7. Справочная система сайта NetTrader.Ru.
Рис. 8. Обучающая система сайта NetTrader.Ru.

Обучающая система представляет собой набор связанных между собой последовательностей кадров с анимированными иллюстрациями. Каждая последовательность кадров рассказывает о выполнении тех или иных операций в системе NetTrader.Ru.

Сайт Центра эндохирургии и литотрипсии

Главная страница сайта Центра эндохирургии и литотрипсии (ЦЭЛТ), созданного компанией Spektrum Web Development, представлена на рис. 9. Сайт содержит подробную информацию о подразделениях центра с поэтажными планами, расписание приема врачей, цены и т.п.

Рис. 9. Сайт Центра эндохирургии и литотрипсии.

На наш взгляд, для разработчиков Web-приложений особый интерес представляет метод, примененный в этом сервере для обновления текущей информации без привлечения дизайнеров и специалистов по HTML. Он предполагает использование серверных элементов управления ActiveX, разработанных компанией Spektrum Web Development для работы с текстовыми файлами и файлами изображений. Такие файлы загружаются на Web-сервер при помощи протокола FTP, при этом их содержимое автоматически появляется на страницах сайта. Операция загрузки файлов не требует привлечения высококвалифицированных сотрудников.

Система сайтов издательства «Русская Редакция»

Система Web-сайтов, разработанная для издательства «Русская Редакция», представляет собой кластер из трех самостоятельных сайтов, два из которых предназначены для посетителей, а один — для «служебного» пользования. Этот кластер снабжен единой СУБД, реализованной на основе Microsoft SQL Server версии 7.0. Он имеет общий центр администрирования (серверное приложение), а также общие автоматические процедуры сопровождения, такие как резервное копирование данных, вычисление статистической информации, генерация прайс-листов и полных каталогов товара.

Рис. 10. Сайт издательства «Русская Редакция».

На сайте издательства «Русская Редакция» (рис. 10, http://www.rusedit.ru) представлена информация о книгах и сериях книг, которая считывается из базы данных и отображается в окне браузера. Система поиска, предусмотренная на этом сайте, также работает с базой данных книг. Посетители могут искать книги по самым разным критериям, таким как название книги, фамилия автора, название издательства, слова, встречающиеся в аннотации, номер ISBN и т.д.

Книжный Интернет-магазин IT Book (рис. 11, http://www.itbook.ru), созданный авторами статьи, обращается к той же базе данных, что и сайт издательства «Русская Редакция».

Рис. 11. Книжный Интернет-магазин IT Book.

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

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

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

Еще один интересный раздел Интернет-магазина (присутствующий и на сайте издательства) — лента новостей. Ее содержимое можно увидеть в правой части страниц, показанных на рис. 10 и 11. Ленту новостей заполняет администрация без привлечения Web-дизайнеров. Зарегистрированные посетители Интернет-магазина могут подписаться на получение сообщений ленты новостей по электронной почте.

Бэк-офис. В нашем случае это обычный Web-сервер, взаимодействующий с той же самой базой данных, которую использует Интернет-магазин IT Book и сайт издательства «Русская Редакция». На рис. 12 показана основная страница меню нашего бэк-офиса.

Рис. 12. Бэк-офис.

Здесь есть разделы, предназначенные для выполнения следующих операций:

  • работа с общей информацией, такой как сведения об издательствах, сериях книг и отзывах посетителей;
  • управление витринами Интернет-магазина и сайта издательства;
  • обработка заказов;
  • оформление доставки;
  • управление учетными записями администраторов системы и клиентов;
  • просмотр справочной информации по использованию функций бэк-офиса.
Илон Маск рекомендует:  Эффективный способ применения интерфейсов в mdi приложениях

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

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

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

Другие статьи из раздела

  • Программная платформа IBM для повышения эффективности бизнеса
  • ИБП для защиты серверов
  • Интегрированное решение для защиты центров обработки данных
  • На пути к построению единой платформы защиты данных
  • Виртуализация без ограничений

Поместить в блог

Комментарии к статье

Рекламные ссылки

Chloride
Демонстрация Chloride Trinergy
Впервые в России компания Chloride Rus провела демонстрацию системы бесперебойного электропитания Chloride Trinergy®, а также ИБП Chloride 80-NET™, NXC и NX для своих партнеров и заказчиков.

NEC Нева Коммуникационные Системы
Завершена реорганизация двух дочерних предприятий NEC Corporation в России
С 1 декабря 2010 года Генеральным директором ЗАО «NEC Нева Коммуникационные Системы» назначен Раймонд Армес, занимавший ранее пост Президента Shyam …

компания «Гротек»
С 17 по 19 ноября 2010 в Москве, в КВЦ «Сокольники», состоялась VII Международная выставка InfoSecurity Russia. StorageExpo. Documation’2010.
Новейшие решения защиты информации, хранения данных и документооборота и защиты персональных данных представили 104 организации. 4 019 руководителей …

МФУ Panasonic DP-MB545RU с возможностью печати в формате А3
Хотите повысить эффективность работы в офисе? Вам поможет новое МФУ #Panasonic DP-MB545RU. Устройство осуществляет

Adaptec by PMC
RAID-контроллеры Adaptec Series 5Z с безбатарейной защитой кэша
Опытные сетевые администраторы знают, что задействование в работе кэш-памяти RAID-контроллера дает серьезные преимущества в производительности …

Chloride
Трехфазный ИБП Chloride от 200 до 1200 кВт: Trinergy
Trinergy — новое решение на рынке ИБП, впервые с динамическим режимом работы, масштабируемостью до 9.6 МВт и КПД до 99%. Уникальное сочетание …

WEB-сервера

Веб-сервер — это сервер, принимающий HTTP-запросы от клиентов, обычно веб-браузеров, и выдающий им HTTP-ответы, обычно вместе с HTML-страницей, изображением, файлом, медиа-потоком или другими данными. Веб-серверы — основа Всемирной паутины.

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

Клиент, которым обычно является веб-браузер, передаёт веб-серверу запросы на получение ресурсов, обозначенных URL-адресами. Ресурсы — это HTML-страницы, изображения, файлы, медиа-потоки или другие данные, которые необходимы клиенту. В ответ веб-сервер передаёт клиенту запрошенные данные. Этот обмен происходит по протоколу HTTP.

Основное действие конечного пользователя в Интернете – это «переход на Web-страницу». На самом общем уровне это предполагает совместную работу пары приложений:

Web-браузера, такого как Firefox или Internet Explorer, который показывает в удобной для человеческого восприятия форме запрашиваемую страницу, которую он получает от…

Web-сервера, находящегося, как правило, на удалённой машине, который отвечает на запрос страницы потоком данных в формате HTML или аналогичном.

С браузерами имеют дело пользователи, которые подходят к их выбору и анализу с надлежащей тщательностью. Напротив, серверы видны только техническому персоналу сайтов. Более того, хотя существует множество различных Web-серверов, около 90% всех сайтов, согласно недавним исследованиям Netcraft, работают всего на двух из них — Apache и Internet Information Server (IIS). Оба эти сервера – тщательно проработанные продукты, обладающие не только очень длинным списком встроенных возможностей, но и процветающим «вторичным рынком» книг, дополнений, консультаций, провайдеров и т.д.

Web-сервер оценивается по целому ряду важнейших параметров:

Эффективность: как быстро он отвечает на запрос?

Масштабируемость: продолжает ли сервер работать надёжно, когда к нему одновременно обращаются много пользователей?

Безопасность: совершает ли сервер только те операции, которые должен? Какие возможности он предлагает для аутентификации пользователей и шифрования потока обмена информацией? Делает ли его использование более уязвимыми соседние приложения или хосты?

Работоспособность: какие у сервера режимы отказа и аварийные ситуации?

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

Требования к платформе: на каких платформах возможно использование сервера? Предъявляет ли он особые требования к аппаратной платформе?

Управляемость: легко ли установить и обслуживать сервер? Совместим ли он с организационными стандартами по ведению журналов, аудиту, оценке затрат и т.д.?

· Apache — свободный веб-сервер, наиболее часто используемый в UNIX-подобных операционных системах;

· IIS от компании Microsoft, распространяемый с серверными ОС семейства Windows

· nginx — свободный веб-сервер,

· lighttpd — свободный веб-сервер.

· Google Web Server — веб-сервер, основанный на Apache и доработанный компанией Google.

· Resin — свободный веб-сервер приложений.

· Cherokee — свободный веб-сервер, управляемый только через web-интерфейс.

· Rootage — веб-сервер, написанный на java.

· THTTPD — простой, маленький, быстрый и безопасный веб-сервер.

«Лёгкие» Web-сервера

Обычно «лёгкий» подразумевает простой, легко инсталлируемый, хорошо налаженный, нетребовательный и устойчивый – меньшего размера и менее сложный, чем Apache и IIS, которые в попытке удовлетворить свой большой рынок превратились в довольно громоздкие конструкции.

Достаточно лёгкие серверы открывают возможности, недоступные лидерам рынка и другим «тяжёлым» альтернативам. К примеру, весь сервер может поместиться в одном файле. Это удобно для разработчика, вы можете экспериментировать с новыми идеями, запуская их на лёгком сервере, инсталляция которого занимает секунды. Также из-за своей нетребовательности лёгкие серверы успешно функционируют на машинах, которые просто не могут выдержать тяжесть IIS.

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

Почти все лёгкие Web-серверы имеют в той или иной степени открытый исходный код. Если нам требуется особое поведение Web-сервера, то описанные ниже серверы настолько малы, что их легко понять и, следовательно, усовершенствовать. Эти Web-серверы – отличный исходный материал для проектов, в которых Web-серверы встраиваются в специальное оборудование или в специфические приложения, предназначенные для работы на компьютерах общего назначения. Они также широко используются на обычных Web-сайтах:

· YouTube использует lighttpd для быстрой доставки архивированного контента, например, видео;

· cdServe работает на CD-дисках «German Woodworking Machinery and Tools»;

· LiteSpeed «отметился» в twitter, www.funnyoride.com, www.airliners.com, WordPress.com, fanfiction.com, SlashGear, www.forumactif.com и в других заметных Web-сайтах;

· OpenSUSE, RubyOnRails, MarkaBoo и несколько других заметных сайтов опираются на Mongrel;

· thttpd работает на ht.com, mtv.com, The Drudge Report, garfield.com и др.

Лёгкие серверы играют свою роль даже в реальных вычислительных центрах, включая перечисленные выше солидные сайты и не только их. Особо высокопроизводительные сайты сегментируют свои операции, чтобы извлечь максимальную выгоду из кэширования, прокси-серверов и т.д. Сайт на основе Apache, к примеру, может иметь архитектуру, в которой медленно изменяющиеся изображения доставляются посредством «минималистского» Web-сервера из выделенной файловой системы. То, что видит в действительности конечный пользователь – это результат командной работы Apache и одного или нескольких дополнительных Web-серверов, каждый из которых играет роль, в которой он превосходит остальных. Такая конструкция может дать очень быстрые результаты с минимальными затратами на вычисления.

Хотя имеют много общего, внутри данной категории есть и различия. Большинство «лёгких» Web-серверов написаны на C, но есть и ряд успешных реализаций на других языках, в том числе на Erlang, Java, Lisp, Lua, Perl, Python и Tcl.

Все лёгкие Web-серверы меньше и конфигурируются легче, чем Apache. Некоторые из них быстрее, чем Apache, некоторые намного быстрее; в других упор сделан на безопасность, бесперебойную работу при больших загрузках, расширяемость или экономию памяти. В любом случае в них можно полностью разобраться, что уже нереально для Apache.

К числу очень маленьких Web-серверов относятся:

· Cheetah Server, содержащий менее тысячи строк на C.

· DustMote, очень маленький Web-сервер, реализованный в одном Tcl-исходнике размером примерно 3000 байт.

· fnord занимает менее 20K, в зависимости от платформы и конфигурации. Несмотря на маленький размер, он поддерживает виртуальный хостинг, CGI и keep-alive.

· ihttpd, имея менее 800 строчек C, умеет обслуживать страницы, включая CGI, посредством inetd.

· mattows поддерживает CGI, насчитывая при этом всего лишь 600 строк на C.

· Scrinchy, несмотря на маленький размер — около 30 KB — поддерживает примечательно много языков сценариев, включая специализированный стековый язык под названием Sy.

Маленький размер не препятствует серьёзному использованию этих серверов; fnord, например, обслуживает тысячи одновременных соединений.

Возможно, наиболее впечатляющая категория легких серверов по достижениям – высокопроизводительные серверы:

· cghttpd – минимальный Web-сервер, который можно рассматривать как эксперимент по использованию асинхронных средств, доступных в ядрах Linux серии 2.6.

· darkhttpd – быстрый однопоточный сервер HTTP/1.1.

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

· Kernux – модуль ядра Linux, который обеспечивает выполнение HTTP-демона.

· lighttpd – пятый по популярности Web-сервер в мире. Он оптимизирован под большое количество одновременных соединений: Типичный сценарий – использование lighttpd как сервера, разгружающего основной сервер, для выдачи статического контента.

· LiteSpeed Web Server – коммерческий лёгкий Web-сервер, в котором особый упор сделан на производительность и безопасность. LiteSpeed Technologies Inc. заявляет об ускорении в шесть раз для статического контента и несколько более скромных показателях для интерпретируемых страниц.

· Miniature JWS, известный также как tjws — написанный на Java Web-сервер, который обрабатывает сервлеты, JSP и тысячи параллельных соединений, занимая 77 килобайт. Его автор характеризует его так: «на 10% быстрее, чем Apache 2.x.»

· Yaws – высокопроизводительный сервер HTTP/1.1, написанный на Erlang.

Многие Web-серверы реализованы как классы или библиотеки, разработанные для встраивания в большие приложения. Среди них особенно интересны:

· EHS – «встраиваемый HTTP сервер,» класс C++, разработанный для встраивания в большие C++ приложения; и

· Embedded TCL Web Server, простейший Web-сервер, поддерживающий SSL и Basic Authentication и при этом фантастически быстрый – по замерам автора, не менее быстрый, чем lighttpd и AOLserver. Содержит меньше сотни строк Tcl.

На языке Python реализованы несколько Web-серверов, которые заполняют необычные ниши, в том числе:

· cdServer — маленький простой http-сервер на Python, «разработанный для выдачи (статического) контента с CD-ROM». Имеет ограниченные возможности в обслуживании динамического контента. У нас есть несколько проектов, которые включают доставку непортящихся «live CD», и инструменты типа cdServer являются для них критическими.

· edna – остроумный MP3-сервер на Python, основанный на HTTP.

Есть и другие интересные лёгкие Web-серверы, реализованные на Perl и на других, не так хорошо известных, языках:

· Camlserv – полный Web-сервер, написанный на ocaml и нацеленный на «высокоинтерактивные Web-страницы». Умещается в нескольких тысячах строчек ocaml, большинство из которых посвящено специальным возможностям работы с MySQL и HTML.

· dhttpd протоколирует обращения в том же формате, что и Apache. Имеет встроенный Perl-интерпретатор для поддержки CGI, виртуальный хостинг, IPv6, управление пропускной способностью и возможности безопасности.

· DNHTTPD написан на Perl для UNIX. Он поддерживает виртуальные хосты, SSL соединения, CGI и другое.

· Jellybean – написанный на Perl сервер Perl Object Server, основанный на HTTP.

· lns.http – общая Web-среда на LISP HTTP/1.1.

· Mongrel – библиотека и сервер для HTTP, написанные на Ruby.

· Nanoweb – быстрый, устойчивый Web-сервер, написанный на PHP. Имеет обширный список возможностей, включая полное соответствие HTTP/1.1, контроль обращений, аутентификацию, виртуальный хостинг, SSL совместимость и т.д.

· Naridesh – написанный на Perl Web-сервер.

· OpenAngel – написан на Perl. Безопасность.

· Xavante – HTTP/1.1 Web-сервер, написанный на Lua.

· XSP написан на C# и выполняет роль ведущего узла ASP.NET.

Мир Web-серверов состоит не только из Apache и IIS, их гораздо больше. В вашем распоряжении широкий выбор альтернативных решений – настолько маленьких, что их можно полностью понять, и при этом достаточно быстрых для серьёзных приложений.

Не нашли то, что искали? Воспользуйтесь поиском:

Лучшие изречения: Для студентов недели бывают четные, нечетные и зачетные. 9440 — | 7438 — или читать все.

188.64.174.135 © studopedia.ru Не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования. Есть нарушение авторского права? Напишите нам | Обратная связь.

Отключите adBlock!
и обновите страницу (F5)

очень нужно

Создание системы голосования на Perl/CGI

Использование заблокированных DBM-файлов с формами, управляемыми через CGI

Не секрет, что программное обеспечение становится все более сложным и в системы добавляются все новые уровни в целях сохранения модульности компонентов. Главный результат — простота обслуживания и масштабируемость систем. Но иногда использование таких методик — просто излишество, которое приводит к излишне усложненному программному обеспечению. В других случаях разработчики выбирают излишне сложную, но хорошо знакомую технологию вместо изучения более простой, но менее знакомой альтернативы.

В конце концов, если под рукой имеется только молоток, то каждая проблема кажется гвоздем.

Меня недавно попросили разработать маленькую программу подсчета избирательных бюллетеней для университетской студенческой организации. Это был простой проект, поскольку обслуживалось бы не более 500 студентов курса за одну неделю; потом результаты подсчитывались бы и удалялись.

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

CGI: Простота против сложности

Perl казался очевидным выбором для данного проекта — он поддерживается на большинстве обычных платформ, а также существует множество удобных библиотек, доступных в репозитории Perl-библиотек CPAN.

Что касается лежащей в основе архитектуры, Common Gateway Interface (CGI) был первым широко используемым подходом для расширения возможностей Web-серверов в области предоставления интерактивного содержимого. Разработчики часто говорят о превосходстве более новых стандартов, таких как JSP, .NET, mod_perl, PHP и ISAPI, и они правы, указывая на недостатки CGI. Но в случае с данным проектом CGI-сценарий, который считает голоса для нескольких сотен пользователей, едва ли образует крупномасштабное приложение, поскольку вся информация о бюллетенях может легко сохраняться в системной RAM Web-сервера. Это позволяет загружать в память всю справочную таблицу каждый раз, когда пользователь передает запрос на чтение или запись данных.

Более того, логическая последовательность составления бюллетеня, его подтверждения и подсчета результатов подходит для разбиения логических данных на три различных физических файла. Это минимизировало бы попытки открыть заблокированные файлы.

Также не должен был быть серьезной проблемой и откат транзакции, происходящий иногда из-за заблокированного файла. Независимо от того, произошел откат транзакции из-за проблем сети или из-за заблокированного файла, результат был бы одинаков: пользователь просто щелкнул бы мышкой второй (или третий) раз, и его голос, вероятнее всего, засчитался бы в одной из этих попыток. Однако о таком поведении нужно помнить, поскольку различные приложения могут не простить недоступность для процесса параллельных транзакций.

Для данного проекта использование CGI предлагает несколько преимуществ:

  • Не нужно каких-либо специальных расширений Web-сервера.
  • Не нужна система управления базами данных (в данной ситуации).
  • Можно выполнять поэтапную разработку.
  • Его можно даже обновить позже через использование акселераторов, таких как mod_perl.

Однако помните, что из-за ограничений платформы, CGI-приложения (создающие новые процессы) на Win32-системах работают намного медленнее. Кроме того, Web-сервер Apache все же считается Linux™/UNIX®-приложением, хотя может отлично работать под Windows®. В разделе «Ресурсы» приводятся ссылки на информацию о других (не IIS) Web-серверах для систем Win32, а также на классическое описание исходной спецификации CGI на сайте National Center for Supercomputing Applications (NCSA).

Функциональный дизайн

Давайте перейдем к главной задаче этого маленького проекта — функциональности дизайна.

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

Возникает проблема многократного голосования. В принципе, можно подумать о том, как сделать невозможным множественное голосование с использованием нескольких адресов e-mail, но можно, также, ограничить подсчет голосов таким образом, чтобы только один голос был разрешен для одного адреса e-mail. Это верификационное письмо содержит ссылку на исходный CGI-сценарий, который позволяет сравнить эту ссылку с записанной в локальном DBM-файле. Если две ссылки совпадают, делается запись о бюллетене в таблице castBallot и голос учитывается. Если ссылки не совпадают, никакой записи не делается и голос считается не подтвержденным. Генерируется новое верификационное письмо с новой записью в базе данных. При этом перезаписываются все записи о черновых бюллетенях, связанные с данным почтовым адресом, эффективно начиная процесс с самого начала.

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

Давайте рассмотрим систему подробно.

Подробности: Hash-ключи

Использование хешированных ключей для создания ассоциативных массивов в Perl позволяет оперативно разрабатывать комплексные структуры данных. Комбинируя эту возможность с возможностью сохранять эти (произвольно комбинированные) структуры в бинарный DBM-файл, можно разработать эквивалент крошечной системы управления базами данных. Отсутствующий компонент, позволяющий все это сделать, предоставляется модулями MLDBM и MLDBM::Sync .

Модуль MLDBM позволяет плавно сохранить в локальный файл комплексные Perl хеш-значения. Модуль MLDBM::Sync предоставляет возможность надежно заблокировать этот файл, используя методы $sync->Lock и $sync->ReadLock . После загрузки или сохранения интересующей нас структуры последующий вызов метода UnLock() сбрасывает I/O и освобождает переменную (дополнительная информация о модуле MLDBM::Sync приведена в документации по Perl — man 3 MLDBM::Sync ).

По существу, логика последовательности действий проста, что показано в листинге 1.

Листинг 1. Псевдокод логической последовательности

После разработки условного алгоритма оставалось создать объекты, которые соответствовали бы этой последовательности действий. Как я уже упоминал, необходимые структуры hash-данных извлекались и обновлялись при помощи связанных переменных и блокировки MLDBM -файла. Используемые объекты были больше похожи на интеллектуальные структуры, чем на полноценные объекты; данные передавались между ними способом, который распараллеливал переход бюллетеня из состояния черновика в окончательно подсчитанный бюллетень.

Другими словами, список бюллетеней использовался для создания DraftBallot , который, в свою очередь, использовался для создания классов CastBallot и BallotBox . Таким образом, обеспечивалась минимальная взаимосвязь с главной CGI-программой.

Хотя я понимаю, что обычно считается плохой практикой пользоваться конструкторами, которые основываются на внешних структурах, таких как файлы (поскольку они могут повредиться и привести к непредсказуемым результатам), код в данном случае было намного проще понять, сделав именно так. Поскольку Perl не полагается на указатели, я не вижу причин не использовать преимущества такого упрощения.

Подробности: E-mail

Разрешение пользователям посылать e-mail с вашего Web-сервера является рискованным ходом, поскольку спаммеры потенциально могут использовать ваш хост для передачи незатребованных писем. Для минимизации такой возможности сценарий всегда выполняет проверку для определения того, передается ли письмо по допустимому адресу. Вы можете усилить защищенность системы, изменяя метод проверки voter_is_okay() в классе DraftBallot и сверяясь со списком допустимых адресов e-mail. В сущности, это потребовало бы предварительной регистрации пользователей для голосования.

Другие методы предотвращения дублирования голосов могли бы собирать IP-адреса или устанавливать cookies на клиентской машине, но я отбросил эти подходы, поскольку многие студенты используют общедоступные терминалы в кампусе.

SASL-аутентификация

Многие сервис-провайдеры позволяют пересылать почту только из почтовых клиентов, использующих SASL-аутентификацию. SASL (Simple Authentication and Security Layer) — это метод добавления поддержки аутентификации в основанные на соединениях протоколы, в котором протокол содержит команду для идентификации и аутентификации пользователя на сервере и при необходимости реализует защиту последующих взаимодействий по протоколу. Если его использование обусловлено, между протоколом и соединением вставляется уровень защищенности.

При использовании SASL-аутентификации у вас имеется два варианта: либо указать сценарий на машине, который может перенаправлять e-mail, используя корректные параметры доступа, либо переписать сценарий для обращения к внешнему SMTP-серверу напрямую, используя модули Perl Net::SMTP_auth и Authen::SASL (второй вариант медленнее).

Подробности: Несекретные бюллетени

Вызов метода $castBallot->dumpHTMLentrys() возвращает подробный отчет, кто за кого голосовал. На практике я закомментировал бы этот вызов, запланировав Web-сервер на отключение после завершения выборов, используя Linux-команду at.

При отключенном сервере можно раскомментировать этот раздел и перезапустить Web-сервер, временно установив его на прослушивание только адреса localhost. Затем полные результаты можно возвратить любому, кто переходит по предварительно переданной ссылке, которую можно взять через копию, переданную на выделенную для этого свободную учетную запись e-mail.

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

Обдумывая эту схему работы, я понял, что необходимость использования основанной на GET -запросе верификационной ссылки и незакодированных ссылок делают их чтение и создание фальшивых подтверждений (основанных на специфическом e-mail-адресе и некоторых известных верификационных ссылках) тривиальной задачей. Для того чтобы воспрепятствовать этому и одновременно разрешить легкую отладку через незакодированные ссылки, я решил добавить уникальный идентификатор в каждый черновик бюллетеня.

Этот идентификатор был основан на идентификаторе процесса операционной системы (process identifier — PID), выполняющегося сценария. Он объединялся со случайным числом, для того чтобы затруднить предсказание URL для подтверждения черновика бюллетеня. Я беспокоился об этом, потому что индивидуум со злыми намерениями мог бы разобрать на части видимые URL-шаблоны, чтобы создать фальшивые бюллетени для подтверждения. Это одна из частей кода, которая не транслировалась напрямую в версию mod_perl , поскольку она полагается на использование PID выполняющегося экземпляра Perl, который объединяется со случайными цифрами. Если форма генерируется из повторно используемого модуля mod_perl , PID-номер не обязательно будет меняться между активизациями модуля.

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

Подробности: Схема файлов

Требуется три типа каталогов на Web-сервере:

  • Записываемый каталог для сохранения передаваемых пользователем данных.
  • Область для запуска из нее CGI.
  • Область статических данных (например, CSS, изображений и, возможно, файла, содержащего подробные инструкции).

Также обратите внимание на то, что права доступа вероятнее всего должны быть скорректированы и Web-сервер мог выполнять запись в каталог для DBM-файлов.

В листинге 2 приведен процесс создания некоторых типичных каталогов на Web-сервере.

Листинг 2. Настройка каталогов на Web-сервере

Собственно говоря, абсолютно необходимы только каталоги cgi-bin (/var/www/cgi-bin) и DBM (/var/www/db), поскольку они хранят исполняемые сценарии и данные о голосовании соответственно. Схема, приведенная в листинге 1, специфична для Linux, а имена пользователя и группы процесса Web-сервера могут быть другими. Существенным является то, что есть несколько компонентов, которые нужно поместить в корректную область файловой системы, чтобы они были доступны для Web-сервера. После копирования файлов поддержки в их каталоги обновите все псевдонимы в конфигурационных файлах Web-сервера (например, httpd.conf).

После создания каталогов по примеру листинга 2 скопируйте файлы из ZIP-архива в аналогичные подкаталоги вашей системы. Самое важное: файлы ballot, DraftBallot.pm, BallotBox.pm и CastBallot.pm должны находиться в каталоге cgi-bin. Необходимы только три нестандартных Perl-модуля. Процесс их установки представлен в листинге 3 (более подробно — в файлах README модуля).

Листинг 3. Установка Perl-модулей

Подробности: Статический DNS против динамического DNS

Хотя имелась возможность установить этот сервис на сайте с назначенным доменом и статическим IP-адресом, я чувствовал, что динамический DNS предложил бы определенные преимущества в плане защищенности. Обычно сервер не доступен из Web вовсе без статического IP-адреса, но динамический DNS-сервис позволяет мне установить временно разрешимое имя машины под другим доменом верхнего уровня. Это позволяет мне быстро появляться и исчезать из Интернета, минимизируя возможность встречи со злодеями. А лучше всего то, что данный сервис бесплатен.

Также стоит отметить, что может быть желательным настроить сервер на прослушивание порта с нестандартным номером (например, 8000), поскольку многие ISP блокируют входящие запросы на порту 80. Потом клиента (избирателя) можно было бы направить на сервер для голосования только через ссылку с хорошо известного статического адреса (например, Web-страницы школы). После завершения голосования сервер с Web-приложением мог бы быть полностью удален из Web удаленно без его остановки или перенастройки. Отсутствовали бы какие-либо уязвимости, влияющие на ссылающуюся страницу,которая может администрироваться кем-то другим (ссылки на дополнительную информацию по использованию динамического DNS-сервиса приведены в разделе «Ресурсы»).

Подробности: Вреден ли GET?

Браузеры могут сохранять состояние, передавая данные на страницы, используя методы GET и POST , а также через куки, содержащиеся в передаваемых на сервер заголовках. Для того чтобы подтвердить, что бюллетень был передан от реальной личности (или, по крайней мере, с активного адреса e-mail), черновики бюллетеней передаются на e-mail для подтверждения. Кроме того, могли бы использоваться сообщения cc: или bcc:. Как я уже упоминал, самым прямым способом сделать это — передать по HTTP структурированную GET -ссылку избирателю. Тем не менее, некоторые авторы утверждают, что GET -запросы, обновляющие записи — это плохая практика. Но в данном случае при последующих нажатиях ссылки просто будут принимать обновления текущего количества голосов для каждого кандидата, поэтому никакого вреда не предвидится.

Другие возможные улучшения

При использовании данного сценария можно и нужно учесть еще несколько соображений по защите приложения. Любая программа, позволяющая вводить данные извне, уязвима для злонамеренных действий (например, переполнение буфера и встроенные управляющие символы). Наоборот, использование отдельной процедуры для чтения и записи локальных DBM-файлов имеет как минимум одно преимущество: нет возможности для атак типа SQL-внедрение, когда нет SQL-базы.

Для фильтрации входящих данных я установил переменные $CGI::DISABLE_UPLOADS и $CGI::POST_MAX в очень строгие значения. Дополнительно я рекомендую следующее:

  • Удаляйте из всех входящих переменных все неожидаемые символы и укорачивайте их до разумных пределов.
  • Внутри сценария хранится много данных времени исполнения. Положительной стороной такой практики заключается в меньшем количестве файлов для распространения и установки прав доступа. Отрицательная сторона — пользователи могут не захотеть изменять код, и код станет менее понятным. Возможным компромиссом может быть использование таких клуджей (kludges) как DATA для сохранения данных в конце сценария.
  • Блокирование файлов — это очень коварная операция, изобилующая условиями для состязаний. Кажется, в каждую рекомендацию о корректном способе блокировки файлов, которую я находил, позже вносились исправления. Я попытался минимизировать время, когда файлы находятся в открытом состоянии, и использовал механизм, предоставляемый для MLDBM -модуля.
  • Perl-модули не помещаются в отдельное место, отличное от CGI, поэтому они теоретически могут быть выполнены из каталога cgi-bin. Рекомендуется эти модули не настраивать как исполняемые.
  • PHP практически вездесущ на платформах Linux, поэтому я подумал бы о портировании этого сценария на PHP, если возникнет необходимость его переделать. Однако я не уверен в том, что есть PHP-эквивалент MLDBM -модулю.
  • Схема формы для голосования некоторыми может посчитаться нечестной, поскольку первый кандидат выделяется по умолчанию.
  • Я не использовал perldoc. А должен был.

Заключение

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

Ресурсы для скачивания

Похожие темы

  • Оригинал статьи «Build a Perl/CGI voting system» (EN).
  • «Управление Perl-персистенцией при помощи Pixie» (developerWorks, март 2003) — более гибкий подход к связыванию вашего Perl-проекта с реляционной базой данных.
  • «Надежный программист: Устраните условия для состязаний» (developerWorks, октябрь 2004) — как справиться с обычными условиями возникновения «гонок» на UNIX-подобных системах, в том числе, как корректно заблокировать файлы, использовать альтернативы блокировке файлов, управлять файловой системой и общими каталогами.
  • Загрузите исходный код для данной статьи.
  • Apache Foundation предоставляет исчерпывающую информацию по настройке и защите Web-сервера Apache.
  • В документации по Apache mod_perl приведены отличные советы по блокировке файлов, условиям возникновения состязаний и другие хитрости.
  • The World Wide Web Consortium — ссылки на National Center for Supercomputing Applications, а также простое и функциональное определение CGI.
  • Домашняя страница Линкольна Стейна (Lincoln Stein) предлагает отличные советы и ссылки на справочные материалы, относящиеся к использованию модуля Perl CGI.
  • Отличный текст Дэмиана Конвея (Damien Conway) по Object Oriented Perl (Manning, январь 2000) содержит прекрасное введение в детали объектно-ориентированного программирования на Perl.
  • Доверяете ли вы электронным или Интернет системам голосования? Прочтите заставляющую задуматься статью Ребекки Меркьюри (Rebecca Mercuri) «Электронное голосование», критикующую любую систему голосования, не предоставляющую неоспоримых бумажных бюллетеней.
  • Netscape Cookie Specification предлагает лаконичное описание возможностей куки.
  • Comprehensive Perl Archive Network предоставляет доступ к потрясающему воображение списку полезных Perl-модулей.
  • Dynamic DNS Website предоставляет разрешимые доменные имена для серверов с динамически назначаемыми IP-адресами. Этот сервис работает для Win32, Mac, UNIX и GNU/Linux.
  • CGI-программирование с Perl (O’Reilly, июль 2000) — хороший, хотя и устаревший обзор советов, трюков и потенциальных ловушек, которые встречаются при написании CGI-приложений.
  • Полезный очерк «GET считается вредным. Иногда» предлагает совет по написанию CGI-приложений, основанных на POST и GET -методах.
  • Разработайте ваш следующий Linux-проект, используя пробное программное обеспечение IBM, доступное для загрузки непосредственно на developerWorks.

Комментарии

Войдите или зарегистрируйтесь для того чтобы оставлять комментарии или подписаться на них.

Курсовая работа: Разработка системы электронного голосования на странице промо-сайта олимпиады «Мастера Photoshop»

Федеральное агентство по образованию

ГОУ ВПО «Омский государственный технический университет»


Языковые средства создания гипердокументов

Разработка системы электронного голосования на странице промо-сайта олимпиады «Мастера Photoshop»

Выполнила: студентка гр. ИТМ-317

ГЛАВА 1. Теоретические основы разработки электронного голосования

1.1 Понятие и общая идеология системы электронного голосования

1.2 Области применения систем электронного голосования

1.3 Языковые средства разработки систем электронного голосования

ГЛАВА 2. РАЗРАБОТКА СИСТЕМЫ ЭЛЕКТРОННОГО ГОЛОСОВАНИЯ НА СТРАНИЦЕ ПРОМО-САЙТА ОЛИМПИАДЫ «МАСТЕРА PHOTOSHOP»

2.1 Требования к организации голосования

2.2 Написание скрипта для интернет-голосования

2.3 Интерфейс и дизайн блоков голосования на Web-страницах

2.4 Авторское право на разработку. Регистрация системы

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

Электронное голосование — термин, определяющий различные виды голосования, охватывающий как электронные средства голосования, так и электронные средства подсчета голосов. Технология электронного голосования могут включать в себя перфокарты, системы оптического сканирования и специализированные терминалы для голосования.

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

Тема является актуальной на современном этапе развития Российской Федерации, так как именно в данный момент в России реализуется такой проект как “Электронная Россия”, а создание электронного правительства предполагает и возможность электронного голосования как одного из его составляющих. Поэтому выбранная тема интересна для ознакомления. Также интересна не только важность данного направления развития технологий, но и существующие в данной отрасли проблемы. Моя тема курсовой работы связана с осуществлением электронного голосования на странице промо-сайта олимпиады «Мастера Photoshop». Целью Интернет-голосования является определение лучшей работы в образовательном сегменте сети Интернет по версии Интернет-пользователей. Голосование за работы проводится на сайте олимпиады «Мастера Photoshop» (www.omgtu.masteraphotoshop.ru)

Результаты Интернет-голосования доступны его участникам на официальнос сайте олимпиады немедленно, после прохождения процедуры верификации голоса. Результаты голосования отражаются в онлайн-режиме в общем списке работ по номинациям. На наш взгляд эта очень интересная и перспективная тема исследования в связи с постоянно возрастающей ролью информационных технологий в жизни общества. На сегодняшний день реализации электронного голосования во многом мешает стереотип о ненадежности результатов информационных систем. Нами было проведено тщательное исследование в области систем электронного голосования: рассмотрен мировой опыт создания таких систем, исследована ситуация в России, сформулированы проблемы, возникающие при реализации электронного голосования, и предложены направления путей их решения. С развитием электронного голосования граждане демократических стран получили много новых возможностей участия в политической жизни. Интерактивные ресурсы Интернет позволяют оперативно получать нужную информацию из различных источников, производить мониторинг общественного мнения, формировать его по определенным вопросам, а также оперативно оповещать ответственных лиц о реакции общества на то или иное решение. Самое же интересное в том, что заинтересованные граждане могут не менее оперативно узнать, как ответственное лицо отреагировало на высказанное ими мнение, и какое решение было принято в итоге. Актуальность проблемы не оставляет сомнений, тем более, что молодое поколение становится все боле и более “интернет — зависимым”. Для России с ее колоссальными расстояниями эта технология тоже может стать перспективной. Электронное голосование привносит большую оперативность и снижает затраты на проведение. Это в перспективе должно способствовать большему участию населения при решении важных вопросов общественно-политической жизни.

ГЛАВА 1 ТЕОРЕТИЧЕСКИЕ ОСНОВЫ РАЗРАБОТКИ ЭЛЕКТРОННОГО ГОЛОСОВАНИЯ

1.1 Понятие и общая идеология системы электронного голосования

Голосования в Интернет (Internet vote) приобретают все большую популярность. Многие интернет-ресурсы внедряют эти методы, для решения самого широкого спектра вопросов начиная с моментов, связанных с оценкой эффективности построения собственных web-сайтов, и заканчивая проведением серьезных социологических опросов. Когда необходимо обеспечить широкую географию голосования и, например, оценить отношение к рассматриваемым вариантам работ в программной среде Adobe Photoshop или определить период голосования неделей или месяцем, то соперничать с интернет — голосованием никакая система не сможет. Кроме того, выгодным аспектом этого способа является финансовая сторона, которая предполагает только разовую оплату труда программиста, вкладывающего выбранный механизм интернет-голосования в определенную программную реализацию.

Электронное голосование – термин, определяющий различные виды голосования, охватывающий как электронные средства голосования, так и электронные средства подсчета голосов. Технология электронного голосования могут включать в себя перфокарты, системы оптического сканирования и специализированные терминалы для голосования. Они также могут включать передачу избирательных бюллетеней и голосов по телефону, частным компьютерным сетям или через Интернет. Технология электронного голосования позволяет ускорить процесс подсчёта голосов, а также позволяет голосовать людям с ограниченными возможностями. Но в настоящее время ведутся споры о том, что электронное голосование может быть подвержено нарушениям. Лишь с первого взгляда, кажется, что при наличии такого количества персональных устройств на руках у россиян система электронного голосования будет элементарной. В реальности избирательный процесс, регламентируемый законодательством, накладывает массу условий.

Голосовать имеют право не все граждане, а только те, кто достиг совершеннолетия и считается дееспособным. Никто не может голосовать дважды. Кроме того, процесс волеизъявления должен быть анонимным и достаточно открытым для наблюдения и перепроверки полученного результата. Все это требует включения в разработку системы электронного голосования таких параметров, как идентификация пользователя (гражданина), деперсонификация собранных голосов, защита информации и т.п. На первом месте в разработке системы электронного голосования стоит информационная безопасность. Каким образом сервер избирательной комиссии подтвердит личность избирателя? Какими средствами можно предотвратить ложное голосование (от имени других избирателей)? Проблема имеет и обратную сторону: как избиратель может проверить, что он получил доступ именно к сайту избирательной комиссии, а не к мошенническому ресурсу? Ответить на эти вопросы может позволить система электронной цифровой подписи, функционирующей по принципу «открытого» и «закрытого» ключей. Электронные ключи (цифровые подписи), как серверу избирательного участка, так и голосующему гражданину, могут выдаваться уполномоченным агентством (в российском случае — это система центров, созданных Федеральным агентством по информационным технологиям). Доступ к сайту избирательной комиссии для волеизъявления граждан осуществляется при помощи «открытого» ключа. Результат голосования шифруется «закрытым» ключом и отправляется на сервер. А вот обеспечение анонимности голосования — это ответственность провайдеров. При проведении электронных выборов важно, чтобы не прослеживалась связь конкретного бюллетеня с определенным избирателем. В привычной схеме выборов достаточно убедиться, что бюллетень не подписан вашей фамилией. С применением схем электронного голосования избиратели уже не смогут самостоятельно убедиться, что информация, позволяющая идентифицировать их личность, не была прикреплена к бюллетеню при отправке на сервер голосования. Для обеспечения анонимности используются серверы деперсонификации, стирающие эту информацию. Для многих людей, не знакомых с принципами работы системы, это будет вопрос веры. Да и в целом доверие к электронным средствам голосования — одна из актуальнейших проблем.

Опросы в разных странах показали, что интерес к голосованию с помощью сети Интернет напрямую зависит от уровня образования человека и его возраста, но совсем не зависит от политических взглядов и уровня дохода. При этом основные два фактора (возраст и образование) повторяют общую картину по пользователям Всемирной сети. Таким образом, для электронного голосования, как и для современных средств коммуникаций, посредством Интернета, существует еще одна значительная проблема — обучение. Несмотря на все старания разработчиков, дистанционное волеизъявление пока остается технически сложным. Всемирная сеть — новая с точки зрения избирательного процесса среда, которую еще только предстоит «подстроить» под законодательство в области агитации и предвыборных кампаний. Если с ограничением голосования по времени сложностей нет, то запрет агитации накануне волеизъявления граждан — очередная практически не решаемая задача. Еще одна проблема, связанная именно со средой голосования, — это обеспечение бесперебойной технической работы системы. Известны случаи неожиданного «падения» даже крупных магистральных каналов. При этом технические проблемы глобального характера совершенно не обязательно должно быть случайными. Учитывая популярность сайта ЦИК России и избирательных комиссий уровнем ниже у хакеров, можно ожидать их повышенного интереса и к средствам электронного голосования.

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

Голосование по интернету с помощью специальных защищенных дисков, не единственный метод, разрабатываемый Центризбиркомом. Возможно, российские граждане смогут также выполнять свой гражданский долг с помощью мобильных телефонов, заполняя виртуальную бюллетень и отправляя её на соответствующий номер. Эту систему голосования недавно протестировали участники всероссийского молодежного лагеря «Селигер 2009». Участвовавший в эксперименте глава ЦИК Владимир Чуров заявил, что уже до конца года будет принят закон об электронном голосовании, и в марте 2010 граждане России получат альтернативу бумажным бюллетеням. А а 2011 году избирательные участки будут оборудованы веб-камерами — для того, чтобы каждый желающий мог пронаблюдать процесс выборов в интернете. Практика оборудования избирательных участков веб-камерами существует уже сейчас, правда, пока не распространена повсеместно. Например, в ряде городов России камеры снимали происходящее во время выборов в марте 2009 года — с 8 утра до 22:00. В частности, такие эксперименты проводились в Ростове-на-Дону, в Томской и Волгоградской областях, в республике Башкирия. Преимущества электронных форм голосования понятны, пожалуй, всем. Во-первых, голосуя через интернет или с помощью мобильных устройств, избиратели могут не утруждать себя походами на участки. Это особенно актуально для тех, кто находится далеко от дома, но хочет проголосовать. Возможность голосовать не только на определенном избирательном участке, зарегистрировавшись на нем предварительно, может повысить «явку» избирателей — ведь гражданам в таком случае придется прилагать меньше усилий. Кроме того, электронные выборы зачастую более удобны в труднодоступных уголках страны, где проблематично организовать участки.

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

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

1.2 Области применения систем электронного голосования

Интернет-голосование (Internet vote) подразумевает за собой различные формы голосования, начиная от изучения общественного мнения, референдумов и заканчивая политическими выборами, проводимыми через Интернет. Голосование на сайте — интерактивные сервисы, дающие возможность посетителям выразить свое мнение по заявленному владельцами сайта кругу вопросов (приложение 1). С помощью голосования можно:

1. исследования общественного мнения;

2. повышать лояльность посетителей сайта (вовлекая их в активные действия);

3. собирать информацию о посетителях сайта (в том числе маркетингового характера);

4. создавать информационные поводы (например, освещая проведение опроса и его результаты в различных интернет-СМИ);

5. получать в виде обратной связи от участников опроса материал для дальнейших публикаций, мероприятий и т.п.

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

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

По окончании голосования на сайте обычно публикуются в открытом доступе результаты в виде наглядных диаграмм

Кроме этого, существуют различные варианты голосований на сайте:

1. посетителю предлагается поставить оценку размещенной на сайте новости, статье, информации например, по 5-бальной шкале (приложение 4);

2. конкурс: посетителю предлагается проголосовать за тот или иное размещенный на сайте фото, видео, аудиоматериал, стихотворение, дизайн-проект и т.п. Затем объявляется работа-победитель, набравшая максимальное число голосов (приложение 7);

3. голосование на форуме: современный интернет-форум позволяет прикреплять к обсуждению голосование, таким образом, посетители сайта могут голосовать и в этой же ветке дискуссии высказываться по заявленной теме. Такой вариант опроса может быть организован не только владельцами форума, но и простым участником дискуссий.

4. для определения победителя в творческих конкурсах (приложение 8)

При проведении опроса возникает ряд проблем:

1. Технического характера: система управления сайтом (CMS) должна позволять

— размещать в нужном месте нужной страницы сайта требуемую форму опроса;

— следить за ходом опроса и публиковать его результаты;

— препятствовать «накрутке» посетителями сайта результатов опроса (фильтрация повторных голосований).

Как правило, современные CMS включают в себя один или несколько стандартных модулей, позволяющих хозяевам сайта самостоятельно организовывать различные виды опросов и голосований. Добавим также, что такое программное обеспечение дает возможность организаторам опроса в любой момент корректировать его результаты. Это надо учитывать при ознакомлении с результатами опросов, опубликованными на незнакомых вам сайтах, и относиться к ним с осторожностью.

2. Проблемы «социологического» характера:

— неопределенность портрета участника голосования (кто это: мужчина, женщина, студент, бизнесмен) – хотя подобные данные можно пытаться собирать;

— невысокая активность участников голосования. Владельцам сайта, желающим организовать свой опрос, нужно учитывать, что активность среднего Посетителя сайта крайне низка.

Если на сайте публикуются только «относительные» результаты опроса (в процентах), но не указывается число проголосовавших, часто это говорит о попытке скрыть неутешительно низкую статистику (например, менее 10 проголосовавших).

Активность посетителей можно пытаться увеличивать:

1. размещая форму опроса на видном месте, на большинстве страниц сайта;

2. выбирая актуальную для посетителей, острую тему для опросов;

3. активно поощряя Посетителей, побуждая их голосовать – в новостях сайта, в рассылках, на форуме и т.п.

4. активно освещая и комментируя результаты опроса.

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

Существуют также платные интернет — опросы, нередко связанные с проведением маркетинговых исследований специализированными компаниями (приложение 2) и Интернет-сервисы, специально посвященные социологическим и маркетинговым исследованиям Интернет-аудитории, например «Глас Рунета» VoxRu.Net (приложение 3)

Интернет-сервисы, специально посвященные социологическим и маркетинговым исследованиям Интернет-аудитории, например «Глас Рунета» VoxRu.Net.

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

В мире идут споры о возможности практического проведения Интернет-выборов и их безопасности для тайности волеизъявления граждан и достоверности, полученных в результате таких выборов результатов.

Несмотря на это, ряд стран, такие как Великобритания, Соединённые Штаты Америки, Эстония, уже применяли технологию Интернет-голосования на выборах различных уровней (от местных до парламентских). Наиболее крупным политическим событием, на которых применялась возможность Интернет-голосования, стали выборы Парламента Эстонии в марте 2007 года. Возможностью проголосовать с помощью Интернет воспользовались 30275 человек, то есть чуть более 3 % всех зарегистрированных избирателей.

1.3 Языковые средства разработки систем голосования

Электронное голосование можно осуществить с помощью языков программирования, которые имеют возможность работать с базами данных.

Примером таких языков могут послужить PHP, PERL , JavaScript, python, С++, BASIC, если его интпретаор установлен на сервере. Также осуществить голосование на сайте можно с помощью технологии AJAX основанной на JavaScript .

PHP — скриптовый язык программирования, созданный для генерации HTML-страниц на веб-сервере и работы с базами данных. PHP поддерживается подавляющим большинством хостинг-провайдеров.

К настоящему моменту PHP стал одним из самых популярных скриптовых языков, используемых для разработки простых и средних по уровню сложности интернет-голосований. Поддержка данного языка входит в состав услуг большинства виртуальных хостингов в России и других странах. Установка PHP под Windows является несложной и легко решаемой задачей. Подобная доступность делает этот язык еще более привлекательным для разработки сайтов и вынуждает хостинговые компании устанавливать и поддерживать PHP. Вся данная ситуация только играет на руку web-разработчикам. Меняя по каким-то причинам хостинг, практически исключаются проблемы с нахождением нового, что не всегда будет легко в случае использования других языков, отличных от PHP.

В области программирования для Сети PHP — один из популярнейших скриптовых языков благодаря своей простоте, скорости выполнения, богатой функциональности, кросс-платформенности и распространению исходных кодов на основе лицензии PHP.

Популярность в области построения веб-сайтов определяется наличием большого набора встроенных средств для разработки веб-приложений. Основные из них:

· Автоматическое извлечение POST и GET-параметров, а также переменных окружения веб-сервера в предопределённые массивы;

· Файловые функции успешно обрабатывают как локальные, так и удалённые файлы;

· Автоматическая отправка HTTP-заголовков;

· Работа с cookies и сессиями;

· Обработка файлов, загружаемых на сервер;

· Работа с HTTP заголовками и HTTP авторизацией;

· Работа с XForms;

· Работа с удалёнными файлами и сокетами

В настоящее время PHP используется сотнями тысяч разработчиков. Согласно рейтингу Tiobe, базирующемся на данных поисковых систем, в декабре 2009 года PHP находится на 3 месте среди языков программирования (уступая Java и C), поднявшись за год на две позиции. К крупнейшим сайтам, использующим PHP, относятся Facebook, В контакте, Wikipedia, YouTube. [10]

Синтаксис PHP подобен синтаксису языка С. Некоторые элементы, такие как ассоциативные массивы и цикл foreach, заимствованы из Perl. Для работы программы не требуется описывать какие-либо переменные, используемые модули и т. п. Любая программа может начинаться непосредственно с оператора PHP.

Perl — это сокращенное название языка программирования Practical Extraction and Report Language — практический язык извлечений и отчетов. Язык Perl родился в недрах операционной системы Unix как реакция одного талантливого программиста на ограниченную возможность стандартных средств системного администрирования в этой операционной среде. [1]

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

Начнем с того, что у языка Perl имеет место характерная особенность от других языков, используемых для написания Web-приложений. Обработка команд в нем происходит как одно целое, независимо от их последовательности. Поэтому, дать какую-либо точную характеристику или формулу для синтаксиса языка Perl нельзя. Он имеет свободный формат, как например в языке С++ (при программировании на сервере почти не используется из-за уязвимости в плане безопасности) и по своей «архитектуре» очень похож на язык С++.

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

Perl не имеет конкретных и точных правил, распространяющих на все эго элементы. Все сделано для удобства программиста.

Первым в цепочке достоинств языка Perl – интерпретируемость. Интерпретатор Perl отличается от традиционных интерпретаторов тем, что программа транслируется в промежуточный байт-код, и только после этого выполняется. В традиционных интерпретаторах каждый вводимый оператор интерпретируется и сразу же выполняется, что может приводить к синтаксическим ошибкам во время выполнения. Perl-программа свободна от этого «недостатка», так как все синтаксические ошибки обнаруживаются во время трансляции в байт-код.

Вторым преимуществом использования Perl для решения соответствующих задач (мы имеем в виду сетевые возможности) является его доступность для большинства серверных платформ:

· практически все варианты UNIX;

Третьим преимуществом языка Perl можно назвать его практическую направленность, т. е. он создавался из практических соображений решения задач администрирования и разработки приложений для UNIX, а это означает, что он обладает следующими важными свойствами:

Под полнотой Perl понимается его способность решать все возникающие в системе UNIX в связи с ее администрированием задачи.

Четвертое преимущество использования Perl связана с его дополнительными возможностями, позволяющими выполнять не только традиционные задачи администрирования UNIX и обработки текстовых файлов.

И в завершение перечисления достоинств Perl обратим внимание на пятое преимущество использования: так как изначально этот язык являлся свободно распространяемым, то вся наработанная документация также доступна совершенно бесплатно, а так как Perl, как язык сценариев очень популярен, то в Internet находится море документации по его применению для решения разнообразных задач. [5]

Наиболее широко Perl используется для разработки инструментов системного администрирования, однако в последнее время он получил огромную популярность в области разработки Internet-приложений: CGI-сценарии, системы автоматической обработки электронной почты и поддержки узлов Web. [8]

Python (па́йсон, па́йтон, пито́н) — высокоуровневый язык программирования общего назначения с акцентом на производительность разработчика и читаемость кода. Синтаксис ядра Python минималистичен. В то же время стандартная библиотека включает большой объём полезных функций.

Python поддерживает несколько парадигм программирования, в том числе структурное, объектно-ориентированное, функциональное, императивное и аспектно-ориентированное. Основные архитектурные черты — динамическая типизация, автоматическое управление памятью, полная интроспекция, механизм обработки исключений, поддержка многопоточных вычислений и удобные высокоуровневые структуры данных. Код в Питоне организовывается в функции и классы, которые могут объединяться в модули (которые в свою очередь могут быть объединены в пакеты). [8]

Python поддерживает динамическую типизацию, то есть тип переменной определяется только во время исполнения. Поэтому вместо «присваивания значения переменной» лучше говорить о «связывании значения с некоторым именем». Все значения в Питоне являются объектами, в том числе функции, методы, модули, классы.

Язык обладает чётким и последовательным синтаксисом, продуманной модульностью и масштабируемостью, благодаря чему исходный код написанных на Питоне программ легко читаем.

Python — стабильный и распространённый язык. Он используется во многих проектах и в различных качествах: как основной язык программирования или для создания расширений и интеграции приложений. На Python реализовано большое количество проектов, также он активно используется для создания прототипов будущих программ.

Он сочетает прозрачный синтаксис с мощной (но необязательной) объектно-ориентированной семантикой. Python доступен почти на всех существующих ныне платформах и обладает очень высокой переносимостью между платформами.

Развитие языка происходит согласно чётко регламентированному процессу создания, обсуждения, отбора и реализации документов PEP (Python Enhancement Proposal) — предложений по развитию Python. [3]

AJAX — не самостоятельная технология, а концепция использования нескольких смежных технологий. AJAX базируется на двух основных принципах:

— использование технологии динамического обращения к серверу «на лету», без перезагрузки всей страницы полностью, например:

— с использованием XMLHttpRequest (основной объект);

— через динамическое создание дочерних фреймов;

Записки IT специалиста

Технический блог специалистов ООО»Интерфейс»

  • Главная
  • Создаем свой сайт. Как устроен и работает веб-сервер

Создаем свой сайт. Как устроен и работает веб-сервер

  • Автор: Уваров А.С.
  • 15.03.2020

Что такое веб-сервер? С точки зрения обывателя — это некий черный ящик, который обрабатывает запросы браузера и выдает в ответ веб-страницы. Технический специалист засыплет вас массой малопонятных терминов. В итоге начинающим администраторам веб-серверов бывает порой трудно разобраться во всем многообразии терминов и технологий. Действительно, область веб-разработки динамично развивается, но в основе многих современных решений лежат базовые технологии и принципы, о которых мы сегодня и поговорим.

Если не знаешь с чего начать, то начинать надо сначала. Чтобы не запутаться во всем многообразии современных веб-технологий нужно обратиться к истории, чтобы понять, с чего начинался современный интернет и как развивались и совершенствовались технологии.

HTTP-сервер

На заре развития интернета сайты представляли собой простое хранилище специальным образом размеченных документов и некоторых связанных с ними данных: файлов, изображений и т.п. Для того, чтобы документы могли ссылаться друг на друга и связанные данные был предложен специальный язык гипертекстовой разметки HTML, а для доступа к таким документам посредством сети интернет протокол HTTP. И язык, и протокол, развиваясь и совершенствуясь, дожили до наших дней без существенных изменений. И только начавший приходить на смену принятому в 1999 году протоколу HTTP/1.1 протокол HTTP/2 несет кардинальные изменения с учетом требований современной сети.

Протокол HTTP реализован по клиент-серверной технологии и работает по принципу запрос-ответ без сохранения состояния. Целью запроса служит некий ресурс, который определяется единым идентификатором ресурсаURI ( Uniform Resource Identifier), HTTP использует одну из разновидностей URI — URL (Uniform Resource Locator) — универсальный указатель ресурса, который помимо сведений о ресурсе определяет также его физическое местоположение.

Задача HTTP-сервера обработать запрос клиента и либо выдать ему требуемый ресурс, либо сообщить о невозможности это сделать. Рассмотрим следующую схему:

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

Как уже многие догадались, под именем HTTP-сервера в данной схеме находится сущность, которая более известна сегодня под названием веб-сервер. Основная цель и задача веб-сервера — обработка HTTP-запросов и возврат пользователю их результатов. Веб-сервер не умеет самостоятельно генерировать контент и работает только со статическим содержимым. Это актуально и для современных веб-серверов, несмотря на все богатство их возможностей.

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

Сайты того времени вообще мало походили на современные, например, ниже показан вид одного из пионеров русскоязычного интернета, сайт компании Rambler:

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

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

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

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

Стоит отметить, что SSI активно применяется и сегодня, там, где в код страницы нужно вставить некий статический контент, прежде всего благодаря простоте и нетребовательности к ресурсам.

Следующим шагом в развитии веб-технологии стало появление специальных программ (скриптов) выполняющих обработку запроса пользователей на стороне сервера. Чаще всего они пишутся на скриптовых языках, первоначально это был Perl, сегодня пальму лидерства удерживает PHP. Постепенно возник целый класс программ — системы управления контентом — CMS (Content management system), которые представляют полноценные веб-приложения способные обеспечить динамическую обработку запросов пользователя.

Теперь важный момент: веб-сервера не умели и не умеют выполнять скрипты, их задача — отдача статического содержимого. Здесь на сцену выходит новая сущность — сервер приложений, который представляет собой интерпретатор скриптовых языков и с помощью которого работают написанные на них веб-приложения. Для хранения данных обычно используются СУБД, что обусловлено необходимостью доступа к большому количеству взаимосвязанной информации.

Однако сервер приложений не умеет работать с протоколом HTTP и обрабатывать пользовательские запросы, так как это задача веб-сервера. Чтобы обеспечить их взаимодействие был разработан общий интерфейс шлюзаCGI (Common Gateway Interface).

Следует четко понимать, CGI — это не программа и не протокол, это именно интерфейс, т.е. совокупность способов взаимодействия между приложениями. Также не следует путать термин CGI с понятием CGI-приложения или CGI-скрипта, которыми обозначают программу (скрипт) поддерживающую работу через интерфейс CGI.

Для передачи данных используются стандартные потоки ввода-вывода, от веб-сервера к СGI-приложению данные передаются через stdin, принимаются назад через stdout, для передачи сообщений об ошибках используется stderr.

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

Еще одно важное отличие динамического сайта — его страницы физически не существуют в том виде, который отдается пользователю. Фактически имеется веб-приложение, т.е. набор скриптов и шаблонов, и база данных, которая хранит материалы сайта и служебную информацию, отдельно располагается статическое содержимое: картинки, java-скрипты, файлы.

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

К достоинствам CGI можно отнести языковую и архитектурную независимость: CGI-приложение может быть написано на любом языке и одинаково хорошо работать с любым веб-сервером. Учитывая простоту и открытость стандарта это привело к бурному развитию веб-приложений.

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

На текущий момент CGI практически не применяется, так как ему на смену пришли более совершенные технологии.

FastCGI

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

FastCGI устраняет основную проблему CGI — повторный запуск процесса веб-приложения на каждый запрос, FastCGI процессы запущены постоянно, что позволяет существенно экономить время и ресурсы. Для передачи данных вместо стандартных потоков используются UNIX-сокеты или TCP/IP, что позволяет размещать веб-сервер и сервера приложений на разных хостах, таким образом обеспечивая масштабирование и/или высокую доступность системы.

Также мы можем запустить на одном компьютере несколько FastCGI процессов, которые могут обрабатывать запросы параллельно, либо иметь различные настройки или версии скриптового языка. Например, можно одновременно иметь несколько версий PHP для разных сайтов, направляя их запросы разным FastCGI процессам.

Для управления FastCGI процессами и распределением нагрузки служат менеджеры процессов, они могут быть как частью веб-сервера, так и отдельными приложениями. Популярные веб-сервера Apache и Lighttpd имеют встроенные менеджеры FastCGI процессов, в то время как Nginx требует для своей работы c FastCGI внешний менеджер.

PHP-FPM и spawn-fcgi

Из внешних менеджеров для FastCGI процессов применяются PHP-FPM и spawn-fcgi. PHP-FPM первоначально был набором патчей к PHP от Андрея Нигматулина, решавший ряд вопросов управления FastCGI процессами, начиная с версии 5.3 является частью проекта и входит в поставку PHP. PHP-FPM умеет динамически управлять количеством процессов PHP в зависимости от нагрузки, перезагружать пулы без потери запросов, аварийный перезапуск сбойных процессов и представляет собой достаточно продвинутый менеджер.

Spawn-fcgi является частью проекта Lighttpd, но в состав одноименного веб-сервера не входит, по умолчанию Lighttpd использует собственный, более простой, менеджер процессов. Разработчики рекомендуют использовать его в случаях, когда вам нужно управлять FastCGI процессами расположенными на другом хосте, либо требуются расширенные настройки безопасности.

Внешние менеджеры позволяют изолировать каждый FastCGI процесс в своем chroot (смена корневого каталога приложения без возможности доступа за его пределы), отличном как от chroot иных процессов, так и от chroot веб-сервера. И, как мы уже говорили, позволяют работать с FastCGI приложениями расположенными на других серверах через TCP/IP, в случае локального доступа следует выбирать доступ через UNIX-сокет, как быстрый тип соединения.

Если снова посмотреть на схему, то мы увидим, что у нас появился новый элемент — менеджер процессов, который является посредником между веб-сервером и серверами приложений. Это несколько усложняет схему, так как настраивать и сопровождать приходится большее количество служб, но в тоже время открывает более широкие возможности, позволяя настроить каждый элемент сервера четко под свои задачи.

На практике, выбирая между встроенным менеджером и внешним здраво оцените ситуацию и выбирайте именно тот инструмент, который наиболее подходит вашим запросам. Например, создавая простой сервер для нескольких сайтов на типовых движках применение внешнего менеджера будет явно излишним. Хотя никто не навязывает вам своей точки зрения. Linux тем и хорош, что каждый может, как из конструктора, собрать именно то, что ему надо.

SCGI, PCGI, PSGI, WSGI и прочие

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

Несмотря на различия в реализациях того или иного решения базовые принципы остаются общими. Все эти технологии предоставляют интерфейс шлюза (Gateway Interface) для взаимодействия веб-сервера с сервером приложений. Шлюзы позволяют развязать между собой среды веб-сервера и веб-приложения, позволяя использовать любые сочетания без оглядки на возможную несовместимость. Проще говоря, неважно, поддерживает ли ваш веб-сервер конкретную технологию или скриптовый язык, главное, чтобы он умел работать с нужным типом шлюза.

И раз уж мы перечислили в заголовке целую пачку аббревиатур, то пройдем по ним более подробно.

SCGI (Simple Common Gateway Interface) — простой общий интерфейс шлюза — разработан как альтернатива CGI и во многом аналогичен FastCGI, но более прост в реализации. Все, о чем мы рассказывали применительно к FastGCI справедливо и для SCGI.

PCGI (Perl Common Gateway Interface) — библиотека Perl для работы с интерфейсом CGI, долгое время являлась основным вариантом работы с Perl-приложениями через CGI, отличается хорошей производительностью (насколько это применимо к CGI) при скромных потребностях в ресурсах и неплохой защиты от перегрузки.

PSGI (Perl Web Server Gateway Interface) — технология взаимодействия веб-сервера и сервера приложений для Perl. Если PCGI представляет собой инструмент для работы с классическим CGI интерфейсом, то PSGI более напоминает FastCGI. PSGI-сервер представляет среду для выполнения Perl-приложений которая постоянно запущена в качестве службы и может взаимодействовать с веб-сервером через TCP/IP или UNIХ-сокеты и предоставляет Perl-приложениям те же преимущества, что и FastCGI.

WSGI (Web Server Gateway Interface) — еще один специфичный интерфейс шлюза, предназначенный для взаимодействия веб-сервера с сервером приложений для программ, написанных на языке Phyton.

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

Сервер приложений как модуль Apache

Если раньше мы говорили о неком абстрактном веб-сервере, то теперь речь пойдет о конкретном решении и дело здесь не в наших предпочтениях. Среди веб-серверов Apache занимает особое место, в большинстве случаев, когда говорят о веб-сервере на платформе Linux, да и о веб-сервере вообще, то подразумеваться будет именно Apache.

Можно сказать, что это своего рода веб-сервер «по умолчанию». Возьмите любой массовый хостинг — там окажется Apache, возьмите любое веб-приложение — настройки по умолчанию выполнены под Apache.

Да, с технологической точки зрения Apache не является венцом технологий, но именно он представляет золотую середину, прост, понятен, гибок в настройках, универсален. Если вы делаете первые шаги в сайтостроении — то Apache ваш выбор.

Здесь нас могут упрекнуть, что Apache уже давно неактуален, все «реальные пацаны» уже поставили Nginx и т.д. и т.п., поэтому поясним данный момент более подробно. Все популярные CMS из коробки сконфигурированы для использования совместно с Apache, это позволяет сосредоточить все внимание на работу именно с веб-приложением, исключив из возможного источника проблем веб-сервер.

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

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

Действительно, если запустить сервер приложений как модуль веб-сервера в общем адресном пространстве, то мы получим гораздо более простую схему:

Какие преимущества это дает? Чем проще схема и меньше в ней элементов, тем проще и дешевле сопровождать ее и обслуживать, тем меньше в ней точек отказа. Если для единичного сервера это может быть не так важно, то в рамках хостинга это весьма значительный фактор.

Второе преимущество — производительность. Снова огорчим поклонников Nginx, благодаря работе в едином адресном пространстве, по производительности сервера приложений Apache + mod_php всегда будет на 10-20% быстрее любого иного веб-сервера + FastCGI (или иное CGI решение). Но также следует помнить, что скорость работы сайта обусловлена не только производительностью сервера приложений, но и рядом иных условий, в которых альтернативные веб-сервера могут показывать значительно лучший результат.

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

Развитие интернета привело к тому, что количество возможных веб-приложений (CMS, скриптов, фреймворков и т.п.) стало очень велико, а низкий порог вхождения привлек к сайтостроению большое количество людей без специальных технических знаний. В тоже время разные веб-приложения могли требовать различной настройки сервера приложений. Как быть? Каждый раз обращаться в поддержку?

Решение нашлось довольно просто. Так как сервер-приложений теперь часть веб-сервера, то можно поручить последнему управлять его настройками. Традиционно для управления настройками Apache помимо конфигурационных файлов применялись файлы httaccess, которые позволяли пользователям писать туда свои директивы и применять их к той директории, где расположен данный файл и ниже, если там настройки не перекрываются своим файлом httaccess. В режиме mod_php данные файлы позволяют также изменять многие опции PHP для отдельного сайта или директории.

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

Сочетание всех этих преимуществ и обеспечило Apache столь широкое применение и статус универсального веб-сервера. Другие решения могут быть быстрее, экономичнее, лучше, но они всегда требуют настройки под задачу, поэтому применяются в основном в целевых проектах, в массовом сегменте безальтернативно доминирует Apache.

Поговорив о достоинствах, перейдем к недостаткам. Некоторые из них просто являются обратной стороной медали. Тот факт, что сервер приложений является частью веб-сервера дает плюсы в производительности и простоте настройки, но в тоже время ограничивает нас как с точки зрения безопасности — сервер приложений всегда работает от имени веб-сервера, так и в гибкости системы, мы не можем разнести веб-сервер и сервер приложений на разные хосты, не можем использовать сервера с разными версиями скриптового языка или разными настройками.

Второй минус — более высокое потребление ресурсов. В схеме с CGI сервер приложений генерирует страницу и отдает ее веб-серверу, освобождая ресурсы, связка Apache + mod_php держит ресурсы сервера приложений занятыми до тех пор, пока веб-сервер не отдаст содержимое страницы клиенту. Если клиент медленный, то ресурсы будут заняты на все время его обслуживания. Именно поэтому перед Apache часто ставят Nginx, который играет роль быстрого клиента, это позволяет Apache быстро отдать страницу и освободить ресурсы, переложив взаимодействие с клиентом на более экономичный Nginx.

Заключение

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

Настройка веб-сервера для публикации веб-развертывания (автономное развертывание) Configuring a Web Server for Web Deploy Publishing (Offline Deployment)

В этом разделе описываются способы настройки веб-сервер IIS для поддержки автономной веб-публикации и развертывания. This topic describes how to configure an IIS web server to support offline web publishing and deployment.

При работе с Internet Information Services (IIS) средства веб-развертывания (Web Deploy) 2.0 или более поздней, существует три основных подхода, которые можно использовать для получения приложений или сайтов на веб-сервер. When you work with Internet Information Services (IIS) Web Deployment Tool (Web Deploy) 2.0 or later, there are three main approaches you can use to get your applications or sites onto a web server. Можно выполнить следующие действия: You can:

  • Используйте веб-развертывания службы удаленного агента. Use the Web Deploy Remote Agent Service. Этот подход требует сократить количество конфигураций веб-сервера, но необходимо предоставить учетные данные администратора локального сервера для развертывания ничего на сервер. This approach requires less configuration of the web server, but you need to provide the credentials of a local server administrator in order to deploy anything to the server.
  • Используйте обработчик веб-развертывания. Use the Web Deploy Handler. Этот подход гораздо более сложна и требует больше усилий начальной для настройки веб-сервера. This approach is a lot more complex and requires more initial effort to set up the web server. Тем не менее при использовании этого подхода, можно настроить службы IIS, чтобы разрешить пользователям без прав администратора для выполнения развертывания. However, when you use this approach, you can configure IIS to allow non-administrator users to perform the deployment. Веб-развертывание обработчик доступна только в службах IIS 7 или более поздней версии. The Web Deploy Handler is only available in IIS version 7 or later.
  • Используйте автономное развертывание. Use offline deployment. Этот подход требует минимальной конфигурации веб-сервера, но администратор сервера необходимо вручную скопировать веб-пакета на сервер и импортировать его в диспетчере IIS. This approach requires the least configuration of the web server, but a server administrator must manually copy the web package onto the server and import it through IIS Manager.

Дополнительные сведения о ключевых функций, преимущества и недостатки этих подходов см. в разделе Выбор оптимального подхода для веб-развертывания справа. For more information on the key features, advantages, and disadvantages of these approaches, see Choosing the Right Approach to Web Deployment.

Да, если в вашей сети инфраструктуры и безопасности ограничениям удаленного развертывания. Yes, if your network infrastructure or security restrictions prevent remote deployment. Это, скорее всего, относится к в производственной среде выходом в Интернет, в котором изолированы веб-серверов—либо физически или с помощью брандмауэров и подсетей—от остальной части серверной инфраструктуры. This is most likely to be the case in Internet-facing production environments, where the web servers are isolated—either physically or by firewalls and subnets—from the rest of your server infrastructure.

Очевидно, что такой подход становится менее предпочтителен, если веб-приложения обновляются на регулярной основе. Obviously, this approach becomes less desirable if your web applications are updated on a regular basis. Если это позволяет инфраструктуре, можно включить удаленное развертывание с помощью веб-развертывание обработчик или веб-развертывание удаленного агента службы. If your infrastructure allows it, you may want to consider enabling remote deployment, using either the Web Deploy Handler or the Web Deploy Remote Agent Service.

Общие сведения о задачах Task Overview

Чтобы настроить веб-сервер для поддержки автономного импорта и развертывания веб-пакетов, вам потребуется: To configure the web server to support offline import and deployment of web packages, you’ll need to:

  • Установите IIS 7.5 и IIS 7, рекомендуемая конфигурация. Install IIS 7.5 and the IIS 7 recommended configuration.
  • Установите веб-развертывания 2.1 или более поздней версии. Install Web Deploy 2.1 or later.
  • Создание веб-сайта IIS для размещения развернутого содержимого. Create an IIS website to host the deployed content.
  • Отключите службу агента веб-развертывания. Disable the Web Deployment Agent Service.

Для размещения примера решения, в частности, также необходимо: To host the sample solution specifically, you’ll also need to:

  • Установка .NET Framework 4.0. Install the .NET Framework 4.0.
  • Установка ASP.NET MVC 3. Install ASP.NET MVC 3.

В этом разделе показано, как выполнить каждую из этих процедур. This topic will show you how to perform each of these procedures. Задачи и пошаговые руководства в этом разделе предполагается, что вы начинаете с построением чистого сервера под управлением Windows Server 2008 R2. The tasks and walkthroughs in this topic assume that you’re starting with a clean server build running Windows Server 2008 R2. Прежде чем продолжить, убедитесь, что: Before you continue, ensure that:

  • Пакет обновления 1 для Windows Server 2008 R2 и все доступные обновления будут установлены. Windows Server 2008 R2 Service Pack 1 and all available updates are installed.
  • Сервер присоединен к домену. The server is domain-joined.
  • Сервер имеет статический IP-адрес. The server has a static IP address.

Дополнительные сведения о присоединении к домену компьютеров, см. в разделе присоединение к домену и вход. For more information on joining computers to a domain, see Joining Computers to the Domain and Logging On. Дополнительные сведения о настройке статического IP-адресов, см. в разделе настроить статический IP-адрес. For more information on configuring static IP addresses, see Configure a Static IP Address.

Установить продукты и компоненты Install Products and Components

В этом разделе поможет установке необходимых продуктов и компонентов на веб-сервере. This section will guide you through installing the required products and components on the web server. Перед началом работы рекомендуется выполнить обновление Windows, чтобы убедиться, что ваш сервер находится полностью в актуальном состоянии. Before you begin, a good practice is to run Windows Update to ensure that your server is fully up to date.

В этом случае необходимо установить следующее: In this case, you need to install these things:

  • Рекомендуемая конфигурация IIS 7. IIS 7 Recommended Configuration. Это позволяет веб-сервер (IIS) роли веб-сервера и устанавливает набор модулей IIS и компоненты, необходимые для размещения приложений ASP.NET. This enables the Web Server (IIS) role on your web server and installs the set of IIS modules and components that you need in order to host an ASP.NET application.
  • .NET framework 4.0. .NET Framework 4.0. Это необходимо для запуска приложений, которые были созданы в этой версии платформы .NET Framework. This is required to run applications that were built on this version of the .NET Framework.
  • Средство веб-развертывания 2.1 или более поздняя. Web Deployment Tool 2.1 or later. При этом устанавливаются на сервере веб-развертывания (и его базового исполняемого файла, MSDeploy.exe). This installs Web Deploy (and its underlying executable, MSDeploy.exe) on your server. Веб-развертывание интегрируется со службами IIS и позволяет импортировать и экспортировать веб-пакетов. Web Deploy integrates with IIS and lets you import and export web packages.
  • ASP.NET MVC 3. ASP.NET MVC 3. Это устанавливает сборки, необходимые для запуска приложения MVC 3. This installs the assemblies you need to run MVC 3 applications.

В этом пошаговом руководстве описывается использование установщика веб-платформы для установки и настройки различных компонентов. This walkthrough describes the use of the Web Platform Installer to install and configure various components. Несмотря на то, что не нужно использовать установщик веб-платформы, это упрощает процесс установки автоматически обнаруживая зависимостей и обеспечение всегда получать последние версии продукта. Although you don’t have to use the Web Platform Installer, it simplifies the installation process by automatically detecting dependencies and ensuring that you always get the latest product versions. Дополнительные сведения см. в разделе веб-платформы Microsoft Installer-3.0. For more information, see Microsoft Web Platform Installer 3.0.

Чтобы установить необходимые продукты и компоненты To install the required products and components

Скачайте и установите установщика веб-платформы. Download and install the Web Platform Installer.

По завершении установки автоматически запустит установщик веб-платформы. When installation is complete, the Web Platform Installer will launch automatically.

Теперь можно запустить установщик веб-платформы в любое время с запустить меню. You can now launch the Web Platform Installer at any time from the Start menu. Для этого на запустить меню, щелкните все программы, а затем нажмите кнопку Microsoft Web Platform Installer. To do this, on the Start menu, click All Programs, and then click Microsoft Web Platform Installer.

В верхней части веб-платформы 3.0 установщик окно, нажмите кнопку продуктов. At the top of the Web Platform Installer 3.0 window, click Products.

В левой части окна, в области навигации щелкните платформ. On the left side of the window, in the navigation pane, click Frameworks.

В Microsoft .NET Framework 4 строк, если .NET Framework еще не установлен, нажмите кнопку добавить. In the Microsoft .NET Framework 4 row, if the .NET Framework is not already installed, click Add.

Вы возможно уже установлены .NET Framework 4.0 через Центр обновления Windows. You may have already installed the .NET Framework 4.0 through Windows Update. Если продукт или компонент уже установлен, установщик веб-платформы сообщит об этом, заменив добавить кнопка с текстом установленные. If a product or component is already installed, the Web Platform Installer will indicate this by replacing the Add button with the text Installed.

В ASP.NET MVC 3 (Visual Studio 2010) щелкните добавить. In the ASP.NET MVC 3 (Visual Studio 2010) row, click Add.

В области навигации щелкните сервера. In the navigation pane, click Server.

В рекомендуемой конфигурации IIS 7 щелкните добавить. In the IIS 7 Recommended Configuration row, click Add.

В 2.1 средства развертывания Web щелкните добавить. In the Web Deployment Tool 2.1 row, click Add.

Нажмите кнопку Установить. Click Install. Установщик веб-платформы Отображение списка продуктов—совместно с любым связанные зависимости—должен быть установлен и будет предложено принять условия лицензионного соглашения. The Web Platform Installer will show you a list of products—together with any associated dependencies—to be installed and will prompt you to accept the license terms.

Ознакомьтесь с условиями лицензии, а если вы согласны с условиями, нажмите кнопку я принимаю. Review the license terms, and if you consent to the terms, click I Accept.

После завершения установки нажмите кнопку Готово, а затем закройте веб-платформы 3.0 установщик окна. When the installation is complete, click Finish, and then close the Web Platform Installer 3.0 window.

Если вы установили .NET Framework 4.0 до установки служб IIS, необходимо запустить ASP.NET IIS Registration Tool (aspnet_regiis.exe) для регистрации последнюю версию ASP.NET в IIS. If you installed the .NET Framework 4.0 before you installed IIS, you’ll need to run the ASP.NET IIS Registration Tool (aspnet_regiis.exe) to register the latest version of ASP.NET with IIS. Если этого не сделать, обнаружится, что IIS будет обслуживать статическое содержимое (например, HTML-файлы) без проблем, но он будет возвращать 404.0 Ошибка HTTP — не найден при попытке перейти к содержимому ASP.NET. If you don’t do this, you’ll find that IIS will serve static content (like HTML files) without any problems, but it will return HTTP Error 404.0 – Not Found when you attempt to browse to ASP.NET content. Можно использовать следующую процедуру, чтобы зарегистрировать ASP.NET 4.0. You can use the next procedure to ensure that ASP.NET 4.0 is registered.

Чтобы зарегистрировать ASP.NET 4.0 в IIS To register ASP.NET 4.0 with IIS

Нажмите кнопку запустить, а затем введите командной. Click Start, and then type Command Prompt.

В результатах поиска, щелкните правой кнопкой мыши командной, а затем нажмите кнопку Запуск от имени администратора. In the search results, right-click Command Prompt, and then click Run as administrator.

В окне командной строки перейдите в раздел %WINDIR%\Microsoft.NET\Framework\v4.0.30319 каталога. In the Command Prompt window, navigate to the %WINDIR%\Microsoft.NET\Framework\v4.0.30319 directory.

Введите следующую команду и нажмите клавишу ВВОД: Type this command, and then press Enter:

Если вы планируете размещать 64-разрядных веб-приложения в любой момент, то также зарегистрировать 64-разрядной версии ASP.NET в IIS. If you plan to host 64-bit web applications at any point, you should also register the 64-bit version of ASP.NET with IIS. Чтобы сделать это, в окне командной строки, перейдите к %WINDIR%\Microsoft.NET\Framework64\v4.0.30319 каталога. To do this, in the Command Prompt window, navigate to the %WINDIR%\Microsoft.NET\Framework64\v4.0.30319 directory.

Введите следующую команду и нажмите клавишу ВВОД: Type this command, and then press Enter:

В качестве хорошей практикой используйте Windows Update еще раз на этом этапе для загрузки и установки доступных обновлений для новых продуктов и компонентов, которые вы установили. As a good practice, use Windows Update again at this point to download and install any available updates for the new products and components you’ve installed.

Настройка веб-сайта IIS Configure the IIS Website

Перед развертыванием веб-содержимого на сервер, необходимо создать и настроить веб-сайта IIS для размещения содержимого. Before you can deploy web content to your server, you need to create and configure an IIS website to host the content. Веб-развертывание можно развернуть веб-пакетов только для существующих веб-сайт IIS; не удается создать веб-сайт для вас. Web Deploy can only deploy web packages to an existing IIS website; it can’t create the website for you. На высоком уровне необходимо выполнить следующие задачи: At a high level, you’ll need to complete these tasks:

  • Создайте папку в файловой системе для размещения содержимого. Create a folder on the file system to host your content.
  • Создание веб-сайта IIS для обслуживания содержимого и свяжите его с локальной папкой. Create an IIS website to serve the content, and associate it with the local folder.
  • Предоставление разрешения на чтение для удостоверения пула приложений в локальной папке. Grant read permissions to the application pool identity on the local folder.

Хотя ничто не мешает развертывания содержимого на веб-сайт по умолчанию в службах IIS, этот подход не рекомендуется для всего, кроме сценариев тестирования или демонстрации. Although there’s nothing stopping you from deploying content to the default website in IIS, this approach is not recommended for anything other than test or demonstration scenarios. Для имитации рабочей среде, следует создать новый веб-сайт IIS с параметрами, которые относятся к требованиям приложения. To simulate a production environment, you should create a new IIS website with settings that are specific to the requirements of your application.

Для создания и настройки веб-сайта IIS To create and configure an IIS website

В локальной файловой системе, создайте папку для хранения содержимого (например, C:\DemoSite). On the local file system, create a folder to store your content (for example, C:\DemoSite).

На запустить последовательно выберите пункты Администрирование, а затем нажмите кнопку Internet Information Services (IIS) Manager. On the Start menu, point to Administrative Tools, and then click Internet Information Services (IIS) Manager.

В диспетчере служб IIS в подключений панели раскройте узел сервера (например, PROWEB1). In IIS Manager, in the Connections pane, expand the server node (for example, PROWEB1).

Щелкните правой кнопкой мыши сайты узел, а затем щелкните добавить веб-сайт. Right-click the Sites node, and then click Add Web Site.

В имя_сайта введите имя для веб-сайта IIS (например, DemoSite). In the Site name box, type a name for the IIS website (for example, DemoSite).

В физический путь введите (или перейдите к) путь к локальной папке (например, C:\DemoSite). In the Physical path box, type (or browse to) the path to your local folder (for example, C:\DemoSite).

В порт введите номер порта, на котором будет размещаться веб-сайта (например, 85). In the Port box, type the port number on which you want to host the website (for example, 85).

Номера стандартных портов: 80 для HTTP и 443 для HTTPS. The standard port numbers are 80 for HTTP and 443 for HTTPS. Тем не менее если вы размещаете этого веб-сайта через порт 80, необходимо остановить веб-сайт по умолчанию, чтобы обеспечить доступ к веб-узла. However, if you host this website on port 80, you’ll need to stop the default website before you can access your site.

Оставьте имя узла поле пустым, только если вы хотите настроить запись доменных имен (DNS) для веб-сайта, а затем нажмите кнопку ОК. Leave the Host name box blank, unless you want to configure a Domain Name System (DNS) record for the website, and then click OK.

В рабочей среде скорее всего нужно будет разместить веб-сайт через порт 80 и Настройка заголовка узла, а также соответствующие записи DNS. In a production environment, you’ll likely want to host your website on port 80 and configure a host header, together with matching DNS records. Дополнительные сведения о настройке заголовков узлов в IIS 7, см. в разделе Настройка заголовка узла для веб-сайта (IIS 7). For more information on configuring host headers in IIS 7, see Configure a Host Header for a Web Site (IIS 7). Дополнительные сведения о роли DNS-сервера в Windows Server 2008 R2, см. в разделе Обзор DNS-сервера и DNS-сервер. For more information on the DNS Server role in Windows Server 2008 R2, see DNS Server Overview and DNS Server.

В области Действия в разделе Изменение веб-сайтавыберите пункт Привязки. In the Actions pane, under Edit Site, click Bindings.

В привязки сайта диалоговом окне щелкните добавить. In the Site Bindings dialog box, click Add.

В Добавление привязки сайта диалоговом окне set IP-адрес и порт в соответствии с существующей конфигурации сайта. In the Add Site Binding dialog box, set the IP address and Port to match your existing site configuration.

В имя узла введите имя веб-сервера (например, PROWEB1), а затем нажмите кнопку ОК. In the Host name box, type the name of your web server (for example, PROWEB1), and then click OK.

Первой привязки сайта дает возможность доступа к сайту, локально с помощью IP-адрес и порт или http://localhost:85 . The first site binding allows you to access the site locally using the IP address and port or http://localhost:85 . Вторая привязка сайта дает возможность доступа к сайту с других компьютеров в домене с помощью имени компьютера (например, http://proweb1:85). The second site binding allows you to access the site from other computers on the domain using the machine name (for example, http://proweb1:85).

В привязки сайта диалоговом окне щелкните закрыть. In the Site Bindings dialog box, click Close.

В подключений панели щелкните пулы приложений. In the Connections pane, click Application Pools.

В пулы приложений панели, щелкните правой кнопкой мыши имя пула приложений и нажмите кнопку основные параметры. In the Application Pools pane, right-click the name of your application pool, and then click Basic Settings. По умолчанию имя пула приложений будет соответствовать имени веб-сайта (например, DemoSite). By default, the name of your application pool will match the name of your website (for example, DemoSite).

В версии платформы .NET Framework выберите v4.0.30319 .NET Framework, а затем нажмите кнопку ОК. In the .NET Framework version list, select .NET Framework v4.0.30319, and then click OK.

В примере решения требуется .NET Framework 4.0. The sample solution requires .NET Framework 4.0. Это не является требованием для веб-развертывания в целом. This is not a requirement for Web Deploy in general.

Чтобы веб-сайт для предоставления содержимого удостоверение пула приложений должно иметь разрешения на чтение локальную папку, в котором хранится содержимое. In order for your website to serve content, the application pool identity must have read permissions on the local folder that stores the content. В IIS 7.5 пулы приложений выполняются с уникальным пула приложений по умолчанию (в отличие от предыдущих версий IIS, где пулы приложений будут обычно выполняются с помощью учетной записи сетевой службы). In IIS 7.5, application pools run with a unique application pool identity by default (in contrast to previous versions of IIS, where application pools would typically run using the Network Service account). Удостоверение пула приложений не является реальной учетной записью и не включаются в список пользователей или групп—вместо этого оно создается динамически при запуске пула приложений. The application pool identity is not a real user account and does not show up on any lists of users or groups—instead, it’s created dynamically when the application pool is started. Каждый удостоверение пула приложений добавляется к локальной IIS_IUSRS группы безопасности как скрытый элемент. Each application pool identity is added to the local IIS_IUSRS security group as a hidden item.

Чтобы предоставить разрешения для удостоверения пула приложений для файла или папки, можно двумя способами: To grant permissions to an application pool identity on a file or folder, you have two options:

  • Назначить разрешения для удостоверения пула приложений напрямую, используя формат IIS AppPool [имя пула приложений](например, IIS AppPool\DemoSite). Assign permissions to the application pool identity directly, using the format IIS AppPool[application pool name](for example, IIS AppPool\DemoSite).
  • Назначение разрешений для IIS_IUSRS группы. Assign permissions to the IIS_IUSRS group.

Наиболее распространенным подходом является для назначения разрешений локальной IIS_IUSRS группе, так как этот подход позволяет изменять пулы приложений без повторной настройки разрешений файловой системы. The most common approach is to assign permissions to the local IIS_IUSRS group, because this approach lets you change application pools without reconfiguring file system permissions. В следующей процедуре используется этот подход на основе групп. The next procedure uses this group-based approach.

Дополнительные сведения о удостоверения пула приложений в IIS 7.5 см. в разделе удостоверения пула приложений. For more information on application pool identities in IIS 7.5, see Application Pool Identities.

Чтобы настроить разрешения для веб-сайта IIS To configure folder permissions for an IIS website

В обозревателе Windows перейдите в расположение своей локальной папки. In Windows Explorer, browse to the location of your local folder.

Щелкните правой кнопкой мыши папку и нажмите кнопку свойства. Right-click the folder, and then click Properties.

На безопасности щелкните изменить, а затем нажмите кнопку добавить. On the Security tab, click Edit, and then click Add.

Нажмите кнопку расположения. Click Locations. В расположения диалоговом окне выберите локальный сервер, а затем нажмите кнопку ОК. In the Locations dialog box, select the local server, and then click OK.

В Выбор пользователей или групп диалоговом окне IIS_IUSRS, нажмите кнопку проверить имена, а затем нажмите кнопку ОК. In the Select Users or Groups dialog box, type IIS_IUSRS, click Check Names, and then click OK.

В разрешения для[имя папки] диалоговом окне Обратите внимание, что назначить новую группу чтения & выполнение, папки содержимое, и чтения разрешения по умолчанию. In the Permissions for[folder name] dialog box, notice that the new group has been assigned the Read & execute, List folder contents, and Read permissions by default. Оставьте без изменений и нажмите кнопку ОК. Leave this unchanged and click OK.

Нажмите кнопку ОК закрыть [имя папки]свойства диалоговое окно. Click OK to close the [folder name]Properties dialog box.

Отключите службу удаленного агента Disable the Remote Agent Service

При установке веб-развертывания, службу агента веб-развертывания устанавливается и запускается автоматически. When you install Web Deploy, the Web Deployment Agent Service is installed and started automatically. Эта служба позволяет развертывать и публиковать веб-пакеты из удаленного расположения. This service allows you to deploy and publish web packages from a remote location. Надо будет использовать возможность удаленного развертывания таким образом, поэтому следует остановить и отключить службу. You won’t be using the remote deployment capability in this scenario, so you should stop and disable the service.

Остановите службу удаленного агента для импорта и развертывания веб-пакета вручную не нужно. You don’t need to stop the remote agent service in order to import and deploy a web package manually. Тем не менее рекомендуется остановить и отключить службу, если вы не планируете использовать его. However, it’s a good practice to stop and disable the service if you don’t plan to use it.

Можно остановить и отключить службу в различные операции, используя различные служебные программы командной строки или командлетов Windows PowerShell. You can stop and disable a service in multiple ways, using various command-line utilities or Windows PowerShell cmdlets. Эта процедура описывает простой подход на основе пользовательского интерфейса. This procedure describes a straightforward UI-based approach.

Чтобы остановить и отключить службу удаленного агента To stop and disable the remote agent service

Нажмите кнопку Пуск , выберите команду Администрирование, а затем выберите Службы. On the Start menu, point to Administrative Tools, and then click Services.

В консоли «службы» найдите службу агента веб-развертывания строки. In the Services console, locate the Web Deployment Agent Service row.

Щелкните правой кнопкой мыши службу агента веб-развертывания, а затем нажмите кнопку свойства. Right-click Web Deployment Agent Service, and then click Properties.

В свойства веб-развертывания для службы агента диалоговом окне щелкните остановить. In the Web Deployment Agent Service Properties dialog box, click Stop.

В тип запуска выберите отключено, а затем нажмите кнопку ОК. In the Startup type list, select Disabled, and then click OK.

Заключение Conclusion

На этом этапе веб-сервер готов для развертывания автономного веб-пакета. At this point, your web server is ready for offline web package deployment. Прежде чем пытаться импортировать веб-пакеты на веб-сайте IIS, может потребоваться проверить следующие основные моменты: Before you attempt to import web packages to an IIS website, you may want to check these key points:

lique_bez

ЛикБез

Ты помогаешь ликвидировать неграмотность?

Технологии электронного голосования

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

Эстония стала страной-пионером, в которой проводились полномасштабные интернет-выборы в парламент. Ещё в 2005 году были созданы условия для удалённого голосования, но использовались они частично. А уже в 2007 году система получила общественный статус и стала полноценной рабочей системой удалённого голосования для проведения интернет-выборов.

Во главе системы стоит личная карточка каждого гражданина Эстонии – ID-карта, которую имеет около 90% всего населения. Являясь, по сути, удостоверением личности, эта карта выполняет также и функции универсального идентификатора при регистрации в различных электронных службах.

Сам процесс голосования происходит следующим образом: вставив свою карту в считыватель, гражданин идентифицирует себя в системе электронного голосования с помощью личного PIN-кода и производит выбор приоритетного для себя кандидата. Учитываемый голос имеет несколько уровней безопасности и подписывается уникальной цифровой подписью, что исключает массовые фальсификации. Весной 2011 года к обычному функционалу была добавлена версия для голосования посредством обычного мобильного телефона — Mobil-ID. После состоявшихся выборов оппозиция заявила что сама система не соответствует принятым стандартам и не является тайной, так как голос избирателя можно легко зафиксировать, и даже проголосовать, имея на руках чужую ID-карту. И хотя обсуждение этих вопросов до сих пор продолжается, явных нарушений выявлено не было.

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

В 2002 году некоторые районы получили разрешение на проведение выборов с обычных домашних компьютеров и через SMS-сообщения. Так проводилось уже 14 выборов в муниципалитете. Для возможности учёта голоса, гражданин должен был получить специальный PIN-код, указав который, можно было голосовать удалённо. Графство Суиндон несколько лет назад провело голосование, мало чем отличающееся от традиционных бумажных выборов, но с использованием компьютерной техники. Было установлено около 300 компьютеров в различных общественных местах, и любой гражданин после предъявления удостоверения личности мог оставить голос, отметив его в интерфейсе специальной программы.

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

В Швейцарии первое голосование через интернет было проведено в 2004 году на федеральных выборах. Здесь также применялась специальная ID-карточка, но только одноразового использования. Каждые два месяца в стране проходят референдумы, в которых проголосовать за принятие решений могут и обычные граждане посредством интернет-голосования.

Для регистрации своего голоса, непосредственно перед проведением голосования, гражданин должен приобрести одноразовую карточку в ближайшем отделении почты, предъявив свой паспорт. Затем следует само голосование: участник вводит идентификатор карточки, отмечает варианты, удовлетворяющие его взглядам и вводит секретный код, предварительно стерев защитный слой над ним. После проведения этой процедуры, он получает электронное подтверждение — метку, по которой в дальнейшем может проверить результаты в административных учреждениях кантона.

В США интернет-голосование хоть и стоит в списке приоритетных направлений развития, но массовые выборы через интернет провести не удалось, так как специалисты по безопасности написали неутешительный отчёт о самой системе выборов.

Это произошло всего за полгода до начала выборов, когда система была полностью готова к использованию. В округе Колумбия проводились активные испытания другой системы – Digital Vote by Mail, призванной обеспечить возможность голосования для граждан США, проживающих за границей.

Схема работы этого вида голосования достаточно проста – пользователь получает 16-значный ключ для авторизации в системе, заполняет бюллетень и система сохраняет заполненный документ в зашифрованном виде. Однако и этот вариант не был допущен к использованию, так как в его основе использовалось свободное ПО с открытым кодом, а специалистами была найдена уязвимость в некоторых элементах системы, позволяющая сфальсифицировать сохранённый бюллетень уже после принятия голоса, а также создано злокачественное ПО для идентификации проголосовавших пользователей. К концу года все недочёты и уязвимости было обещано исправить. На выборах президента в США, 25 млн. человек проголосовали за Барака Обаму, используя систему «Smartmatik» и биометрические данные.

В Канаде первые интернет-выборы проводились в 2003 году при выборе главы «Новой демократической партии». С 2006 года частная компания CanVote проводит голосование для 12 муниципалитетов в Онтарио с около 100 000 избирателей. Для этого используется система паролей и специальных идентификаторов. Онлайн-выборы CanVote комбинирует с голосованием по телефону. Услугами «коммерческих» выборов также активно пользуются местные университеты и НГО.

В 2013 году избиратели получили возможность установить специальное ПО для мобильных устройств, после введения идентификаторов в котором, гражданин получает возможность выбора кандидата. Планировалось распространять эти приложения посредством электронных магазинов Android Market и Apple Store.

Монголия, Боливия, Венесуэла

Компания «Smartmatik» осуществила в Боливии, Монголии и Венесуэле следующую работу по заказу их правительств: собрали биометрические данные на 5 000 000 граждан с помощью 5000 сотрудников, прошедших специальный тренинг за 72 дня и передали государству. Во время выборов оборудовали избирательные участки специальным оборудованием.

Человек, приходя в участковую избирательную комиссию, идет к аппарату, который имеет сенсорный интерфейс, и считывает его отпечатки пальцев. Человек голосует нажатием на виртуальный бюллетень на лице нужного ему кандидата, или партии, или закона, в тот же момент тот же аппарат выдает бюллетень. Этот бюллетень избиратель кидает в урну. Таким образом, есть баланс электронных и бумажных бюллетеней, если он сходится – выборы чистые. Избиратель, где бы он ни был, может голосовать, в аэропорту, за рубежом где угодно. Подсчет голосов дает результат в тот же час.

В России разработкой методики электронного голосования занимается отдельная рабочая группа в рамках ЦИК.

Один из первых экспериментов по электронному опросу был проведен во время муниципальных выборов в октябре 2008 года в г. Новомосковск Тульской области. Он проходил при помощи распространенных среди избирателей компакт-дисков и лишь дублировал основной сбор голосов на избирательных участках. Диском избиратели могли воспользоваться как дома, так и в компьютерных классах двух школ, в интернет-клубе (для этого использовались технические средства рекламного агентства) или в городской библиотеке. В ходе эксперимента граждане увидели лишь вершину айсберга. «Под водой» оказался мониторинг основных линий связи и в целом всей интернет-инфраструктуры, имевшей отношение к выборному процессу. Была отмечена и повышенная хакерская активность по отношению к серверам выборов. Всего было изготовлено 5 тысяч опросных дисков, из которых на руки избирателям попало чуть больше 3 тысяч; воспользовались ими 2978 избирателей. В первую очередь эксперимент показал, что граждане активно реагируют на попытки внедрения электронных средств голосования, причем речь идет не только о тех, кто пользуется Интернетом постоянно, но и о тех, кто раньше не сталкивался со Всемирной сетью (или сталкивался, но не умел ею пользоваться).

Другой масштабный эксперимент по проведению электронного опроса в России прошел 11 октября 2011 года. В качестве площадки для проведения эксперимента была выбрана Ленинградская область, а именно Кингисеппское городское поселение. Эксперимент прошел во время выборов депутатов Совета депутатов Кингисеппского городского поселения Кингисеппского муниципального района второго созыва. Основой для электронного волеизъявления стал мобильный телефон. В рамках эксперимента проводился социологический опрос, показавший, что подавляющее большинство граждан довольны электронным опросом (87% избирателей, принявших участие в эксперименте), но каждый второй сомневается в достоверности его результатов.

Помимо этого в стране действует государственная автоматизированная система (ГАС) «Выборы». В задачи ГАС «Выборы» входит автоматизация избирательных процессов, начиная с уровня территориальных избирательных комиссий и выше. В межвыборный период основной задачей ГАС «Выборы» является ведение Регистра избирателей и участников референдума Российской Федерации.

Системы голосования на web серверах

ГОЛОСОВАНИЯ, УЧЕТ МНЕНИЯ АУДИТОРИИ

ПОЗВОЛЯЕТ ПРОВОДИТЬ ОПРОС АУДИТОРИИ. ГИБКОСТЬ НАСТРОЕК ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ ПОЗВОЛЯЮТ АДАПТИРОВАТЬ ДАННУЮ СИСТЕМУ ГОЛОСОВАНИЯ ПОД ЛЮБОЕ ШОУ, СЕМИНАР ИЛИ КОНФЕРЕНЦИЮ.

Webvote — это система учета и анализа мнения аудитории в режиме реального времени.

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

Компания «Дигси» представляет систему WebVote, позволяющую осуществлять такой сбор и анализ мнений аудитории в режиме реального времени с помощью практически любого оборудования – телефонов, планшетов, ноутбуков, специальных устройств и т.п.

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

WebVote позволяет удаленно проигрывать материал (видео, аудио записей) через сеть Интернет. Зритель/слушатель сможет посетить отдельную веб-страницу, на которой сможет самостоятельно запустить воспроизведение материала и в процессе его восприятия высказывать свое мнение об увиденном/услышанном.

Система WebVote вносит интерактивность в процесс создания медиа-контента, видеороликов, презентаций и т.п. WebVote обеспечивает контакт между создателями медиа-контента и целевой аудиторией как на стадии подачи материала, так и на стадии его подготовки. В качестве медиа-контента может выступать видеоряд, звуковой ряд либо любая другая аудиовизуальная информация.

Наша система универсальна и не привязывается к какому-либо определенному типу оборудования. WebVote позволяет ежесекундно снимать информацию об отношении респондента к материалу. Комплекс может быть развернут:

  • локально в одном помещении с использованием КПК и доступом по Wi-Fi к управляющему серверу – при этом видеоряд транслируется на один экран, а респонденты отмечают свое мнение об увиденном;
  • в режиме глобального мониторинга при помощи сети Интернет – при этом респонденты отмечают свою реакцию об увиденном (например, по телевизору) при помощи компьютера.
    В состав комплекса входят три составляющие:
  • Управляющий веб-сайт: программа, запускаемая в веб-броузере для управления сеансами и управления респондентами.
  • Медиа плеер: программа для проигрывания медиа-контента.
  • Интерфейс для терминала: программа, позволяющая снимать информацию о текущем мнении респондента. На терминале (карманном компьютере, ноутбуке, настольном ПК, специальном устройстве) в руках респондента могут отображаться кнопки «Да» или «Нет», «Да» или «Нет» со шкалой от -5 до 5, «Да» или «Нет» со шкалой и возможностью автоматического постепенного смещения ползунка в нейтральное положение.

Оптимальный способ внедрения системы:

Система WebVote не требует значительных ресурсов времени и средств на развертывание и внедрение. Мы приложили все усилия для того, чтобы максимально сократить этот предварительный процесс и, по возможности, устранить необходимость в большей части стандартных этапов. Система WebVote может предоставляться в виде удаленного сервиса с весьма небольшой абонентской платой – при этом не требуется закупка специального оборудования, наём специально выделенного персонала и существенный срок на настройку.

Система работает следующим образом:

установленным веб-сервером WebVote подключается к локальной сети (опционально – к сети Интернет). После этого запускается «модуль управления» WebVote – при помощи Интернет-броузера, в котором производится построение медиаряда для респондентов (групп респондентов), то есть формируется список и последовательность роликов. Также производится регистрация опрашиваемых в системе (задавание паролей для доступа и сопоставление их с тем или иным лицом). Респондент просматривает видеоряд и отмечает свое отношение к тому или иному моменту – например, путем перемещения полосы прокрутки с градацией от отрицательного «минимума» до положительного «максимума» (градация отношения от крайне негативного до абсолютно позитивного). Полоса прокрутки имеет базовое положение «0», отмечающее нейтральное отношение. При изменении мнения о текущем моменте респондент перемещает курсор полосы прокрутки в ту или иную сторону, после чего курсор возвращается в базовое положение. Также возможен вариант присутствия на экране нескольких кнопок, позволяющих отмечать мнение лиц о видеоролике. Вся информация, отмечаемая респондентом в режиме реального времени, фиксируется на веб-сервере WebVote.

Анализ полученных данных

Система WebVote фиксирует старт сеанса, его окончание и реакцию респондентов в числовой характеристике в разрезе конкретного респондента. По завершении сеанса, администратор системы производит выгрузку массива данных для глубокого анализа (в формат .CSV, распознаваемый большинством аналитических приложений), что позволяет понять, какова была реакция респондентов на тот или иной отрезок ролика – в разрезе каждого респондента или же в разрезе выбранной группы респондентов (например, респондентов мужского пола, безработных респондентов, и т.п.).

WEB-сервера

Веб-сервер — это сервер, принимающий HTTP-запросы от клиентов, обычно веб-браузеров, и выдающий им HTTP-ответы, обычно вместе с HTML-страницей, изображением, файлом, медиа-потоком или другими данными. Веб-серверы — основа Всемирной паутины.

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

Клиент, которым обычно является веб-браузер, передаёт веб-серверу запросы на получение ресурсов, обозначенных URL-адресами. Ресурсы — это HTML-страницы, изображения, файлы, медиа-потоки или другие данные, которые необходимы клиенту. В ответ веб-сервер передаёт клиенту запрошенные данные. Этот обмен происходит по протоколу HTTP.

Основное действие конечного пользователя в Интернете – это «переход на Web-страницу». На самом общем уровне это предполагает совместную работу пары приложений:

Web-браузера, такого как Firefox или Internet Explorer, который показывает в удобной для человеческого восприятия форме запрашиваемую страницу, которую он получает от…

Web-сервера, находящегося, как правило, на удалённой машине, который отвечает на запрос страницы потоком данных в формате HTML или аналогичном.

С браузерами имеют дело пользователи, которые подходят к их выбору и анализу с надлежащей тщательностью. Напротив, серверы видны только техническому персоналу сайтов. Более того, хотя существует множество различных Web-серверов, около 90% всех сайтов, согласно недавним исследованиям Netcraft, работают всего на двух из них — Apache и Internet Information Server (IIS). Оба эти сервера – тщательно проработанные продукты, обладающие не только очень длинным списком встроенных возможностей, но и процветающим «вторичным рынком» книг, дополнений, консультаций, провайдеров и т.д.

Web-сервер оценивается по целому ряду важнейших параметров:

Эффективность: как быстро он отвечает на запрос?

Масштабируемость: продолжает ли сервер работать надёжно, когда к нему одновременно обращаются много пользователей?

Безопасность: совершает ли сервер только те операции, которые должен? Какие возможности он предлагает для аутентификации пользователей и шифрования потока обмена информацией? Делает ли его использование более уязвимыми соседние приложения или хосты?

Работоспособность: какие у сервера режимы отказа и аварийные ситуации?

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

Требования к платформе: на каких платформах возможно использование сервера? Предъявляет ли он особые требования к аппаратной платформе?

Управляемость: легко ли установить и обслуживать сервер? Совместим ли он с организационными стандартами по ведению журналов, аудиту, оценке затрат и т.д.?

· Apache — свободный веб-сервер, наиболее часто используемый в UNIX-подобных операционных системах;

· IIS от компании Microsoft, распространяемый с серверными ОС семейства Windows

· nginx — свободный веб-сервер,

· lighttpd — свободный веб-сервер.

· Google Web Server — веб-сервер, основанный на Apache и доработанный компанией Google.

· Resin — свободный веб-сервер приложений.

· Cherokee — свободный веб-сервер, управляемый только через web-интерфейс.

· Rootage — веб-сервер, написанный на java.

· THTTPD — простой, маленький, быстрый и безопасный веб-сервер.

«Лёгкие» Web-сервера

Обычно «лёгкий» подразумевает простой, легко инсталлируемый, хорошо налаженный, нетребовательный и устойчивый – меньшего размера и менее сложный, чем Apache и IIS, которые в попытке удовлетворить свой большой рынок превратились в довольно громоздкие конструкции.

Достаточно лёгкие серверы открывают возможности, недоступные лидерам рынка и другим «тяжёлым» альтернативам. К примеру, весь сервер может поместиться в одном файле. Это удобно для разработчика, вы можете экспериментировать с новыми идеями, запуская их на лёгком сервере, инсталляция которого занимает секунды. Также из-за своей нетребовательности лёгкие серверы успешно функционируют на машинах, которые просто не могут выдержать тяжесть IIS.

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

Почти все лёгкие Web-серверы имеют в той или иной степени открытый исходный код. Если нам требуется особое поведение Web-сервера, то описанные ниже серверы настолько малы, что их легко понять и, следовательно, усовершенствовать. Эти Web-серверы – отличный исходный материал для проектов, в которых Web-серверы встраиваются в специальное оборудование или в специфические приложения, предназначенные для работы на компьютерах общего назначения. Они также широко используются на обычных Web-сайтах:

· YouTube использует lighttpd для быстрой доставки архивированного контента, например, видео;

· cdServe работает на CD-дисках «German Woodworking Machinery and Tools»;

· LiteSpeed «отметился» в twitter, www.funnyoride.com, www.airliners.com, WordPress.com, fanfiction.com, SlashGear, www.forumactif.com и в других заметных Web-сайтах;

· OpenSUSE, RubyOnRails, MarkaBoo и несколько других заметных сайтов опираются на Mongrel;

· thttpd работает на ht.com, mtv.com, The Drudge Report, garfield.com и др.

Лёгкие серверы играют свою роль даже в реальных вычислительных центрах, включая перечисленные выше солидные сайты и не только их. Особо высокопроизводительные сайты сегментируют свои операции, чтобы извлечь максимальную выгоду из кэширования, прокси-серверов и т.д. Сайт на основе Apache, к примеру, может иметь архитектуру, в которой медленно изменяющиеся изображения доставляются посредством «минималистского» Web-сервера из выделенной файловой системы. То, что видит в действительности конечный пользователь – это результат командной работы Apache и одного или нескольких дополнительных Web-серверов, каждый из которых играет роль, в которой он превосходит остальных. Такая конструкция может дать очень быстрые результаты с минимальными затратами на вычисления.

Хотя имеют много общего, внутри данной категории есть и различия. Большинство «лёгких» Web-серверов написаны на C, но есть и ряд успешных реализаций на других языках, в том числе на Erlang, Java, Lisp, Lua, Perl, Python и Tcl.

Все лёгкие Web-серверы меньше и конфигурируются легче, чем Apache. Некоторые из них быстрее, чем Apache, некоторые намного быстрее; в других упор сделан на безопасность, бесперебойную работу при больших загрузках, расширяемость или экономию памяти. В любом случае в них можно полностью разобраться, что уже нереально для Apache.

К числу очень маленьких Web-серверов относятся:

· Cheetah Server, содержащий менее тысячи строк на C.

· DustMote, очень маленький Web-сервер, реализованный в одном Tcl-исходнике размером примерно 3000 байт.

· fnord занимает менее 20K, в зависимости от платформы и конфигурации. Несмотря на маленький размер, он поддерживает виртуальный хостинг, CGI и keep-alive.

· ihttpd, имея менее 800 строчек C, умеет обслуживать страницы, включая CGI, посредством inetd.

· mattows поддерживает CGI, насчитывая при этом всего лишь 600 строк на C.

· Scrinchy, несмотря на маленький размер — около 30 KB — поддерживает примечательно много языков сценариев, включая специализированный стековый язык под названием Sy.

Маленький размер не препятствует серьёзному использованию этих серверов; fnord, например, обслуживает тысячи одновременных соединений.

Возможно, наиболее впечатляющая категория легких серверов по достижениям – высокопроизводительные серверы:

· cghttpd – минимальный Web-сервер, который можно рассматривать как эксперимент по использованию асинхронных средств, доступных в ядрах Linux серии 2.6.

· darkhttpd – быстрый однопоточный сервер HTTP/1.1.

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

· Kernux – модуль ядра Linux, который обеспечивает выполнение HTTP-демона.

· lighttpd – пятый по популярности Web-сервер в мире. Он оптимизирован под большое количество одновременных соединений: Типичный сценарий – использование lighttpd как сервера, разгружающего основной сервер, для выдачи статического контента.

· LiteSpeed Web Server – коммерческий лёгкий Web-сервер, в котором особый упор сделан на производительность и безопасность. LiteSpeed Technologies Inc. заявляет об ускорении в шесть раз для статического контента и несколько более скромных показателях для интерпретируемых страниц.

· Miniature JWS, известный также как tjws — написанный на Java Web-сервер, который обрабатывает сервлеты, JSP и тысячи параллельных соединений, занимая 77 килобайт. Его автор характеризует его так: «на 10% быстрее, чем Apache 2.x.»

· Yaws – высокопроизводительный сервер HTTP/1.1, написанный на Erlang.

Многие Web-серверы реализованы как классы или библиотеки, разработанные для встраивания в большие приложения. Среди них особенно интересны:

· EHS – «встраиваемый HTTP сервер,» класс C++, разработанный для встраивания в большие C++ приложения; и

· Embedded TCL Web Server, простейший Web-сервер, поддерживающий SSL и Basic Authentication и при этом фантастически быстрый – по замерам автора, не менее быстрый, чем lighttpd и AOLserver. Содержит меньше сотни строк Tcl.

На языке Python реализованы несколько Web-серверов, которые заполняют необычные ниши, в том числе:

· cdServer — маленький простой http-сервер на Python, «разработанный для выдачи (статического) контента с CD-ROM». Имеет ограниченные возможности в обслуживании динамического контента. У нас есть несколько проектов, которые включают доставку непортящихся «live CD», и инструменты типа cdServer являются для них критическими.

· edna – остроумный MP3-сервер на Python, основанный на HTTP.

Есть и другие интересные лёгкие Web-серверы, реализованные на Perl и на других, не так хорошо известных, языках:

· Camlserv – полный Web-сервер, написанный на ocaml и нацеленный на «высокоинтерактивные Web-страницы». Умещается в нескольких тысячах строчек ocaml, большинство из которых посвящено специальным возможностям работы с MySQL и HTML.

· dhttpd протоколирует обращения в том же формате, что и Apache. Имеет встроенный Perl-интерпретатор для поддержки CGI, виртуальный хостинг, IPv6, управление пропускной способностью и возможности безопасности.

· DNHTTPD написан на Perl для UNIX. Он поддерживает виртуальные хосты, SSL соединения, CGI и другое.

· Jellybean – написанный на Perl сервер Perl Object Server, основанный на HTTP.

· lns.http – общая Web-среда на LISP HTTP/1.1.

· Mongrel – библиотека и сервер для HTTP, написанные на Ruby.

· Nanoweb – быстрый, устойчивый Web-сервер, написанный на PHP. Имеет обширный список возможностей, включая полное соответствие HTTP/1.1, контроль обращений, аутентификацию, виртуальный хостинг, SSL совместимость и т.д.

· Naridesh – написанный на Perl Web-сервер.

· OpenAngel – написан на Perl. Безопасность.

· Xavante – HTTP/1.1 Web-сервер, написанный на Lua.

· XSP написан на C# и выполняет роль ведущего узла ASP.NET.

Мир Web-серверов состоит не только из Apache и IIS, их гораздо больше. В вашем распоряжении широкий выбор альтернативных решений – настолько маленьких, что их можно полностью понять, и при этом достаточно быстрых для серьёзных приложений.

Не нашли то, что искали? Воспользуйтесь поиском:

Лучшие изречения: Увлечёшься девушкой-вырастут хвосты, займёшься учебой-вырастут рога 9792 — | 7667 — или читать все.

188.64.174.135 © studopedia.ru Не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования. Есть нарушение авторского права? Напишите нам | Обратная связь.

Отключите adBlock!
и обновите страницу (F5)

очень нужно

Илон Маск рекомендует:  Что такое код printf
Понравилась статья? Поделиться с друзьями:
Кодинг, CSS и SQL
Название: Разработка системы электронного голосования на странице промо-сайта олимпиады «Мастера Photoshop»
Раздел: Рефераты по информатике, программированию
Тип: курсовая работа Добавлен 17:43:49 21 мая 2010 Похожие работы
Просмотров: 1425 Комментариев: 14 Оценило: 4 человек Средний балл: 4.8 Оценка: неизвестно Скачать