.NET es un Framework o marco de trabajo que proporciona varias herramientas y librerías para el desarrollo de aplicaciones de varios tipos. El mismo es open source y se encuentra bajo .NET Foundation.
Este Framework nos permite trabajar con los lenguajes C#, F# o Visual Basic. El Core de .NET es multiplataforma y se puede implementar en Servidores, Sitios Web y Terminal de comando en Windows, Linux y MacOS.
Contenido
¿Que es ASP.net?
ASP.net es un framework que se extiende de .NET agregando herramientas y librerías para el desarrollo de paginas webs exclusivamente.
De tal manera hereda varias de sus características. Algunas de ellas son la utilización de C#, F# y Visual Basic. Otro punto importante, es que puede ser desarrollado y hospedado en Linux, Windows, macOS y Docker.
Una de las razones por las cuales elegimos utilizar Framework sin duda es porque nos ayudan a seguir mejores practicas de programación. Un ejemplo de ello es el principio de bajo acoplamiento y alta cohesión, uno de los más importantes
Y ASP no es la excepción, este sigue el patrón MVC – Modelo Vista Controlador. El cual nos ayuda a dividir nuestra aplicación en varias partes separando la lógica de la capa de negocios y la interfaz del usuario.
En ASP.net podemos utilizar todas las librerias existentes de .net Developers y las exclusivas de ASP. Por otra parte, también es posible utilizarlo únicamente para el backend en conjunto con Frameworks como Angular y React.
ASP.net es una herramienta muy completa y una de las más utilizadas en entornos empresariales. Por ejemplo en grandes Hoteles o Compañías de Logística.
¿Por qué buscar alternativas?
Cuando buscamos alternativas a un lenguaje/Framework lo hacemos porque creemos que no es la mejor opción para el proyecto, por motivos económicos, requerimiento del proyecto, entre otros.
Como toda tecnología existen desventajas de utilizar ASP.net, algunas de ellas por supuesto van de la mano del proyecto en cuestión y otras son más generales. En este último aspecto los desarrolladores no se ponen de acuerdo, ya que muchas de ellas corresponden a versiones posteriores y otras son personales.
Desventajas principales
Si hablamos de versiones posteriores podemos decir que es una obligación la utilización de Microsoft Visual Studio, SQL Server y IIS. Lo que conlleva a que debemos desarrollar y hospedar en Windows. Esta es una de las mayores desventajas, dados los costes de licencia y administración.
Otra gran desventaja es que ASP.net carece de retrocompatibilidad y lo que funciona en un versión seguramente no funciona en el siguiente o la anterior. Esto también juega con la seguridad, ya que hoy en día mantener una aplicación actualizada es primordial en este aspecto.
A nivel de arquitectura puede ser un tanto confuso sobre todo para principiantes. Esto sucede dado que sigue el patrón MVC, lo que separa nuestra aplicaciones en varias capas. Tenemos los controladores, los modelos de vistas, las vistas, las interfaces, los objetos, la capas de negocios, el modelo de la BD y alguno más.
No te confundas, esta es una muy buena práctica de programación, aunque aveces puede ser demasiado para aplicaciones pequeñas o difícil de comprender para quienes recién comienzan.
Otro punto importante que es la economía. En ningún lugar vamos a encontrar hosting compartido para hospedar ASP.net, lo que nos lleva a tener un Servidor Dedicado o un Cloud. Esto aumenta significativamente los costos y requiere de un Administrador de Servidores.
No todo es tan malo..
ASP.net a mejorado mucho a lo largo de los años y sus últimas versiones del core de .NET son multiplataforma y podemos trabajar con Visual Studio Code de forma totalmente gratuita. Además de poder hospedar nuestra aplicación en servidores Windows o Linux gracias a OWIN.
Alternativas más populares a ASP.net
En la actualidad surgen tecnologías nuevas todo el tiempo por lo que opciones a la hora de elegir un Framework hay de sobra. Como siempre se recomienda elegir una tecnología dependiendo de nuestros conocimientos, el proyecto a realizar, la disponibilidad económica y los tiempos de desarrollo.
Laravel
Laravel es uno de los Framework de PHP más populares y una muy buena alternativa a ASP.net. Con este podemos realizar todo tipo de sitios, incluso hay varias librerías que nos permiten trabajar con edición de imágenes, generar archivos PDF y mucho más.
Otra ventaja de Laravel es que al trabajar con PHP encontramos una amplia variedad de proveedores de hosting, incluso podemos hospedar nuestra aplicación en planes de hosting compartido abaratando los costos significativamente.
En cuanto al desarrollo, es más sencillo encontrar desarrolladores PHP he incluso la mano de obra es más económica, esto se debe a la disponibilidad de programadores PHP.
Si nosotros mismos vamos a desarrollar nuestra aplicación encontraremos que Laravel es bastante intuitivo y muy similar a otros Frameworks del mercado. Incluso hay varios problemas que ya están resueltos, como el registro y autentificación de usuarios.
En cuanto al diseño web existen varios templates que podemos incorporar a Laravel como Material Dashboard, NobleUI, Vito y muchos más. Además podemos incorporar Vue, React o utilizarlo como Backend en conjunto con Angular.
Para conocer mas a fondo las diferencias entre ASP.net y PHP te recomendamos darte una vuelta por nuestro artículo donde comparamos PHP vs ASP.net.
Ruby on Rails
Ruby on Rails es el Framework más utilizado para Ruby, al igual que la gran mayoría nos permite utilizarlo únicamente para el backend y combinarlo con Angular, React o algún otro framework Front-end.
Rails o RoR es open source y actualmente se encuentra bajo la licencia MIT. Para esté también encontraremos cientos de plugins gratuitos para casi cualquier cosa, y además muy fáciles de instalar con el sistema de Gemas.
Este es multiplataforma y puede ser desarrollado tanto en Linux, como Windows y MacOS. En cuanto al hospedaje suele llevarse mejor con Linux aunque puede ser hospedado en otros sistemas operativos.
Algo que comparten ASP.net y Ruby es el Modelo Vista Controlador ya que ambos frameworks sigue este patrón. Por lo que el pasaje de un Framework a otro es bastante sencillo.
Otro punto a destacar de Rails es su tiempo de desarrollo, ya que este es destacado como uno de los Frameworks más eficientes. Se lo considera incluso un 40% más rápido a la hora de desarrollar en comparación con PHP o Python.
Además de ser eficiente y estructurado, Rails es considerado un Framework altamente escalable y con un muy buen nivel de seguridad. Por supuesto siempre hay que ocuparse de algunos detalles pero de por sí es bastante robusto en materia de seguridad.
Ruby on Rails es otra excelente alternativa interesante a ASP.NET, nos permite mantener el modelo MVC y el uso de plugins/librerias para un desarrollo ágil. A nivel de hosting también deberemos usar una opción dedicada.
Django
Django es el Framework Python por excelencia para el desarrollo web, es Open Source y se encuentra bajo la licencia BSD. Al utilizar Python este obtiene todas las ventajas del lenguaje, como una sintaxis más limpia y clara.
En Django también encontramos el patrón MVC, separando nuestra aplicación en partes para seguir uno de los principios fundamentales de la programación. Incluso se puede reutilizar la capa de negocios en otros proyectos.
Otra ventaja de este framework es lo que ellos llaman «batteries-included», se refiere a que incluye una vasta librería con soluciones para operaciones comunes. Alguna de ellas son, el manejo de rutas, calendario, seguridad, etc. Esto también puede ser una desventaja ya que no es posible remover estas librerías.
En materia de seguridad Django protege nuestros sitio de los ataques más comunes como SQL injection y CSRF. Al mismo tiempo, aumenta la seguridad previniendo problemas de seguridad comunes de la programación en Python.
Django es ideal para proyectos que se encuentran en continuo crecimiento, ya que puede ser escalado con facilidad. Algo muy interesante es que permite reemplazar todos las partes que se encuentran desacopladas extendiendo el marco de trabajo.
Es una excelente alternativa a ASP.net especialmente si queremos trabajar con inteligencia artificial. Django cuenta con varias librerías que nos permiten implementar inteligencia artificial en nuestro proyecto sin necesidad de tener grandes conocimientos matemáticos.
Spring Boot
Spring Boot es un framework multipropósito que podemos utilizar en la web o desktop. Este tiene un Starter que nos permite elegir entre los dos tipos de aplicación, he instala las dependencias necesarias.
Cabe destacar que Spring Boot está desarrollado sobre Spring Framework y por ende hereda sus características. Por ejemplo nos permite trabajar con Java o con Groovy.
El objetivo de Spring Boot es proporcionar un desarrollo ágil realizando una configuración mínima. También nos ayuda a minimizar el código repetido, las notaciones y la configuración XML.
Las aplicaciones desarrolladas con Spring Boot pueden integrarse fácilmente al entorno de Spring como Spring Security, Spring Data, Spring JDBC y Spring ORM. También podemos integrar de forma directa un servidor HTTP como Tomcat, Jetty, o Undertow, sin necesidad de realizar un deploy.
Tanto Spring como Spring Boot se utilizan mucho en el ámbito de microservicios, por su capacidad modular y fácil implementación de servidor web.
Al igual que ASP.NET Spring es muy popular en entornos corporativos donde se requiere seguridad, alta disponibilidad y mantenimiento continuo.
Spring es la alternativa ideal a ASP.NET para aquellos que prefieren utilizar un lenguaje altamente tipado y con un forma muy estructurada de trabajar como lo es Java.
Node.JS
Node.js es un entorno de ejecución de JavaScript open source sobre el motor V8 de Google. Está orientado para trabajar con eventos asíncronos lo que lo hace ideal para aplicaciones en tiempo real, chats, streaming, mensajería y similares.
Fue diseñado con el propósito de ser altamente escalable y poder manejar miles de request simultáneamente. Hay que tener en cuenta que Node.js no es apto para aplicaciones que tienen un gran consumo de CPU, ya que este maneja un único hilo y puede generar caídas.
Continuando con las ventajas de Node, este se instala con el repositorio npm y cuenta con múltiples librerías/plugins nativos y de terceros para realizar distintas tareas. Esto lo hace muy fácil de instalar y configurar, además de reducir los tiempos de desarrollo.
Node maneja menos abstracciones en comparación con ASP.NET, esto lo hace ser más flexible y adaptable a nuestro proyecto. Otra ventaja es que nos permite utilizar el mismo lenguaje en todo el proyecto tanto para el backend como para el frontend.
En cuanto a las base de datos este se lleva mejor con las Bases no Relacionales, es ideal para utilizar con MongoDB. Por el contrario si necesitamos bases de datos relacionales lo mejor es ir por otro framework.
Node.js es una buena alternativa a ASP.NET si hablamos de aplicaciones en tiempo real como las mencionadas y con bajo consumo de CPU. Si no es el caso mejor nos vamos por otras de las alternativas vistas como Laravel, Django, Rails o Spring.
Conclusión
Como en todos nuestros artículos mencionamos la elección de una tecnología depende de varios factores. No hay ninguna que sobresalga de las demás o sea la ideal para utilizar en todos los casos. Cada una tienen sus pros y contras.
Para guiarnos a la hora de elegir debemos tener en cuenta nuestras posibilidades económicas, tanto para el desarrollo como para el alojamiento.
Es importante ver que tecnología se adecua más dependiendo el tipo de aplicación a desarrollar y las tareas que esta vaya a realizar. Además de seleccionar el motor de base de datos más adecuado y cuál framework funciona mejor con este.
Por último pero no menos importante, son los tiempos de desarrollo. Algunas tecnologías son más complejas que otras, llevan más tiempo de configuración o su arquitectura predispone que se realicen más pasos para programar una misma tarea.
En conclusión siempre que comencemos un nuevo proyecto debemos analizar los requerimientos de este y los recursos disponibles. Por supuesto sin ignorar nuestros conocimientos en dicha tecnología.