A veces, nuestras aplicaciones web son muy rápidas cuando se prueban localmente, pero cuando se prueban en la LAN, se encontrarán problemas de rendimiento, a veces incluso se encontrarán aplicaciones con velocidad normal en la LAN; Estos problemas generalmente se deben a negligencia o errores en la aplicación y no involucran la arquitectura del sistema. El problema se puede encontrar y resolver mediante depuración y pruebas en el entorno real.
De lo que estamos hablando hoy es de mejorar fundamentalmente el rendimiento de las aplicaciones ASP.Net mejorando la arquitectura.
Primero probemos algunas aplicaciones simples de ASP.Net.
Entorno de prueba: AthlonXP 3200+, DDR400 512M, WindowsXP SP2, SQL Server 2000 nativo, tabla de productos de la base de datos china Northwind (importada de Access), alrededor de 70 registros.
Número de serie de la prueba | Tipo de programa | Método de prueba | Resultado de la prueba (Solicitudes por segundo) | SQLServer Recursos ocupados | ASP.Net Recursos ocupados |
1 | El servicio web | llena el DataSet con la tabla de productos y devuelve el número de registros | 250 veces | 100% | - |
2 | El servicio web | llena el DataSet con la tabla de productos y devuelve el DataSet | 138 veces | 54% | 46% |
3 | La aplicación web | llena el DataSet con la tabla de productos y los retornos Bind DataGrid | 70 veces | 28% | 72% |
En la primera prueba, el servicio web solo lee registros de la base de datos, los completa en el DataSet y devuelve el número de registros (tenga en cuenta que no devuelve registros, se supone que el sistema). Los recursos están completamente ocupados por SQL Server y la conclusión no está clara. Habrá efectos negativos.
En la segunda prueba, cuando el servicio web devuelve un DataSet, el número de solicitudes por segundo se reduce a casi la mitad. ASP.Net utiliza la mitad de los recursos del sistema para serializar el DataSet.
En la tercera prueba, donde la aplicación web vincula el DataSet al DataGrid y devuelve la página, el número de solicitudes por segundo se reduce en casi tres cuartas partes. ASP.Net utiliza estos recursos del sistema para vincular el DataSet al DataGrid. y devolver la página. Serializar la página.
De las pruebas anteriores, podemos ver que el enlace y la serialización de DataGrid ocuparán muchos recursos del sistema. Si desea mejorar el rendimiento del sistema, debe mejorar la arquitectura.
1. Separe las operaciones en la base de datos de la página y colóquelas en una capa de persistencia independiente.
De esta manera, los datos se muestran como una tabla a través de DOM o XSLT en el lado del cliente, reemplazando el trabajo vinculante de DataGrid en el lado del servidor, lo que reduce en gran medida la presión sobre el servidor. Y el cliente obtiene datos de la capa de persistencia a través de AJAX, lo que mejorará la experiencia del usuario.
2. Separe completamente la página de los datos para que se pueda utilizar el caché.
Algunas páginas que aplican AJAX seguirán leyendo los datos iniciales, por lo que la página no se puede almacenar en caché. Estas páginas son generalmente más complejas y ocupan más recursos que las páginas normales. Si se puede utilizar el caché, el rendimiento del sistema mejorará aún más.
A través de los dos puntos anteriores, el rendimiento de ASP.Net casi se puede duplicar.
Puede probarlo usted mismo o visitar nuestro ejemplo www.BizStruct.cn .