Введение. Веб как программная платформа

Александр Колосов

Введение. Организационные вопросы

О чем этот курс?

  • Основополагающие принципы работы и стандарты Веб.
  • Архитектурные принципы и подходы к разработке серверной части (back-end) веб-приложений.
  • Инструментальные средства поддержки процесса разработки веб-приложений.
  • Современные проблемы разработки веб-приложений: обеспечение качества, безопасность, высокие нагрузки.

Необходимые базовые навыки

  • Web-технологии (HTML, CSS).
  • Сетевые технологии (TCP, IP, DNS).
  • Управление реляционными БД (SQL).
  • Знание любого языка программирования (Python, Ruby, C, Java, JavaScript, PHP, Pascal, …)
  • Работа с командной оболочкой UNIX/Linux (Bash).

Организация аудиторной нагрузки

Учебный план: 180 часов, из них 45 часов — аудиторная работа, 135 часов — самостоятельная работа.

  • Лекции (15 часов): среда (числитель), 9:45, каб. 341.
  • Практики (30 часов): среда (каждая неделя), 9:45/11:30, каб. 341.
  • Отчетность в осеннем семестре: экзамен по результатам мини-проекта по разработке веб-приложения.

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

  1. Функционально простое веб-приложение. Предполагаемый набор функций должен быть предоставлен в виде краткой спецификации требований.
  2. Приложение должно быть разработано с использованием существующего веб-фреймворка (любой язык, любой фреймворк).
  3. Приложение должно использовать БД (классическую реляционную, NoSQL, …)
  4. Доступ к приложению должен быть обеспечен посредством одного из веб-серверов общего назначения (Apache WebServer, Nginx, Microsoft IIS, OpenBSD httpd, lighttpd, …)
  1. В приложении должно быть реализовано разделение доступа (аутентификация и авторизация).
  2. Существенная часть кода должна быть покрыта unit-тестами.
  3. Должны быть учтены базовые рекомендации по обеспечению информационной безопасности.

Примерный план лекций

  1. Веб как программная платформа.
  2. Протокол HTTP.
  3. Внутреннее устройство Веб-сервера.
  4. Веб-приложения и фреймворки.
  5. Информационная безопасность веб-приложений.
  6. Технологии и инструментальные средства процесса разработки веб-приложений.
  7. Проблемы разработки высоконагруженных веб-приложений.

История развития идей гипермедиа

Цифровые технологии дают возможность реализовать накопленные идеи:

Становление «Всемирной паутины»

«Мне всего-лишь нужно было взять идею гипертекста, соединить ее с идеями TCP (Transmission Control Protocol) и доменной системы имен (DNS) и — та-да! — получилась Всемирная паутина (the World Wide Web)…»

— Тим Бёрнерс-Ли

Причины успеха проекта WorldWideWeb

  • Благоприятные условия появления World Wide Web
    • наработки в области гипермедиа,
    • стандартизирован язык разметки SGML (Standard Generalized Markup Language),
    • широкое распространение набора протоколов TCP/IP.
  • Простота и открытость технологии, а также свободно-распространяемая реализация Web-сервера от CERN делают World Wide Web «killer feature» сети Интернет.
  • Основное применение: обмен информацией, знаниями и ресурсами в академическом сообществе.

Базовые компоненты технологии Веб

  1. Язык разметки для форматирования гипертекстовых документов.
    Простой текст с добавленной в него информацией о способах его представления и строении.
    • На основе SGML был разработан более простой язык HTML.
  2. Унифицированная нотация для адресации ресурсов, доступных по сети.
    Концепция URI (Uniform Resource Identificator):

    scheme://host[:port]/path/…/[;url-params][?query-string][#anchor]

  1. Протокол для транспортировки гипертекстовых документов по сети.
    Протокол прикладного уровня HTTP (HyperText Transfer Protocol), работающий поверх протокола TCP:
    • взаимодействие в форме запрос/ответ,
    • формат сообщений: заголовки + пустая строка + тело,
    • протокол без сохранения состояния.

От веб-сайтов к веб-приложениям

  • Отдельные веб-страницы размещались на веб-серверах больших исследовательских и образовательных организаций.
  • С ростом сети Интернет у большего количества пользователей появляется возможность разворачивать свои веб-серверы, появляются веб-сайты — наборы веб-страниц с единой тематикой и оформлением.
  • Переход от понимания Web как системы обмена статическими ресурсами к Web как динамическому информационныму сервису:
    • поисковые сервисы (сначала преимущественно по FTP и Gopher),
    • информация о погоде,
    • сколько воды осталось в автомате с газировкой,
    • телефонный справочник (одно из первых Web-приложений, продемоенстрированных Т. Бернерсом-Ли в CERN).
  • К середине 90-х Интернет получает все большее распространение среди обычных людей. Бизнес понимает, что Web — это новая платформа для продвижения своих товаров и услуг.

Классическая высокоуровневая архитектура веб-приложения

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

Sorry, your browser does not support SVG.

Веб как программная платформа

Особенности клиент-серверной архитектуры

Клиент-серверная архитектура — одна из моделей организации распределенных приложений.



Преимущества:

  • Централизация данных (проще обеспечить информационную безопасность)
  • Единая реализация приложения-сервера (нет необходимости учитывать особенности пользовательской платформы)
  • Независимая и простая реализация приложений-клиентов (проще разработать кросс-платформенное решение)
  • Менее требовательная к ресурсам реализация приложений-клиентов

Недостатки и ограничения:

  • Сервер — единая точка отказа
  • Высокая зависимость от характеристик сети
  • Невозможность обеспечения согласованности данных, доступности и устойчивости к разделению одновременно (Теорема CAP)
  • Необходимость учета большого числа внешних негативных факторов при разработке приложений (Fallacies of distributed computing)

«Обогащение» клиента

  • 1992 г., ViolaWWW — один из первых графических браузеров (для X Window System).
    • первая реализация скриптового языка, встраиваемого в HTML-страницу.
  • 1993 г., NSCA Mosaic — первый веб-браузер в современном понимании этого слова. World Wide Web становится интересен (и доступен) простым пользователям.
    • простой интерфейс
    • закладки, печать документа,
    • изображения встраиваются в страницу, а не показываются иконкой.
  • 1995 г., первая реализация языка JavaScript в браузере Netscape Navigator.
    • изначальная идея — встроить Scheme в браузер.
    • результат: динамическая типизация, синтаксис языка C, семантика на основе идей из языков Self и Scheme.
    • Выдержка из пресс-релиза: «A multimedia weather forecast applet written in Java can be scripted by JavaScript to display appropriate images and sounds based on the current weather readings in a region».
  • 1995 г., начало борьбы за господство на рынке браузеров, также известной как «Война браузеров»: Netscape vs. Microsoft.
  • Идея Netscape — Веб как распределенная операционная система (webtop vs. desktop).

Расширение набора интерактивных возможностей на стороне клиента

  • Тэг <object>, Java-апплеты, ActiveX, Adobe (Macromedia) Flash.
  • DHTML (Dynamic HTML) — подход к зазработке интерактивных клиентских приложений: HTML + JavaScript + CSS + DOM.

    Пример использования DHTML.

  • AJAX (Asynchronous JavaScript And XML) — подход к разработке асинхронных Веб-приложений: дополнительные данные могут запрашиваться от сервера и отображаться в рамках текущей страницы без перезагрузки всей страницы.

    Пример использования AJAX.

  • HTML5 — стандартизирует большое количество возможностей браузера, позволяющих использовать его как платформу для создания интерактивных клиент-серверных приложений.
    • тэги <canvas>, <video>, <audio>;
    • обработка ошибок при обработке HTML-документов;
    • разнообразные API и DOM являются частью стандарта HTML5;
    • рабочая группа WHATWG рассматривает HTML5 как живой стандарт (Living Standard).

Высокоуровневая архитектура современных веб-приложений

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

Sorry, your browser does not support SVG.