Casos de uso para node.js y c #

10

Realizo bastante trabajo de ASP.NET (C #, MVC), pero la mayor parte es desarrollo web típico. Hago arquitectura Restful usando repositorios CRUD. La mayoría de mis clientes no tienen muchos requisitos avanzados dentro de sus aplicaciones.

Ahora estoy viendo node.js y sus implicaciones de rendimiento (soy adicto a la velocidad), pero no he profundizado mucho en eso.

Me pregunto si

  • node.js puede reemplazar de manera realista mi desarrollo web típico en C # y ASP.NET MVC (no reescribiendo aplicaciones existentes, pero cuando estoy trabajando en nuevas)
  • node.js puede complementar una aplicación ASP.NET MVC agregando algo de bondad asincrónica a la arquitectura existente.

¿Hay casos de uso para / contra C # y node.js?

Editar

Me encanta ASP.NET MVC y estoy súper emocionado con hacia dónde va. Solo trato de ver si hay casos de uso especiales que favorecerían

Chase Florell
fuente
Sí, me doy cuenta de que esta puede ser una conversación más grande cuando se incluye Ruby o PHP, pero para esta pregunta en particular, no estoy interesado en ninguno de esos ... ese soy yo.
Chase Florell
La respuesta es, intente nodo. Lea sobre esto. Mira si te gusta.
Raynos

Respuestas:

11

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.
jcolebrand
fuente
1
Mi consejo, escribe tres o cuatro sitios web complejos en node.js. Comience con poco, luego aumente de tamaño.
jcolebrand
1
No estoy en el colegio / universidad. Llevo 8 años desarrollando solo y me va bastante bien. Puedo hacer un mejor $$$ por mi cuenta que en otra compañía.
Chase Florell
2
C # comprueba en tiempo de compilación todas las rutas de código. No se lanzará hasta que los datos incorrectos lo exploten. El nodo no detendrá la compilación solo por un código incorrecto. O estaba usando una versión anterior y eso ha cambiado.
jcolebrand
1
@Raynos: Razor no es un proyecto de código abierto de terceros, es el motor de visualización desarrollado oficialmente por Microsoft para ASP.NET MVC 3
Carson63000
1
En el momento de escribir esto, Node.js no era compatible con IIS, pero ahora sí.
jcolebrand
5

Si solo está haciendo una arquitectura tranquila utilizando repositorios CRUD, no hay una buena razón para portar una aplicación existente a node.js.

Si está escribiendo una nueva aplicación que hace REST y CRUD, puede haber buenas razones para usar node.js desde el principio.

Realmente depende de la aplicación.

Por ejemplo, personalmente escribiría aplicaciones REST / CRUD completamente en node.js porque es una preferencia personal. Node es genial para desarrollar, ASP.NET MVC fue un marco restrictivo molesto para mí.

Veredicto: Ambas herramientas hacen el trabajo. Si no hay requisitos específicos que favorezcan .NET o nodo, utilice lo que desee. es decir, es preferencia personal.

Sin embargo, puedo enumerar algunos de los beneficios obvouis de ambas plataformas.

ASP.NET

  • Integración de Windows / .NET. Si desea que su pila de microsoft esté estrechamente acoplada y altamente integrada, entonces quiere .NET
  • mano de obra fácilmente disponible
  • Marcos monolóticos que sostienen tu mano
  • Tiene un conjunto de características que funcionan fuera de la caja. Si está satisfecho con estas características, mejora la productividad. Si desea características personalizadas, termina luchando contra la herramienta y reduce la productividad.

Node.js

  • Lenguaje único para toda su pila web (si está utilizando bases de datos noSQL que usan js para sus "consultas" como couch / mongo).
  • Ideal para aplicaciones web en tiempo real que utilizan herramientas como socket.io
  • Excelente para la conexión en red cuando todo lo que hace su servidor es hablar con n puntos finales remotos de varios tipos diferentes.
  • Solo le ofrece las características mínimas básicas de fábrica. Esto significa que puede construir su aplicación de la manera altamente personalizada que desee.
  • Colección de pequeñas herramientas de estilo Unix que hacen una cosa y una cosa bien, que son fáciles de mezclar y combinar
  • npm : gestión de paquetes bien hecha
  • rica comunidad de código abierto
Raynos
fuente
Sí, no busco portar aplicaciones existentes. Pensando en las aplicaciones que vendrán en el futuro.
Chase Florell
55
@Raynos debería agregar el descargo de responsabilidad de que es un evangelista de Node.js y nunca construyó un sitio web basado en MVC3 / 4. (Creo que esto se refleja en la respuesta).
Matt Esch