ASP.NET Web API es una gran tecnología. Escribir APIs web es tan fácil que muchos desarrolladores no dedican tiempo a estructurar sus aplicaciones para lograr un buen rendimiento de ejecución. En este artículo, voy a tratar 8 técnicas para mejorar el rendimiento de ASP.NET APIs web. 1) Utilizar la herramienta de serialización JSON más rápida La serialización de JSON tiene un impacto crítico en el rendimiento de toda la API web de ASP.NET. En uno de mis proyectos, cambié del serializador JSON.NET a ServiceStack.Text durante un año y medio. He medido que el rendimiento de la Web API ha mejorado alrededor de un 20%. Te recomiendo encarecidamente que pruebes esta herramienta de serialización. Aquí hay algunos datos comparativos recientes sobre el rendimiento de herramientas populares de serialización.
SerializerPerformanceGraf Fuente: theburningmonk Actualización: Parece que parece que StackOverflow usa Jil, su supuesta herramienta de serialización JSON hasta la fecha. Se pueden encontrar datos de prueba en su página de GitHub llamado Jil serializer. 2) Serializar manualmente JSON desde DataReader He utilizado este enfoque en mis proyectos y he recibido beneficios de rendimiento. Puedes crear manualmente cadenas JSON desde el DataReader y evitar la creación innecesaria de objetos, para no tener que tomar valores del DataReader y escribir en objetos, luego tomar valores de esos objetos y usar el JSON Serializer para generar JSON. Utiliza StringBuilder para generar JSON y devuelve StringContent al final como contenido de la respuesta en la WebAPI.
Puedes ver más formas de hacerlo en el blog de Rick Strahl 3) Utilizar otros formatos de protocolo (búfer de protocolo, paquete de mensajes) tanto como sea posible Si puedes usar otros formatos de mensaje en tu proyecto, como búferes de protocolo o paquetes de mensajes, en lugar de usar JSON. Obtendrás una gran ventaja en rendimiento, no solo porque los búferes de protocolo son muy rápidos en serialización, sino también porque se formatean más rápido que el JSON en los resultados devueltos. 4) Implementar compresión Usa GZIP o Deflate en tu ASP.NET Web API. La compresión es una forma sencilla y eficaz de reducir el tamaño y la capacidad de respuesta de los paquetes de respuesta. Esta es una función muy necesaria, puedes consultar más artículos sobre compresión en mi blog ASP.NET Web API, compresión GZip, ActionFilter, con 8 líneas de código. 5) Uso de caché Utilizar caché de salida en el método Web API es fundamental. Por ejemplo, si un gran número de usuarios accede a contenido de respuesta que cambia solo una vez al día. Si quieres implementar caché manual, como almacenar en caché contraseñas de usuario en memoria, consulta mi entrada de blog Simple way to implement caching in ASP.NET Web API. 6) Utilizar ADO.NET típico siempre que sea posible El ADO.NET escrito manualmente sigue siendo la forma más rápida de obtener valores de la base de datos. Si el rendimiento de tus APIs web es realmente importante para ti, entonces no uses ORMs. Puedes ver comparaciones de rendimiento entre los ORM más populares. ORMMapper
El código de búsqueda elegante y escrito a mano son rápidos y, efectivamente, todos los ORMs son más lentos que los tres. LLBLGen con caché de resultados es rápido, pero tiene que iterar el conjunto de resultados e instanciar el objeto en memoria de nuevo. 7) Implementar un enfoque asincrónico en la Web API El uso de un servicio web API asíncrono aumenta drásticamente el número de solicitudes HTTP que procesan las APIs Web. La implementación es sencilla, solo usa la palabra clave asíncrona y cambia el tipo de valor de retorno de tu método a Tarea.
8) Devuelve múltiples conjuntos de resultados y combinaciones de conjuntos Reducir el número de transferencias no solo es beneficioso para múltiples bases de datos, sino también para las APIs web, que permiten aprovechar la potencia de los conjuntos de resultados. Esto significa que puedes extraer múltiples conjuntos de resultados de DataReader, consulta el siguiente código de demostración:
Puedes devolver varios objetos en una sola respuesta desde una API web, intenta combinar los objetos que devuelves y devuelve los siguientes objetos:
Esto reducirá las solicitudes HTTP a tu API WEB. Gracias por leer este artículo.
|