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

Post on 18-Apr-2015

106 views 1 download

Tags:

transcript

Google wave architectureJosé Dihego, Rafael Fonseca e Rafael

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

Visão Geral

Google Wave Architecture

Component Diagramcomponent classes

Data componets

WaveWavelet Document<<use>>

IWavelet

+create()

<<use>>

IDocument

+synchronize()

WaveProvider<<serves>>

IWave

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

<<manage>>

PlugProvider

IWaveExtensor

+createExtension()

IPlugProvider

+plugExtension()+createExtension()

WaveService

A business-processing component

WaveServiceUserInterface AccessProvider

DownStreamProvider UpStreamProvider

RequestHandler

IRequestHandler

+request()+receive()

<<use>>

<<use>>

DataBaseManager

IDataBaseManager

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

Comunication Components

DownStreamProvider UpStreamProvider

MarshallerXMPPExt

<<reside>> <<reside>>

RequestHandler

IRequestHandler

+request()+receive()

<<use>>

<<use>>

HandlerProtocolConnection<<reside>>

IHandlerProtocolConnection

QueueManage

<<reside>><<reside>>

Manage DB Components

WaveService DataBaseManager

IDataBaseManager

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

User Interface/server interface

WaveServiceUserInterface AccessProvider

Extension Plugin Componets

PlugProvider

IWaveExtensor

+createExtension()

ExtensionManageFactory

<<reside>>

IPlugProvider

+plugExtension()+createExtension()

Wave

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

Big Picture[2]WaveService

DownStreamProvider UpStreamProvider

MarshallerXMPPExt

<<reside>> <<reside>>

RequestHandler

IRequestHandler

+request()+receive()

<<use>>

<<use>>

HandlerProtocolConnection<<reside>>

IHandlerProtocolConnection

QueueManage

<<reside>><<reside>>

Deploy Diagramnode classes and component classes

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

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

Deploy Diagramnode instances and component instances

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

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

waveService3:WaveService

watchDog3:WatchDog

power connection

Local Area Connection

downStream3:DownStreamServer

serverProvider2:ServerProvider

HTTP/Local Area Connection

synchronizer2:Synchronizer

Local Area Connection

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

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

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.

...