Tuesday, March 16, 2004
to be edited....
Apontamentos sobre o Serviço de notificação
Definição de notificação.
Envio de mensagens do servidor para o cliente, sem o cliente as requisitar.
Problema:
Devido às firewalls muitas vezes não é possivel que o servidor abra ligações com o cliente.
Uma solução possivel é o cliente abrir uma ligação com o servidor que este mantem aberta e utiliza para enviar mensagens para o cliente.Tem como problema manter uma ligação aberta.
Dado a nossa opção de utilizar uma aplicação Web como cliente dos nossos serviços, surgiram outros problemas:
Como manter uma ligação aberta com o browser?
Existem pelo menos duas soluções, uma frame escondida ou um componente(ou applet)
Conclusões sobre o prototipo implementado
Foi implementado um prototipo do serviço de notificação para utilização com o serviço de mensagens instantaneas.
A unica notificação suportada é a chegada de uma mensagem.
É util fazer testes de carga para ver se esta solução é viavel, ou como modo de argumentar em favor desta solução.
Limitações:
Apenas permite um tipo de noticação e para apenas um serviço.
Apenas permite notificações iniciadas por outro utilizador.
Exemplo: não permite notificações do genero
user xxx is typing a message.
porque não acontece na sequencia da activação de um controlo.
Evolução:
O serviço de notificação deve servir como multiplexer de notificações, ou seja suportar vários tipos de notificação de varios serviços.
Criação de mais um canal de comunicação com o servidor.
Problemas futuros:
Cada serviço necessita de varios tipos de notificações, alguns com impacto no cliente outros não.
Quem é que é responsavel por gerar o script responsavel por actualizar o cliente.( Elementos de visualização, que elementos actualizar, como encontra-los na pagina)
Funcionamento possivel:
Exemplo recepção de uma mensagem:
1 - O cliente X envia uma mensagem para o cliente Y (traduz-se numa chamada a um metodo de serviço de notificação)
2 - O serviço de notificação é responsavel pela criação do comando respondente à mensagem recebida(tabela de lookup, hashtable) e deposita-o na queue do cliente.
3 - A thread do cliente é desbloqueada e executa o comando( o comando tem de conhecer a instancia que é responsavel pela sua execução) e recebe um bloco de script em retorno.
Nota: o bloco de script pode ser um objecto composto pelo elemento de destino e pelo script a executar.
Nota 2 : dá para notar que as acções resultantes das notificações dependem em muito do modelo gráfico do cliente, por isso é necessário arranjar um modelo de objectos para representar a pagina.
Nota 3 :como guardar estado de visualização???? como identificar cada elemento da pagina????
Apontamentos sobre o Serviço de notificação
Definição de notificação.
Envio de mensagens do servidor para o cliente, sem o cliente as requisitar.
Problema:
Devido às firewalls muitas vezes não é possivel que o servidor abra ligações com o cliente.
Uma solução possivel é o cliente abrir uma ligação com o servidor que este mantem aberta e utiliza para enviar mensagens para o cliente.Tem como problema manter uma ligação aberta.
Dado a nossa opção de utilizar uma aplicação Web como cliente dos nossos serviços, surgiram outros problemas:
Como manter uma ligação aberta com o browser?
Existem pelo menos duas soluções, uma frame escondida ou um componente(ou applet)
Conclusões sobre o prototipo implementado
Foi implementado um prototipo do serviço de notificação para utilização com o serviço de mensagens instantaneas.
A unica notificação suportada é a chegada de uma mensagem.
É util fazer testes de carga para ver se esta solução é viavel, ou como modo de argumentar em favor desta solução.
Limitações:
Apenas permite um tipo de noticação e para apenas um serviço.
Apenas permite notificações iniciadas por outro utilizador.
Exemplo: não permite notificações do genero
user xxx is typing a message.
porque não acontece na sequencia da activação de um controlo.
Evolução:
O serviço de notificação deve servir como multiplexer de notificações, ou seja suportar vários tipos de notificação de varios serviços.
Criação de mais um canal de comunicação com o servidor.
Problemas futuros:
Cada serviço necessita de varios tipos de notificações, alguns com impacto no cliente outros não.
Quem é que é responsavel por gerar o script responsavel por actualizar o cliente.( Elementos de visualização, que elementos actualizar, como encontra-los na pagina)
Funcionamento possivel:
Exemplo recepção de uma mensagem:
1 - O cliente X envia uma mensagem para o cliente Y (traduz-se numa chamada a um metodo de serviço de notificação)
2 - O serviço de notificação é responsavel pela criação do comando respondente à mensagem recebida(tabela de lookup, hashtable) e deposita-o na queue do cliente.
3 - A thread do cliente é desbloqueada e executa o comando( o comando tem de conhecer a instancia que é responsavel pela sua execução) e recebe um bloco de script em retorno.
Nota: o bloco de script pode ser um objecto composto pelo elemento de destino e pelo script a executar.
Nota 2 : dá para notar que as acções resultantes das notificações dependem em muito do modelo gráfico do cliente, por isso é necessário arranjar um modelo de objectos para representar a pagina.
Nota 3 :como guardar estado de visualização???? como identificar cada elemento da pagina????