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

Post on 12-Nov-2014

225 Views

Category:

Documents

12 Downloads

Preview:

Click to see full reader

DESCRIPTION

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

TRANSCRIPT

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

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

random@ukr.net

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

Browser

Web Server Application Storage

1

2 3

4

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

Например:

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

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

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

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

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

Browser

Web Server Application Storage

1

2 3

4 Events

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

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

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

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

Browser

Web Server Application Storage

1

2 3

4

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

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

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

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

Решение

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

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

данных

Comet

© Caplin Systems Ltd

The New Buzzword. Blame Alex Russell.

Реализации

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

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--

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);}

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

MR PS SS LSSMR/

XHRSSE Flash

MSIE + + +*

Mozilla + + + + + +*

Opera +/- + + + + +*

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

Error handling

Custom headers

ProxyCross-site

Duplex&binary

PS + +*

LSS + + +

Flash + + +/- +* +

О чем помнить

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

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

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

Browser

Web Server Application Storage

1

2 3

4 Events

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

Browser

Sockets & Application Server

Events

Keywords

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

Medusa

Вопросы ?

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

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

random.ua@gmail.com Skype: random.ua

top related