Menú de navegaciónMenú
Categorías

La mejor forma de Aprender Programación online y en español www.campusmvp.es

?id=ca33aa02-2ac0-425c-b6df-71be288a2ebb

Cómo Microsoft hizo que me volvieran a gustar otra vez .NET y C#

Icono de advertencia ATENCIÓN: este contenido tiene más de 2 años de antigüedad y, debido a su temática, podría contener información desactualizada o inexacta en la actualidad.

Nota: este artículo es una traducción de un post de Kaushal Subedi con su permiso expreso. Puedes seguirle en Twitter y en Github.

"¿Por qué diablos querrías usar ASP.NET? ¿Te has quedado atrapado en los 90?". Estas son las palabras que salían de la boca de un viejo compañero de trabajo mío cuando se me ocurrió la posibilidad de utilizar ASP.NET para un proyecto que estábamos a punto de empezar hace un par de años. Siempre estaba de acuerdo con él la mayoría de las veces. Microsoft había desarrollado un gran lenguaje, un potente framework web y un gran conjunto de herramientas en torno al mismo, y aún así había muchas personas que no estaban contentas.

La razón principal por la que optamos por no usar ASP.NET para ese proyecto en aquel entonces fue debido a lo cerrado que estaba tanto el lenguaje como el framework. Usar ASP.NET implicaba pagar licencias de Windows Server para nuestros servidores o meternos en faena con algo tipo Mono para ser capaces de desplegar nuestras aplicaciones en Linux que era nuestra plataforma de elección.

Pero las cosas han cambiado mucho desde entonces, Microsoft ha subido mucho el nivel y le ha dado la vuelta a la situación. ASP.NET ha pasado de ser algo que estabas "obligado" a utilizar porque lo usaban en tu empresa, a algo que quieres usar, por muy desarrollador hípster y moderno que seas...

Esquema de la plataforma .NET

Cuando aprendí C# por primera vez hará unos 5 años, pensaba que tenía que ser el mejor lenguaje de programación de todos los tiempos. Pero esa sensación se fue apagando a medida que me encontraba con demasiadas lagunas y deficiencias en lo que proponían. Empecé con ASP.NET Core en sus inicios cuando estaban disponibles públicamente los primeros builds.

Mi interés por ASP.NET Core y C# volvió cuando Microsoft anunció que sería multiplataforma. Todo el problema con la pila de Microsoft antaño, no es que fuera un stack deficiente en términos de capacidades técnicas, rendimiento o cualquier otro requerimiento relevante para un desarrollador... El problema estaba en que era muy cerrada y tenías que usar tecnologías propietarias de Microsoft como Windows Server e IIS para poder desplegar tus aplicaciones.

Esto se traducía en que el coste de gestionar tus servicios iba a ser mucho mayor comparado con la mayoría de las otras pilas tecnológicas, incluso Java que es el principal competidor de C#. Aunque los costes no supondrían mucho para una gran empresa que genera más ingresos en unos meses que un desarrollador medio en toda su vida, sí que tenía su importancia para una startup en sus inicios o para un desarrollador autónomo intentando lanzar algo por su cuenta. Otro estigma relacionado con el stack de Microsoft era que su tecnología estaba anticuada y que tenía muchas API's desfasadas e inconsistentes que hacían que todo la pila pareciese inflada y desproporcionada.

Con la aparición de .NET Core, ASP.NET Core y las nuevas versiones de C#, Microsoft ha cambiado el terreno de juego. C# ya era uno de los lenguajes más usados en la industria, pero esta nueva dirección que ha tomado Microsoft ha protegido su posición y ha ayudado a que la adopción de su pila haya crecido de manera significativa.

Por si llevas un tiempo viviendo en una cueva: .NET Core es un nuevo framework lanzado por Microsoft hace un par de años que ha solucionado las deficiencias que arrastraba su stack hasta la fecha. Es multiplataforma, eficiente, ligero y lo mejor de todo, de código abierto. Era impensable que Microsoft liberase algo que se pudiera ejecutar en cualquier otra plataforma distinta a Windows, pero es que encima es una plataforma de desarrollo completa que se puede usar para programar en Linux y en Mac OS X de Apple.

La terminología que usa Microsoft para los componentes de su pila puede ser un poco confusa así que vamos a explicarla brevemente primero:

C#

Así se denomina el lenguaje de programación de propósito general desarrollado por Microsoft y que está considerado un estándar por ECMA. La última versión principal es la 7, pero puedes encontrar toda la historia de este lenguaje en la página oficial de Microsoft: historia de C#. Y también averiguar por qué deberías aprender C#.

.NET Framework

Este es el framework de aplicaciones de propósito general que usa principalmente C#. Puede ser usado para crear cualquier cosa: desde aplicaciones de escritorio o aplicaciones móviles a aplicaciones web. Sin embargo, solo funciona en Windows y en Windows mobile platform.

.NET Core Framework

Es la nueva versión de .NET que es multi-plataforma, funciona en la mayoría de sistemas operativos que no son de Microsoft. Aunque se supone que va a ser la próxima generación del framework .NET, Microsoft aún mantiene el "antiguo" .NET Framework.

.NET Standard

Es el nombre que se le da al conjunto de API's comunes más importantes que Microsoft provee mediante .NET Framework y .NET Core para unificarlo todo y garantizar que las bibliotecas sean compatibles entre los diferentes sistemas dentro de .NET.

ASP.NET Core

Es el framework de aplicaciones web que está construido sobre el framework .NET Core. Es el sucesor de ASP.NET que solo era soportado por Windows.

Ahora que ya hemos explicado brevemente los componentes, pasemos a profundizar un poco en algunas de las cosas que Microsoft ha hecho bien con su nueva pila que han hecho que me vuelva a "engatusar" con C# y .NET Core.

Funcionalidades

Desde fuera todo el nuevo ecosistema de .NET Core puede parecer como un lobo con piel de cordero, especialmente a aquellos que no lo han investigado con detenimiento ya que puede parecer que simplemente es una nueva versión del antiguo framework .NET.

Nada más lejos de la realidad, Microsoft ha dado mucho de sí para crear un concepto nuevo desde cero. Una de las cosas que diferencia .NET Core de su antecesor es la multitud de nuevas funcionalidades que Microsoft ha implementado. La funcionalidad más grande es que el nuevo stack es multiplataforma. Y no se trata de una cosa hecha a medias como muchas veces hemos visto con otras tecnologías. Han vuelto a programar todo el núcleo de cero, pensando en soportar varias plataformas desde el principio. Esto también ha permitido el uso de los últimos sistemas de paquetización de aplicaciones como contenedores y Docker con .NET Core. También han desarrollado herramientas propias que permiten desarrollar multiplataforma en su pila que es algo que Microsoft nunca ha hecho antes.

Otra funcionalidad mayúscula es la no dependencia en IIS, que es el servidor web de Microsoft. Han creado un servidor web embebido único que denominan Kestrel, que no solo ha eliminado a IIS como dependencia sino que permite que los desarrolladores creen aplicaciones autocontenidas, lo que implica una mayor flexibilidad cuando llega la hora de los despliegues. Pero eso no es todo, hay un montón de novedades en .NET Core que el antiguo .NET no tenía. La guía oficial de Microsoft .NET Core es un buen punto de partida si se quiere aprender más sobre todas sus funcionalidades.

El conjunto de nuevas funcionalidades no termina con .NET Core , C# también se ha estado actualizando constantemente con muchas funcionalidades útiles que se han ido añadiendo. Destacan novedades muy demandadas como las tuplas, async/await, funciones locales y demás se han añadido para hacer que la programación en C# sea mucho más eficiente.

Rendimiento

Otra gran razón por la que empezar a usar .NET Core son las mejoras de rendimiento. Microsoft en este sentido es de los mejores fabricantes a la hora sacarle rendimiento a los lenguajes de programación de propósito general. El rendimiento es un tema sensible entre los desarrolladores ya que la pila y las herramientas tienen un papel limitado a la hora de optimizar una aplicación para sacarle el máximo rendimiento, el resto depende de la implementación del desarrollador. La pila de desarrollo lo que sí puede hacer es promover y "forzar" buenas prácticas de cara a la optimización y el rendimiento en escenarios de uso típico para que dichas mejoras sean escalables y tengan un mayor alcance, que es justo lo que hizo Microsoft.

C# es un lenguaje de programación potentísimo por sí mismo y viene con muchas funcionalidades de serie que permiten ajustar al milímetro las aplicaciones de cara a mejorar el rendimiento, pero el equipo de .NET Core ha trabajado con ahínco para optimizar muchas de las API’s de serie para obtener un rendimiento máximo. Incluso las versiones anteriores de ASP.NET Core obtuvieron menciones muy notables en los benchmarks de TechEmpower por su rendimiento. Hay muchos ejemplos de empresas que están usando las optimizaciones disponibles en .NET Core como hizo Raygun para maximizar la eficiencia. Microsoft recientemente ha sacado la última versión de .NET Core, la 2.1 junto con un gran changelog con mejoras de rendimientos. El equipo de desarrollo ha estado constantemente liberando versiones con optimizaciones de rendimiento desde que ha salido el nuevo framework.

Versatilidad

La principal razón por la que elegí el stack de Microsoft es su versatilidad. Ahora es de código abierto y multiplataforma, y puedo hacer casi cualquier cosa con una única pila de desarrollo. Puedes hacer aplicaciones de escritorio con UWP, aplicaciones móviles multiplataforma con Xamarin (que pertenece a Microsoft), aplicaciones web con ASP.NET Core, aplicaciones de tiempo real con SignalR y mucho más. Incluso si programas vídeojuegos también puedes usar Unity aunque no está hecha por Microsoft. Se trata de usar la herramienta apropiada para cada tipo desarrollo. Con este enfoque de Microsoft puedo hacerlo sin tener que dejar de usar el lenguaje, las herramientas y API's con las que mejor me desenvuelvo y que más me gustan. Y todo gratis.

Herramientas

Nunca pensé que diría esto ya que en las primeras versiones había muchos bugs, pero las herramientas son una de las mejores cosas del ecosistema de .NET en este momento. Tienes muchas formas de hacer desarrollos en múltiples plataformas. El IDE principal de Microsoft, Visual Studio es la mejor opción si te gusta trabajar con entornos de desarrollo integrados. Si te gusta tener más control sobre las herramientas y no quieres ir tan de la mano como lo hacen los IDE, tienes Visual Studio Code que es su editor de código multiplataforma y herramientas de línea de comandos que te permiten crear, probar y desarrollar aplicaciones sin todo el "bulto" de un IDE completo. VS Code también incorpora un montón de extensiones de terceros que te ayudan a mejorar la experiencia de desarrollo.

Visual Studio Code

También está Visual Studio para Mac que no es igual que el de la versión de Windows, pero sigue siendo un paquete muy completo que te permite desarrollar con el nuevo stack de Microsoft en macOS. Si estás en Linux o si quieres un IDE diferente al que ofrece Microsoft, la empresa detrás de Android Studio, Jetbrains, ha lanzado un IDE llamado Rider que está bastante bien y es mi herramienta principal en Mac. Rider también está disponible para los tres sistemas operativos principales. El sistema de autocompletado Microsoft Intellisense es el mejor que he encontrado en cualquier pila de desarrollo principal, y si le sumas herramientas como Jetbrains ReSharper las cosas se vuelven ya muy eficientes. Mi máquina principal para programar es un MacBook y me encanta lo productivo que puedo llegar a ser en mi flujo de trabajo con Jetbrains Rider o VSCode.

Microsoft ha invertido mucho tiempo y esfuerzos de ingeniería en su stack ya desde hace unos años, y como resultado ahora mismo tienen un stack de desarrollo muy estable, y un equipo de desarrollo experimentado y con un know-how muy potente. El nuevo .NET Core abre sus puertas a un nuevo perfil de desarrolladores, mostrando el poderío de una empresa gigante y lo rápido que le pueden dar la vuelta a situaciones difíciles. Desde que nombraron al CEO actual, Satya Nadella, ha empezado a dinamizar la parte de ingeniería de desarrollo de la empresa y el resultado han sido todos estos cambios enormes, y que tienen mucho sentido ya que él se ha dedicado toda la vida a la programación y a la ingeniería de software. C# y .NET Core son probablemente lo mejor que ha hecho Microsoft en el terreno del desarrollo de software en mucho tiempo y a muchos la música les suena muy bien.

Fecha de publicación:
campusMVP campusMVP es la mejor forma de aprender a programar online y en español. En nuestros cursos solamente encontrarás contenidos propios de alta calidad (teoría+vídeos+prácticas) creados y tutelados por los principales expertos del sector. Nosotros vamos mucho más allá de una simple colección de vídeos colgados en Internet porque nuestro principal objetivo es que tú aprendas. Ver todos los posts de campusMVP
Archivado en: Lenguajes y plataformas

Boletín campusMVP.es

Solo cosas útiles. Una vez al mes.

🚀 Únete a miles de desarrolladores

DATE DE ALTA

x No me interesa | x Ya soy suscriptor

La mejor formación online para desarrolladores como tú

Agregar comentario

Los datos anteriores se utilizarán exclusivamente para permitirte hacer el comentario y, si lo seleccionas, notificarte de nuevos comentarios en este artículo, pero no se procesarán ni se utilizarán para ningún otro propósito. Lee nuestra política de privacidad.