2011-10-30 19 views
5

Me han hecho la siguiente pregunta un par de veces y siento que podría haber tenido una mejor respuesta, así que la revelo aquí con la esperanza de encontrar más recursos, libros de blogs o consejos sobre cómo escribir código MVC3 C# escalable. Si tiene alguna sugerencia para escribir un código de mejor rendimiento alojado en varios servidores, lo agradecería enormemente. Por el bien del argumento digamos que sería para el código que espera más de 10-20K visitas al día.Consideraciones de codificación ASP.NET MVC de alto tráfico

Pregunta: ¿Qué consideraciones de codificación tiene en cuenta para escribir código escalable distribuido en varios servidores?

Mi instinto me dice que la respuesta está en el manejo de la sesión. Mi experiencia en los últimos años ha sido la de escribir aplicaciones y servicios no tanto para aplicaciones web, así que estoy buscando información que me pueda ayudar con el desarrollo específico de aplicaciones web, especialmente para C# MVC3. ¡Cualquier blog o libro que sugieras que definitivamente voy a ver!

+2

Personalmente, siempre trato de evitar el uso de la sesión, ya que es un dolor de cabeza menos cuando se ejecuta una aplicación en varios servidores. Si no estás utilizando la sesión en tu aplicación, puedes desactivarla en web.config para un pequeño impulso de perf. –

Respuesta

2

Una de las reglas para implementar aplicaciones web escalables es que sean apátridas. La sesión es lo primero que debe descartarse, ya que esto es exactamente lo que hace que una aplicación tenga estado. Si tiene una aplicación completamente apátrida, puede lanzar hardware cuando el tráfico aumenta y la aplicación podrá manejarlo. Así que empieza poniendo la siguiente línea en su web.config:

<system.web> 
    <sessionState mode="Off" /> 
    ... 
</system.web> 

El problema ahora se encuentran en el nivel de datos ya que es donde el estado va. Por lo tanto, para mejorar el rendimiento y limitar el número de solicitudes a este nodo sería utilizar el almacenamiento en caché. Guarda en caché todos los datos que puedas. Preferiblemente almacene este caché en máquinas separadas que los servidores web. Máquinas dedicadas para hacer caching.

+0

@xanatos - MVC no usa ViewState –

+0

Esta es una gran entrada gracias por responder. ¿Puede sugerir algún material de lectura que pueda ayudar a demostrar algunas de estas técnicas de almacenamiento en caché? Preferiblemente C# MVC inclinado si es posible pero voy a preparar cualquier cosa! :) Gracias de nuevo. – likestoski

+0

@likestoski, aquí hay una introducción al almacenamiento en caché de resultados: http://www.asp.net/mvc/tutorials/improving-performance-with-output-caching-cs También este para el almacenamiento en caché parcial de salida de página: http: // davidhayden .com/blog/dave/archive/2011/01/25/PartialPageOutputCachingASPNETMVC3.aspx Y para el almacenamiento en caché de datos, aquí hay una buena serie de publicaciones: http://stevescodingblog.co.uk/tag/memorycache/ –

Cuestiones relacionadas