Использование персистентных соединений в...

19
Использование персистентных соединений в веб-приложениях Александр Костюченко Ukr.net [email protected]

Upload: randomua

Post on 12-Nov-2014

225 views

Category:

Documents


12 download

DESCRIPTION

Презентация для UAWEB 2008

TRANSCRIPT

Page 1: Использование персистентных соединений в веб-приложениях

Использование персистентных соединений в веб-приложениях

Александр КостюченкоUkr.net

[email protected]

Page 2: Использование персистентных соединений в веб-приложениях

Типовой поток выполнения

Browser

Web Server Application Storage

1

2 3

4

Page 3: Использование персистентных соединений в веб-приложениях

Типовой поток выполнениянеэффективендлявеб-приложенийкоторым требуется обрабатывать потоки событий.

Page 4: Использование персистентных соединений в веб-приложениях

Например:

Чаты, instant messaging Уведомления о состоявшихся событиях

(пр: получение нового сообщения) Демонстрация состояния

инициированного пользователем процесса (пр: прогресс-бар)

Мониторинг (пр: биржевые тикеры)

Page 5: Использование персистентных соединений в веб-приложениях

Типовой поток + события

Browser

Web Server Application Storage

1

2 3

4 Events

Page 6: Использование персистентных соединений в веб-приложениях

В чем проблема?

Запоздалая реакция Лишний трафик Нагрузка на сервер

Для получения свежих данных требуется регулярно опрашивать сервер.Снова и снова.

Page 7: Использование персистентных соединений в веб-приложениях

В чем проблема ? Конкретней!

Browser

Web Server Application Storage

1

2 3

4

1. Установление соединения

2. Инициализация приложения и авторизация

3. Соединение и работа с хранилищем

4. Лишний трафик ~1Кб/запрос

Page 8: Использование персистентных соединений в веб-приложениях

Решение

Персистентные (насколько это возможно) соединения

aka Comet Отказ от веб-сервера и/или хранилища

данных

Page 9: Использование персистентных соединений в веб-приложениях

Comet

© Caplin Systems Ltd

The New Buzzword. Blame Alex Russell.

Page 10: Использование персистентных соединений в веб-приложениях

Реализации

multipart/x-mixed-replace (MR) “Page streaming” (PS) “Service streaming” (SS) Limited SS (LSS) Multipart XMLHTTPRequest (MR/XHR) Server-sent Events (SSE) Flash Sockets

Page 11: Использование персистентных соединений в веб-приложениях

Multipart/x-mixed-replace

aka “Server push” © Netscape ’95 2003: XMLHttpRequest.multipart = true

Content-Type: multipart/x-mixed-replace; boundary=“qwer123”

--qwer123Content-Type: text/plain

Dis is one half.--qwer23Content-Type: text/plain

Did you leave the room ?--qwer123--

Page 12: Использование персистентных соединений в веб-приложениях

Server-sent Events

WebApps 1.0, HTML5 2006: Opera<event-source src=http://localhost/app/events.pl”/>

Content-Type: application/x-dom-event-stream

Event: event-namedata: whatever

addEventListener(‘event-name’,eventHandler);function eventHandler(event) { alert(event.data);}

Page 13: Использование персистентных соединений в веб-приложениях

Реализации - совместимость

MR PS SS LSSMR/

XHRSSE Flash

MSIE + + +*

Mozilla + + + + + +*

Opera +/- + + + + +*

Page 14: Использование персистентных соединений в веб-приложениях

Реализации - возможности

Error handling

Custom headers

ProxyCross-site

Duplex&binary

PS + +*

LSS + + +

Flash + + +/- +* +

Page 15: Использование персистентных соединений в веб-приложениях

О чем помнить

Все, кроме MR (и PS*), требуют JavaScript

Память не резиновая 1 соединение занято постоянно Suffering from buffering Same origin policy

Page 16: Использование персистентных соединений в веб-приложениях

А в это время на серверсайде…

Browser

Web Server Application Storage

1

2 3

4 Events

Page 17: Использование персистентных соединений в веб-приложениях

Эффективная архитектура

Browser

Sockets & Application Server

Events

Page 18: Использование персистентных соединений в веб-приложениях

Keywords

COMETd Bayeux Dojo Toolkit Liberator Sever, mod_pubsub Perl: POE, AnyEvent; Python: Twisted,

Medusa

Page 19: Использование персистентных соединений в веб-приложениях

Вопросы ?

Спасибо за внимание!

Приходите работать в Ukr.net! ;)

[email protected] Skype: random.ua