Событийно-ориентированные архитектуры Программирование с использованием POSIX thread library 2006-2007 Иртегов Д.В. Учебное пособие подготовлено по заказу.

Презентация:



Advertisements
Похожие презентации
Учебный курс Объектно-ориентированный анализ и программирование Лекция 4 Трансформация логической модели в программный код Лекции читает кандидат технических.
Advertisements

Лекция 3. Исключения и прерывания в встроенных системах.
Архитектура операционной системы. Ядро и вспомогательные модули операционной системы При функциональной декомпозиции ОС модули разделяются на две группы:
Проф. В.К.Толстых, Технологии разработки Internet- приложений Архитектура IIS 5, IIS 6, исполняющая среда ASP.NET в IIS 7, конфигурирование.
Сокеты Сети и системы телекоммуникаций Созыкин А.В.
ДонНУ, кафедра КТ, проф.В.К.Толстых Web-службы (Web-сервисы) введение введение Разработка в среде Delphi Из цикла лекций «Internet-технологии разработки.
Тренинг «Разработка веб-приложений на ASP.NET» Занятие 2 Страницы и элементы управления Гайдар Магдануров
1 Работа под управлением ОС Windows. 2 Темы для обсуждения 1. Что такое операционная система Что такое операционная система Понятие ОС Виды ОС 2. Операционная.
Виртуальная машина автоматного программирования Наумов А.С., СПбГУ ИТМО 2006.
WEB- ТЕХНОЛОГИИ Лекция 5. Традиционное Web- программирование 1.
Системные механизмы Windows. Системные механизмы диспетчеризация ловушек, в т.ч. прерываний, DPC (deferred procedure call), APC (asynchronous procedure.
Рассматриваемые темы Введение в кластеринг Кластеринг Stateless session beans Кластеринг Stateful session beans Конфигурация кластеринга 2-1.
Архитектура операционных систем. Архитектура ОС Состав модулей (компонент) ОС Структура связей между отдельными модулями ОС Принципы взаимодействия модулей.
Использование AJAX для асинхронной передачи данных. Что такое AJAX. Как использовать. В чем преимущество. Примеры использования на крупных сайтах. Выполнила:
Операционные системы Подготовила Подготовила студентка студентка 1 курса группы Э курса группы Э-108 Шпудейко Кристина Шпудейко Кристина.
WEB- ТЕХНОЛОГИИ Лекция 1. WEB- ПРИЛОЖЕНИЯ 1 Особый тип программ, построенных по архитектуре « клиент - сервер » Основа получение запросов от пользователя.
Smart-Soft Traffic Inspector. Основные возможности Traffic Inspector: комплексное решение для подключения сети или персонального компьютера к сети Интернет.
Архитектура операционных систем Семестр 2, Лекция 1.
Название системы - iTest Текущая версия Официальный сайт - Лицензия -GPL v2 Компоненты системы iTestServer серверная.
Встроенные Системы Часть 3. Прерывания Кафедра Информатики, мат-мех СПбГУ Copyright © 2004 Victor Vengerov
Транксрипт:

Событийно-ориентированные архитектуры Программирование с использованием POSIX thread library Иртегов Д.В. Учебное пособие подготовлено по заказу и при поддержке ООО «Сан Майкросистемс СПБ»

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

Что такое событийно- ориентированная архитектура S. Ferg Event-Driven Programming: Introduction, Tutorial, History

Голливудский принцип Dont call us, we will call you –(не звоните нам, мы сами вам позвоним) Среда (framework) вызывает ваши компоненты, а не вы вызываете библиотеку. Вы регистрируете обработчики, framework вызывает их. Каждый обработчик – конечный автомат (обработка события приводит к изменению переменных состояния)

Графические пользовательские интерфейсы

Драйверы устройств

Обработка запросов блочным или STREAMS устройством

Диаграмма активностей

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

Менеджер событий Часть framework Это он вызывает обработчики Он может блокироваться, ожидая событий Или может устанавливать события в очередь Может быть однопоточным (синхронная очередь событий) Или многопоточным (асинхронная очередь событий)

Преимущества событийно- ориентированной архитектуры Можно обрабатывать много событий в одном потоке Потоки создавать дорого (мегабайт стека + LWP в ядре + системные структуры данных …) Можно получить значительную часть преимуществ многопоточности в однопоточной программе

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

Событийно-ориентированная архитектура сетевого сервера Приложение ориентированное на ввод/вывод Менеджер событий на select/poll –Событие – готовность дескриптора к чтению или записи Менеджер событий на aio –Событие – завершение предыдущей операции чтеня или записи Solaris ports можно использовать для диспетчеризации событий обоих типов

Реализация кэширующего прокси Очень простой прокси –Кэш в ОЗУ (теряется при рестарте) –Поддерживает только GET и HEAD –Кэширует все подряд Предполагается, что вы знаете HTTP Рассмотрим диаграмму активностей по обработке одного запроса Будем реализовать обработку запроса двумя обработчиками – клиентского соединения и серверного соединения

Клиентское соединение (последовательность событий) Ждем входящего соединения Получаем его Получаем строку запроса GET HTTP/1.0http:// Поддерживается ли тип запроса? Есть ли страница в кэше? (если нет – надо создать) Докачана ли страница в кэше или нет? Передать страницу из кэша клиенту Если страница не докачана, надо подождать, пока не появятся еще данные.

Картинка

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

Надо ли анализировать заголовок? Настоящий прокси должен анализировать запрос –Cache-control: no-cache И ответ –Pragma: No-cache –Expires Наш игрушечный прокси будет кэшировать все подряд

Что делать, если клиент закроет соединение? Оповещать серверное соединение Но если есть еще клиенты, работающие с этой страницей, серверное соединение завершать не следует Варианты: 1.Серверное соединение должно считать, сколько клиентов работает с этой страницей 2.Серверное соединение в любом случае должно докачивать страницу до конца Второй вариант явно проще

Это еще не все Index of /debian-cd/current/i386/iso-dvd/ NameLast ModifiedSizeType Parent DirectoryParent Directory/ - Directory debian-40r0-i386-DVD-1.isodebian-40r0-i386-DVD-1.iso 2007-Apr-23 10:07:09 4.3G application/octet-stream debian-40r0-i386-DVD-2.isodebian-40r0-i386-DVD-2.iso 2007-Apr-23 10:10:47 4.3G application/octet-stream debian-40r0-i386-DVD-3.isodebian-40r0-i386-DVD-3.iso 2007-Apr-23 10:14:35 4.2G application/octet-stream Под.iso на 32-разрядной платформе вам никогда не дадут памяти На 64-разрядной платформе может не хватить swap-пространства или квоты памяти

Что делать, если не хватает памяти под страницу? Надо прекращать кэширование и переходить в «сквозной» режим Если сервер хороший, он передаст вам размер страницы в поле заголовка Content- Length Но сервера HTTP/1.0 имеют право этого не делать Надо уметь переключаться в «сквозной» режим на ходу Но что делать, если с этой страницей работает несколько клиентов?

Что делать, если не хватает памяти под страницу? Первые три студента в группе, которые будут сдавать прокси, не будут тестироваться на сайтах с большими объектами

Еще рекомендации Стандартного API для асинхронных обращений к DNS нет –Допускается блокировка на gethostbyname Существует стандартный API асинхронного connect(3SOCKET) –fcntl(socket, F_SETFL, O_NONBLOCK); Для стресс-тестирования можно использовать wget(1)