josé dihego, rafael fonseca e rafael bernardo jdso, rjcf, rbdb{@cin.ufpe.br}
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.
...