Às vezes, nossos aplicativos da Web são muito rápidos quando testados localmente, mas quando testados na LAN, problemas de desempenho serão encontrados às vezes, até mesmo aplicativos com velocidade normal na LAN serão encontrados na questão da WAN. Esses problemas geralmente são causados por negligência ou erros na aplicação e não envolvem a arquitetura do sistema. O problema pode ser encontrado e resolvido por meio de depuração e testes no ambiente real.
O que estamos falando hoje é melhorar fundamentalmente o desempenho dos aplicativos ASP.Net, melhorando a arquitetura.
Vamos primeiro testar alguns aplicativos simples do ASP.Net.
Ambiente de teste: AthlonXP 3200+, DDR400 512M, WindowsXP SP2, SQL Server 2000 nativo, tabela de produtos do banco de dados Northwind chinês (importado do Access), cerca de 70 registros.
Número de série do teste | Tipo de programa | Método de teste | Resultado do teste (Solicitações por segundo) | SQLServer Recursos ocupados | ASP.Net Recursos ocupados |
1 | O serviço Web | preenche o DataSet com a tabela de produtos e retorna o número de registros | 250 vezes | 100% | - |
2 | O serviço Web | preenche o DataSet com a tabela de produtos e retorna o DataSet | 138 vezes | 54% | 46% |
3 | A aplicação Web | preenche o DataSet com a tabela de produtos e retorna Bind DataGrid | 70 vezes | 28% | 72% |
No primeiro teste, o serviço Web apenas lê os registros do banco de dados, preenche-os no DataSet e retorna o número de registros (observe que ele não retorna registros. Ele ocupa poucos recursos do sistema). os recursos são totalmente ocupados pelo SQL Server e a conclusão não é clara. Haverá efeitos negativos.
No segundo teste, quando o serviço Web retorna um DataSet, o número de solicitações por segundo é reduzido quase pela metade. Metade dos recursos do sistema são usados pelo ASP.Net para serializar o DataSet.
No terceiro teste, onde o aplicativo Web vincula o DataSet ao DataGrid e retorna a página, o número de solicitações por segundo é reduzido em quase três quartos. Esses recursos do sistema são usados pelo ASP.Net para vincular o DataSet ao DataGrid. e retorne a página.
A partir dos testes acima, podemos ver que a ligação e serialização do DataGrid ocuparão muitos recursos do sistema. Se você deseja melhorar o desempenho do sistema, é necessário melhorar a arquitetura.
1. Separe as operações no banco de dados da página e coloque-as em uma camada de persistência independente.
Desta forma, os dados são exibidos em forma de tabela através de DOM ou XSLT no lado do cliente, substituindo o trabalho de vinculação do DataGrid no lado do servidor, o que reduz bastante a pressão no servidor. E o cliente obtém dados da camada de persistência através de AJAX, o que vai melhorar a experiência do usuário.
2. Separe completamente a página dos dados para que o cache possa ser usado.
Algumas páginas que aplicam AJAX ainda lerão os dados iniciais, portanto a página não pode ser armazenada em cache. Essas páginas são geralmente mais complexas e ocupam mais recursos do que as páginas comuns. Se o cache puder ser usado, o desempenho do sistema será melhorado ainda mais.
Através dos dois pontos acima, o desempenho do ASP.Net pode ser quase duplicado.
Você pode testar você mesmo ou visitar nosso exemplo www.BizStruct.cn .