Usuário com melhor resposta
Duvida sobre xml

Pergunta
-
oi tudo bom? eu estou encarando um serio problema de performance no meu sistema eu ja havia perguntado aqui no forum se eu poderia utilizar web service e umas das resposta me fez desistir da ideia. porem mesmo assim eu tenho que melhorar a performance ou vão melhorar o programador la no trabalho no caso eu xD
Bom ai eu pensei eu pensei em utilizar xml para guardar a informação para consulta ao invez de consultar no banco, tenho varias informações porque a sessão de 1 usuario ja fica com 150mb, e se as querys que eu faço no banco são muito pesadas, mesmo usando store procedure e codigos otimizados para o banco.
Como eu poderia fazer isso? a ideia que eu tive pode ser errada e é por isso que vim pedir ajuda. se a ideia estiver certa quero um caminho para seguir e se estiver errado queria uama ideia melhor.
A ideia que eu tive é assim. ficar um serviço com todas as informações que eu preciso e quando meu cliente se logar no sistema eu verifico se a informação que ele necessita está guardada no xml do servidor se não estiver ele busca no serviço e utiliza porem essa informação tem que ser utilizado por todos os usuarios. quando eu verifico se ele possui a informação se ele possuir eu verifico se a informação é atualizada se não for eu atualizo. onde a informação que normalmente são atualizadas são double. porque as outras são raramente alteradas.
socorro preciso de ajuda. todas as ideias são bem vindas
Respostas
-
Iceoz,
Acho que se você implementar este seu "cache" baseado em XML, você irá continuar com o mesmo problema de performance. O ideal para você fazer um cache, seria utilizar classes .NET "puras" para isto. Outra coisa, o .net tem um Engine de cache chamado Velocity, sugiro a você dar uma estudada nele para ver se te serve:
http://blogs.msdn.com/b/velocity/
At.,
Rogério de Resende Ohashi | Ohashi.NET (.NET, Security, C#, WinForms, WCF, Workflow, Azure, Windows Phone, Mono)- Marcado como Resposta Levi DomingosModerator sexta-feira, 29 de outubro de 2010 21:23
-
Acho que você deveria tentar otimizar utilizando uma lib de cache, como por exemplo a NCache:
http://www.alachisoft.com/ncache/ncache_express.html
A versão express é free, e você pode utilizá-la tanto em asp.net quanto em winClient.
A tarefa não é das mais simples, pois você vai ter que pensar muito para bolar a sua estratégia de caching para que ela seja eficiente. Mas pelo menos você não vai ter que se preocupar em COMO implementar o cache, mas sim ONDE implementá-lo.
Performance não é sempre um problema dos mais triviais, e muitas das vezes você é forçado a rever toda a sua aplicação.
A Idéia do seu serviço parece ser interessante, mas lhe recomendo um pouco de cautela. Ao invés de fazer o cache em XML, talvez seja melhor você pensar em uma estratégia de carga de dados por demanda, diminuindo tanto a carga no banco de dados quanto a saturação da sua LAN.
Boa Sorte
...- Marcado como Resposta Levi DomingosModerator sexta-feira, 29 de outubro de 2010 21:22
Todas as Respostas
-
Valida:
A ideia que eu tive é assim. ficar um serviço com todas as informações que eu preciso e quando meu cliente se logar no sistema eu verifico se a informação que ele necessita está guardada no xml do servidor se não estiver ele busca no serviço e utiliza porem essa informação tem que ser utilizado por todos os usuarios. quando eu verifico se ele possui a informação se ele possuir eu verifico se a informação é atualizada se não for eu atualizo. onde a informação que normalmente são atualizadas são double. porque as outras são raramente alteradas.
socorro preciso de ajuda. todas as ideias são bem vindas
Just Be Humble Malange! -
Iceoz,
Acho que se você implementar este seu "cache" baseado em XML, você irá continuar com o mesmo problema de performance. O ideal para você fazer um cache, seria utilizar classes .NET "puras" para isto. Outra coisa, o .net tem um Engine de cache chamado Velocity, sugiro a você dar uma estudada nele para ver se te serve:
http://blogs.msdn.com/b/velocity/
At.,
Rogério de Resende Ohashi | Ohashi.NET (.NET, Security, C#, WinForms, WCF, Workflow, Azure, Windows Phone, Mono)- Marcado como Resposta Levi DomingosModerator sexta-feira, 29 de outubro de 2010 21:23
-
Hun vou dar uma olhada. eu tive essa ideia por que dai eu troco sql por linq to xml.
no meu caso como faço muitos callbacks e esses tem pouca diferença de dados apenas diferenças de filtros pensei em fazer assim. uma vez que se eu guardar na sessão as informações, ela fica gigantesca e o servidor aos poucos vai ficando lento. se eu deixar ir para o sql o banco fica lento pois os sql são pesados. porem em xml os valores ja estariam pre-filtrados entende meu dilema?
-
Acho que você deveria tentar otimizar utilizando uma lib de cache, como por exemplo a NCache:
http://www.alachisoft.com/ncache/ncache_express.html
A versão express é free, e você pode utilizá-la tanto em asp.net quanto em winClient.
A tarefa não é das mais simples, pois você vai ter que pensar muito para bolar a sua estratégia de caching para que ela seja eficiente. Mas pelo menos você não vai ter que se preocupar em COMO implementar o cache, mas sim ONDE implementá-lo.
Performance não é sempre um problema dos mais triviais, e muitas das vezes você é forçado a rever toda a sua aplicação.
A Idéia do seu serviço parece ser interessante, mas lhe recomendo um pouco de cautela. Ao invés de fazer o cache em XML, talvez seja melhor você pensar em uma estratégia de carga de dados por demanda, diminuindo tanto a carga no banco de dados quanto a saturação da sua LAN.
Boa Sorte
...- Marcado como Resposta Levi DomingosModerator sexta-feira, 29 de outubro de 2010 21:22