¿Cuáles son los desafíos para mantener una aplicación web .NET? Particularmente preocupado por los problemas de rendimiento.

Para calificarme para responder esta pregunta, he creado y mantenido aplicaciones web.net durante los últimos 15 años.

Dependiendo de la plataforma en la que se encuentre, el rendimiento puede ser un problema de diseño o puede ser un problema integrado en la plataforma misma. En el caso de las aplicaciones.net, realmente depende del diseño. Hay una amplia variedad de formas de crear aplicaciones .net y la mayoría de ellas le permitirán un rendimiento muy sólido.

Si contrasta el rendimiento de las aplicaciones .net con Ruby on rails, todos entendemos que Ruby on rails es una buena plataforma y es fácil trabajar con ella. Una vez dicho esto, Ruby on rails no se escala particularmente bien y no servirá como su mejor opción sobre las aplicaciones web .net. Para ser claros, no digo que rails sea inherentemente lento para un solo usuario, pero sí digo que Rails es lento cuando intentas servir a un gran número de usuarios concurrentes.

En términos más generales, en cuanto a las preocupaciones clave para el mantenimiento de aplicaciones web, la preocupación más importante es que puede haber tomado la aplicación de otra persona u otra organización. Si ese es el caso, entonces conocer la aplicación, es decir, los diagramas de arquitectura de la documentación y tal vez algo de historia detrás de él, demostrará ser el mayor problema que tiene para mantenerla si no la creó usted mismo.

Para las aplicaciones existentes, el problema de conocimiento previo demostrará ser la principal diferencia en dificultad entre mantener una aplicación existente y crear una nueva. Para cualquier otro tipo de inquietud con respecto al mantenimiento, es casi lo mismo que crear una nueva aplicación. De hecho, para cualquier otro aspecto del trabajo, normalmente encontrará que mantener la aplicación existente es más fácil que crear una nueva.

Katherine

Es muy poco probable que cualquier problema de rendimiento que tenga se deba a problemas de arquitectura en C # o .Net Framework.

Para que .Net sea el problema, su aplicación tendría que estar tan bien diseñada que se reduzca a un problema que no se puede resolver debido a cómo se escribe .Net.

Stack Overflow está escrito en .Net.

Es el 54º sitio web más popular del mundo.

En comparación, Quora.com es el número 131.

Fuente: Alexa.com.

Hay publicaciones de blog y episodios de podcast que discuten el diseño arquitectónico detrás de StackOverflow.

Actualización de StackOverflow: 560 millones de páginas vistas al mes, 25 servidores y todo se trata de rendimiento – Alta escalabilidad –

Los problemas de rendimiento generalmente son causados ​​por:

  • mala programación
  • diseño o consultas ineficientes de db
  • falta de uso o mal uso del almacenamiento en caché
  • mal diseño de la interfaz de usuario
  • no escalar o escalar según sea necesario

La situación es similar a la de un grupo de chicos sentados en un sofá, leyendo revistas de ejercicios y discutiendo qué método de entrenamiento es mejor.

Sí, un cierto número de repeticiones, o un suplemento mineral podría marcar una diferencia significativa en el rendimiento de un atleta de clase mundial que ya está haciendo todo lo demás correctamente.

Probablemente hay diferencias significativas entre C # / ASP.Net y Ruby / Rails en términos de rendimiento.

Sin embargo, si tuviera la capacidad de detenerse y mirar todas las aplicaciones .Net y Rails que se están ejecutando actualmente y saber cuáles eran sus cuellos de botella en el rendimiento, vería que la mayoría de los problemas podrían solucionarse mediante una mejor programación, antes de que se agotara trucos y tuve que cambiar de plataforma.

Si usted es el gerente de proyecto, retroceda y observe las amenazas del mundo real para su proyecto. ¿Tiene acceso a un buen grupo de desarrolladores .Net en los que confía? Es más probable que las personas ayuden o perjudiquen su proyecto que las tecnologías.

Si usted es el desarrollador, considere qué trayectoria preferiría para su carrera: ¿Rails o .Net? Puede publicar preguntas separadas sobre Quora preguntando sobre las diferencias entre trabajar como desarrollador de Rails o .Net. El rendimiento puede aparecer, pero creo que hay otros factores que son más importantes.

Por ejemplo, .Net se usa muy a menudo para crear aplicaciones de línea de negocios dentro de las organizaciones. Se puede usar para crear software para nuevas empresas de Internet, pero hay algunos prejuicios en el mercado en su contra. Los fundadores que se sienten cómodos con .Net tienden a usarlo. Es más probable que las startups financiadas por empresas utilicen Rails o una pila de código abierto más tradicional (LAMP o MEAN).

Adán

A continuación, encontrará los desafíos para la aplicación web ASP.net:

  1. Administración del estado de la sesión: si su aplicación almacenó muchos datos en la sesión. En ese caso ha sido necesario gestionar la sesión de manera efectiva. Puede usar más de un servidor de base de datos. o puede usar una gestión de estado de sesión personalizada como caché elástica, redis.
  2. Gestión de la base de datos: desde el punto de vista de la base de datos, es necesario tener un buen servidor de base de datos. Luego, mientras codifica, debe buscar en el cierre toda la conexión de la base de datos después de la ejecución. Usando la herramienta de monitoreo de rendimiento puede monitorear el estado de conexión abierta en la aplicación. Siempre es mejor usar un servidor de base de datos con alta disponibilidad, funcionalidad de conmutación por error
  3. Web Farming: si la aplicación utilizada por un gran número de usuarios sigue el enfoque de Web Farming . Utilice más de un servidor de aplicaciones con equilibrador de carga.
  4. Diseño incorrecto: puede escanear código con varias herramientas que pueden analizar la vulnerabilidad, el diseño incorrecto. Intente resolver todas las advertencias proporcionadas por Visual Studio 2013. Definitivamente ayudará para el rendimiento.

Hay desafíos en todos los idiomas. Pero hay una solución disponible para cada desafío.

Una vez escrito correctamente, el mantenimiento de una aplicación web .net no existe.

El mantenimiento vendría en el back-end de la base de datos, en los grupos de datos y seguridad reales, etc.… nada de esto debería mantenerse ‘en’ el marco .net que ha configurado.

O podría ser en los servidores web en sí mismos, si su sitio se vuelve lo suficientemente popular, los recursos web podrían agotarse por completo y el servidor podría fallar, pero nuevamente esto no tiene nada que ver con .net, es el hardware y la configuración ejecutando el sitio, no importaría si fuera php o .net

Si estamos hablando de un mayor desarrollo de las páginas .net, es lo mismo que cualquier otro desarrollo adicional. Sería el conocimiento del código y los procesos, el conocimiento del entorno, las pruebas adecuadas de nuevos lanzamientos, etc.

A2A.

No tenemos problemas específicos de rendimiento relacionados con .NET conocidos hasta ahora o problemas de mantenimiento. El lenguaje C # maneja la complejidad muy bien. He trabajado en bases de código C # de 10 años que estaban muy bien mantenidas y construidas para la industria financiera que requería un rendimiento razonable.

Hay muchas otras cosas como E / S que tienes que mirar antes de culpar al lenguaje por el rendimiento. Mire su base de datos primero y optimícela. Luego, el rendimiento ajusta su arquitectura de una manera que no esté esperando demasiadas E / S. El idioma es lo último en lo que piensa cuando su aplicación es lenta.

Cada aplicación web tiene problemas con el rendimiento. En su mayor parte, los problemas que surgen con las aplicaciones .Net no son diferentes que con otros marcos. .Net tiene algunas herramientas adicionales para ayudar con el ajuste. Sin embargo, mi experiencia es que los problemas de rendimiento que surgen con las aplicaciones .Net no son diferentes a los problemas que surgen con Java y otras pilas de tecnología.

Todo se reduce a un buen diseño de la aplicación, comprender cómo funciona la memoria y el esquema de la base de datos. En realidad, recientemente pasé de una compañía con un gran sitio Java construido en Servlets a una compañía con un gran sitio Asp.NET que tenía los mismos tipos de problemas de rendimiento por las mismas razones.

El único consejo que puedo darle es asegurarse de que comprende la memoria y cómo IIS utiliza el aislamiento de nivel de proceso. Comprenda el diseño de su aplicación con respecto a cómo funciona IIS y cómo se configuran los grupos de aplicaciones. Siempre es tentador poner mucha información en la variable Sesión, pero esto puede ser un problema si intenta escalar el sitio web.