QUANDO RENOVAR DADOS DA CLASSES

MAXCIM 11/05/2016 19:59:20
#462013
Olá amigos,

estou trabalhando para passar meu sistema para POO , tenho obtido bons resultados, a performance esta bem melhor.
estou carregando os dados nas classes desconectando da base de dados, usando o dados OFF line esta bem mais rápido do que ficar fazendo selects no banco a todo instante, se falar no trafego de rede que diminuiu consideravelmente.

mas me deparei com um problema, em que momento devo resetar as classes e recarregar seu conteúdo?
como eu descubro que certo dado ou tabela foi editada em outro micro e devo renovar os dados na classe?

exemplo tem a classe com nível e permissões de usuários, carrego esse dados assim que o usuário loga, mas e se o gestor muda algum tipo de acesso, ou revoga alguma permissão? como eu fico sabendo cá nesse micro que os dados foram editados lá no outro micro, e renovar os dados da classe usuários?


desde já agradeço.
KERPLUNK 11/05/2016 21:01:42
#462015
Resposta escolhida
Com um log de atividades. Cada vez que o usuário busca um objeto para edição, deve haver um log dessa atividade que deve ser marcado como [Ô]pronto[Ô] quando o usuário não mais estiver usando. Com isso você tem duas opções:
1 - Alguma tarefa que monitore esse log pela atividade, tipo e objeto. Exemplo, usuário [Ô]Mariazinha[Ô] abriu o cliente 9 para edição e não fechou ainda. Isso não impede que o usuário [Ô]Pedrinho[Ô] abra o mesmo tipo e mesmo objeto para edição também. Ambos, terão um log de atividade dizendo qual tipo e qual objeto está aberto para edição. Quando qualquer um dos dois alterar e salvar o objeto, o log correspondente seria marcado como [Ô]alterado[Ô]. No momento da gravação o log é consultado se não houve alteração e caso não tenha, simplesmente grava. Quando o segundo usuário for gravar os dados, o sistema consulta se houve gravação no objeto e informa o usuário que o objeto foi alterado antes da gravação e pede para atualizar. O último usuário infelizmente perderia as suas alterações para poder atualizar. Esse é o tipo de edição passiva.
2 - Assim que um dos dois usuários editando fizer a gravação, o sistema consulta quais usuários estão com o mesmo objeto aberto e envia uma mensagem para quem quer que tenha o objeto aberto sobre a mudança. E o usuário pode escolher se quer ou não atualizar seus dados.

Em ambos os casos, o XML do objeto correspondente fica gravado no log de alterações e pode ser usado para atualizar somente as diferenças na tela do segundo usuário. Como o XML pode ser desserializado para o tipo correspondente, é possível fazer essa comparação, pois o tipo do objeto é o mesmo e fica gravado no log também.

Esse é um dos próximos vídeos que vou colocar no meu canal, mostrando essa técnica, tanto para aplicações Web quanto para aplicações Desktop, como ambas são com o uso de mensagens [Ô]PUSH[Ô], a diferença de codificação é mínima.
MAXCIM 12/05/2016 12:16:34
#462029
olá kerplunk, obrigado pelas dicas.

porem confesso que ainda estou meio perdido com isso, e ansioso pela vide-aula.

KERPLUNK 12/05/2016 23:00:20
#462040
Esse assunto é complicado mesmo. O mais comum é a abertura exclusiva de objeto para edição. O usuário até visualiza o objeto em múltiplos pontos, mas quando um requer edição, o sistema [Ô]tranca[Ô] a edição para todos os outros, o que é muito mais simples de ser tratado e sinceramente o cenário mais seguro. Imagine 50 usuários alterando o mesmo objeto, o primeiro que gravar, vai forçar os outros 49 à atualizar e possivelmente perder suas alterações já feitas.
KERPLUNK 12/05/2016 23:03:23
#462041
Mas não fique tão animado assim, estou pensando seriamente em não colocar código fonte nenhum mais nos vídeos... Estou achando que não estou ajudando em nada colocando código fonte, porque a maioria simplesmente vai lá, baixa e sai usando sem entender absolutamente nada do que está fazendo. Isso faz com que eu crie mais confusão do que solução e é exatamente o contrário do meu intuito com esses vídeos. A intenção é que quem assista, entenda de verdade o que estou mostrando, a ponto de conseguir reproduzir com um mínimo de dúvidas e por isso insisto tanto que comentem os vídeos. Com perguntas é que se tem respostas e não com respostas para criar mais perguntas.
Tópico encerrado , respostas não são mais permitidas