josé dihego, rafael fonseca e rafael bernardo jdso, rjcf, rbdb{@cin.ufpe.br}

22
Google wave architecture José Dihego, Rafael Fonseca e Rafael Bernardo jdso, rjcf, rbdb{@cin.ufpe.br}

Upload: internet

Post on 18-Apr-2015

105 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: José Dihego, Rafael Fonseca e Rafael Bernardo jdso, rjcf, rbdb{@cin.ufpe.br}

Google wave architectureJosé Dihego, Rafael Fonseca e Rafael

Bernardojdso, rjcf, rbdb{@cin.ufpe.br}

Page 2: José Dihego, Rafael Fonseca e Rafael Bernardo jdso, rjcf, rbdb{@cin.ufpe.br}

Visão Geral

Page 3: José Dihego, Rafael Fonseca e Rafael Bernardo jdso, rjcf, rbdb{@cin.ufpe.br}

Google Wave Architecture

Page 4: José Dihego, Rafael Fonseca e Rafael Bernardo jdso, rjcf, rbdb{@cin.ufpe.br}

Component Diagramcomponent classes

Page 5: José Dihego, Rafael Fonseca e Rafael Bernardo jdso, rjcf, rbdb{@cin.ufpe.br}

Data componets

WaveWavelet Document<<use>>

IWavelet

+create()

<<use>>

IDocument

+synchronize()

WaveProvider<<serves>>

IWave

+create()+applyTransformation()+sendTransformation()

<<manage>>

PlugProvider

IWaveExtensor

+createExtension()

IPlugProvider

+plugExtension()+createExtension()

WaveService

Page 6: José Dihego, Rafael Fonseca e Rafael Bernardo jdso, rjcf, rbdb{@cin.ufpe.br}

A business-processing component

WaveServiceUserInterface AccessProvider

DownStreamProvider UpStreamProvider

RequestHandler

IRequestHandler

+request()+receive()

<<use>>

<<use>>

DataBaseManager

IDataBaseManager

+add()+remove()+update()+commit()

Page 7: José Dihego, Rafael Fonseca e Rafael Bernardo jdso, rjcf, rbdb{@cin.ufpe.br}

Comunication Components

DownStreamProvider UpStreamProvider

MarshallerXMPPExt

<<reside>> <<reside>>

RequestHandler

IRequestHandler

+request()+receive()

<<use>>

<<use>>

HandlerProtocolConnection<<reside>>

IHandlerProtocolConnection

QueueManage

<<reside>><<reside>>

Page 8: José Dihego, Rafael Fonseca e Rafael Bernardo jdso, rjcf, rbdb{@cin.ufpe.br}

Manage DB Components

WaveService DataBaseManager

IDataBaseManager

+add()+remove()+update()+commit()

Page 9: José Dihego, Rafael Fonseca e Rafael Bernardo jdso, rjcf, rbdb{@cin.ufpe.br}

User Interface/server interface

WaveServiceUserInterface AccessProvider

Page 10: José Dihego, Rafael Fonseca e Rafael Bernardo jdso, rjcf, rbdb{@cin.ufpe.br}

Extension Plugin Componets

PlugProvider

IWaveExtensor

+createExtension()

ExtensionManageFactory

<<reside>>

IPlugProvider

+plugExtension()+createExtension()

Wave

Page 11: José Dihego, Rafael Fonseca e Rafael Bernardo jdso, rjcf, rbdb{@cin.ufpe.br}

Big Picture[1]

WaveWavelet

Document<<use>>

IWavelet

+create()

<<use>>

IDocument

+synchronize()

WaveProvider

SynchronizationLocalEngine

<<reside>>

Transformations

<<reside>>

<<reside>>

<<serves>>

WaveService

IWave

+create()+applyTransformation()+sendTransformation()

Synchronizer<<used>>

UserInterface AccessProvider

<<manage>>

ISynchronizationLocalEngine

DataBaseManager

IDataBaseManager

+add()+remove()+update()+commit()

PlugProvider

IWaveExtensor

+createExtension()

ExtensionManageFactory

<<reside>>

IPlugProvider

+plugExtension()+createExtension()

Page 12: José Dihego, Rafael Fonseca e Rafael Bernardo jdso, rjcf, rbdb{@cin.ufpe.br}

Big Picture[2]WaveService

DownStreamProvider UpStreamProvider

MarshallerXMPPExt

<<reside>> <<reside>>

RequestHandler

IRequestHandler

+request()+receive()

<<use>>

<<use>>

HandlerProtocolConnection<<reside>>

IHandlerProtocolConnection

QueueManage

<<reside>><<reside>>

Page 13: José Dihego, Rafael Fonseca e Rafael Bernardo jdso, rjcf, rbdb{@cin.ufpe.br}

Deploy Diagramnode classes and component classes

Page 14: José Dihego, Rafael Fonseca e Rafael Bernardo jdso, rjcf, rbdb{@cin.ufpe.br}

High levelClient

<<device>>

ServerProvider<<device>>

WaveService<<device>>

ServerDispatcher<<device>>

UserInterface<<deploy>>

AccessProvider <<deploy>>

<<deploy>>

WaveProvider<<deploy>>

WaveService <<deploy>>

<<deploy>>

Wave

<<deploy>>

Wavelet

<<deploy>>

Document

<<deploy>>

HTTP

HTPP

HTTP

PlugProvider

<<deploy>>

PlugServer

HTTP

Page 15: José Dihego, Rafael Fonseca e Rafael Bernardo jdso, rjcf, rbdb{@cin.ufpe.br}

Low level

DataBase<<device>>

DataBaseManager

<<deploy>>

DownStreamServer<<device>> UpStreamServer

<<device>>

DownStreamProvider UpStreamProvider

<<deploy>> <<deploy>>

Synchroniser<<device>>Synchronizer<<deploy>>

Local Area Connection Local Area Connection

HTTP/ Local Area Connection HTTP/ Local Area Connection

WatchDog<<device>>power connection

WaveService<<device>>

Page 16: José Dihego, Rafael Fonseca e Rafael Bernardo jdso, rjcf, rbdb{@cin.ufpe.br}

Deploy Diagramnode instances and component instances

Page 17: José Dihego, Rafael Fonseca e Rafael Bernardo jdso, rjcf, rbdb{@cin.ufpe.br}

jdso:Clientrjcf:Client

serverDispatcher:ServerDispatcher serverDispatcher2:ServerDispatcher

HTTPHTTP HTTP

HTTP

serverProvider:ServerProvider serverProviderBackup:ServerProvider

HTTP/Local Area Connection

XMPPextensionServer:PlugServer HTTP

radon: Client

HTTP

serverProvider:ServerProvider HTTP

XMPP

Page 18: José Dihego, Rafael Fonseca e Rafael Bernardo jdso, rjcf, rbdb{@cin.ufpe.br}

waveService1:WaveService waveService2:WaveService

watchDog1:WatchDog

watchDog2:WatchDog

power connectionpower connection

synchronizer:Synchroniser

Local Area Connection

Local Area Connection

upStream:UpStreamServer

HTTPLocal Area Connection

Local Area Connection

Local Area Connection

+Local Area Connection

+HTTP

downStream1:DownStreamServer downStream2:DownStreamServer

serverProvider:ServerProvider

Page 19: José Dihego, Rafael Fonseca e Rafael Bernardo jdso, rjcf, rbdb{@cin.ufpe.br}

waveService3:WaveService

watchDog3:WatchDog

power connection

Local Area Connection

downStream3:DownStreamServer

serverProvider2:ServerProvider

HTTP/Local Area Connection

synchronizer2:Synchronizer

Local Area Connection

Page 20: José Dihego, Rafael Fonseca e Rafael Bernardo jdso, rjcf, rbdb{@cin.ufpe.br}

jdso:Clientrjcf:Client

serverDispatcher:ServerDispatcher serverDispatcher2:ServerDispatcher

HTTPHTTP HTTP

HTTP

serverProvider:ServerProvider serverProviderBackup:ServerProvider

HTTP/Local Area Connection

XMPP

waveService1:WaveService waveService2:WaveService waveService3:WaveService

BackUpWaveService:WaveService

watchDog1:WatchDog

watchDog2:WatchDog

watchDog3:WatchDog

power connection

power connection

power connection

watchDogOfBackUp:WatchDog

power connection

synchronizer:Synchroniser

synchronizer2:Synchronizer

Local Area Connection

Local Area Connection

Local Area Connection

downStream1:DownStreamServer downStream2:DownStreamServer

downStream3:DownStreamServer

upStream:UpStreamServer

HTTPLocal Area Connection

Local Area Connection

Local Area Connection

+Local Area Connection

+HTTPHTTP

Local Area Connection

extensionServer:PlugServer HTTP

radon: Client

HTTP

serverProvider2:ServerProvider HTTP

XMPP

serverProvider2:ServerProvider

HTTP/Local Area Connection

Page 21: José Dihego, Rafael Fonseca e Rafael Bernardo jdso, rjcf, rbdb{@cin.ufpe.br}

Decisões ArquiteturaisLinguagem para o Backend- Java

Prós: Independente de plataforma, Grande aceitação na comunidade, Portabilidade.

Contra: Desempenho.Utilização de Java + Flex para

implementação do Frontend.Requisitos: Usabilidade/Extensibilidade

(Plugins)Pós: Interface rica e bem flexível.Alternativa: Ajax

Page 22: José Dihego, Rafael Fonseca e Rafael Bernardo jdso, rjcf, rbdb{@cin.ufpe.br}

Decisões ArquiteturaisUtilização do protocolo XMPP

Requisito: Comunicação distribuída e Descentralizada, Segurança.

Pós: Comunicação descentralizada. Vários servidores são utilizados para a comunicação entre diversas entidades. Não ha um ponto central de falha.

...