Ahora estoy viendo node.js y sus implicaciones de rendimiento (soy adicto a la velocidad), pero no he profundizado mucho en eso.
Perfil, perfil, perfil. Esa es la única forma de saber que sus aceleraciones están teniendo el efecto adecuado. Puedes adivinar que es lo suficientemente rápido. Pero a la mayoría de las personas les gusta optimizar prematuramente. Eso es peor que jugar contigo mismo durante una cita.
Me pregunto si node.js puede reemplazar por completo mi desarrollo web típico en C # y ASP.NET MVC, si es mejor como complemento de C # y ASP.NET MVC, o si hay algunas cosas que deberían "dejar las cosas como están ".
¿Hay casos de uso para / contra C # y node.js?
Claro, si estás en una tienda que escribe código de forma rutinaria en C #, entonces deberías usar MVC (es mucho mejor que WebForms y se llama WebPages). No perderá mucho tiempo con el entrenamiento de herramientas, y es algo que sus flujos de trabajo ya deberían manejar.
Lo que no parece indicar arriba son las razones para elegir cada uno. Has dado dos opciones de mercado actuales, una todavía en etapas Alpha, la otra en su tercer año completo de lanzamiento de la plataforma. No me gustaría comparar el modelo de prueba actual de autos eléctricos con los híbridos de Honda que ya están en el mercado. Están en dos ligas diferentes.
Ahora, aquí hay una razón para que te mantengas alejado de node.js, si eres nominalmente una tienda de C #.
Actualmente no trabaja en entradas y salidas asincrónicas, actualmente trabaja en un formato de procedimiento.
Esa es la antítesis de lo que nodejs va a hacer por ti.
Sin embargo, si escribe código asíncrono con frecuencia en C #, y lo usa mucho en un estilo uniforme, entonces sí, node.js es para que lo tenga en cuenta.
Esto es lo que renunciarás:
IIS: esto es realmente importante para mucha gente. Cosas como la integración nativa de A / D ya están hechas y bastante libres de errores. En realidad, node.js ahora se integra bien con IIS.
- Plantillas de Razor: si ha hecho un MVC de C # serio, entonces está usando y amando Razor y la rapidez con que puede producir cosas. Hay plantillas similares en el nodo, y ciertamente no estoy golpeando el nodo, pero toda la cadena de herramientas ya está presente en C #, y muchas de ellas se están construyendo actualmente en el mundo de los nodos. NB: muchas de estas herramientas ahora son bastante maduras _
- compilación en tiempo de compilación de dlls: node.js generalmente se compila sobre la marcha, es decir, no todas las rutas se verifican al inicio. Es completamente posible tener un código realmente malo en el nodo que nadie toque, compruebe o pruebe.
- Todas las herramientas integradas actualmente en VS que usa a diario: simplemente no hay tanta compatibilidad de VS para javascript. En parte porque todo en JavaScript es muy dinámico. NB: Microsoft obviamente está trabajando en el soporte de herramientas para javascript _
Esto es lo que ganarás:
- todo lo que desarrolle estará en el mismo lenguaje, suponiendo que realice secuencias de comandos del lado del cliente y del lado del servidor. (¿o por qué considerarías incluso JavaScript en el servidor?)
Entonces, dado que parece que estoy atacando Node aquí por completo, permítanme señalar que ese nodo es mi lenguaje de juego en casa, me encanta y ayudo a las personas a depurarlo a veces en los servidores de chat stackoverflow (sala 642). Veo que tiene un gran y estupendo potencial en el futuro.
Solo digo, no tires al bebé y me pregunto por qué el agua del baño está sucia.
No ha dado una razón por la que deba renunciar a sus años de experiencia y comenzar con algo nuevo. ¿Son malas herramientas? De ningún modo. Ambos son geniales y hacen que el desarrollo sea muy sencillo.
¿Puede el nodo reemplazar a C #? Si, ciertamente. También podría PHP o Java o Ruby. No estás preguntando por eso.
Así es como sabe cuándo está listo para programar node.js en lugar de C #:
- Está considerando escribir un libro para ayudar a otras personas a "obtener JavaScript" en lugar de los viejos y aburridos programas que han escrito antes en C # y etc.
- Tiene problemas con la E / S síncrona (bloqueo) que impide que sus aplicaciones realicen un trabajo real.
- No está utilizando CUALQUIER biblioteca en C # que no sea el MVC predeterminado y eso solo para el enrutamiento, y está bastante seguro de que puede hacer un mejor motor de enrutamiento, y está codificando todo lo más cerca posible del metal.
- Cada objeto de datos que diseña lo ve como un hash en lugar de un objeto fuertemente tipado.