Plataforma .NET, Plataforma .NET Core y Xamarin: el panorama de las tecnologías de desarrollo Microsoft en 2018
Menú de navegaciónMenú
Categorías

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

Plataforma .NET, Plataforma .NET Core y Xamarin: el panorama de las tecnologías de desarrollo Microsoft en 2018

Imagen ornamental - La maraña de .NET en 2018

Ya han pasado dos años desde que se empezó a hablar públicamente sobre .NET Core, y poco más de 1 año desde que se lanzó la versión 1.0 de la nueva plataforma (apareció el 28 de junio de 2016). El mes pasado Microsoft lanzó, por fin, la versión 2 de .NET Core, ofreciéndonos una segunda encarnación más robusta y completa de la nueva tecnología.

A pesar de todo este tiempo, aún hoy en día sigue habiendo una gran confusión en torno a todo lo que tiene que ver con la plataforma, sus versiones, sus compatibilidades, etc... En este periodo hemos escrito varios artículos tratando de explicar estas cosas y orientar a los que lo necesitaran. No sin dificultad porque, sobre todo en 2015, las cosas no estaban claras ni siquiera internamente en Microsoft, y la cuestión pegó muchos bandazos.

Ahora que ya tenemos una versión madura (la 2.0) de la plataforma ¿en qué estado están las cosas? ¿Qué debemos esperar de cara a finales de 2017 y principios de 2018 en lo que respecta a las tecnologías de desarrollo de .NET? ¿Cuál es el panorama actual?

¿Es una tecnología, son dos o quizá más?

Aunque son muy parecidas, comparten lenguajes, clases y funcionalidad, se trata de dos tecnologías totalmente diferentes. De hecho podríamos hablar en realidad de 3 tecnologías de desarrollo de Microsoft, si incluimos a Xamarin, que también está basado en .NET pero tiene su propia implementación multi-plataforma basada en Mono.

Por lo tanto ahora mismo existen 3 stacks tecnológicos separados, que a pesar de compartir muchos conceptos, son tecnologías diferentes y paralelas:

Diagrama esquemático de las distintas plataformas de Microsoft: .NET, .NET Core y Xamarin

La plataforma .NET 4.x

.NET logo

También conocida como .NET "Full Framework" o .NET "Tradicional".

Se trata de la plataforma .NET "de toda la vida", aparecida oficialmente en 2001. Monolítica (instalas todo su núcleo o no instalas nada), pero tremendamente capaz, ya que con ella puedes crear aplicaciones de cualquier tipo: de consola, de escritorio, para la web, móviles... Casi cualquier cosa que puedas imaginar.

Eso sí, se trata de aplicaciones que se ejecutarán solamente sobre Windows.

En la actualidad va por su versión 4.7 (lanzada en Abril de 2017, con Visual Studio 2017), y existen miles de componentes de terceros para poder extenderla.

Con ella puedes utilizar también infinidad de lenguajes de programación: C#, Visual Basic .NET, F#, C++, Python... ¡Hasta Cobol!

La utilizan miles de empresas en todo el mundo. No va a cambiar mucho en los próximos años.

La plataforma .NET Core

.NET Core logo

Es una nueva plataforma, escrita desde cero con varios objetivos en mente, siendo los principales:

  • Más ligera y "componentizable": de modo que con nuestra aplicación se distribuya exclusivamente lo que necesitemos, no la plataforma completa.
  • Multi-plataforma: las aplicaciones que creemos funcionarán en Windows, Linux y Mac, no solo en el sistema de Microsoft.
  • Alto rendimiento: no es que .NET tradicional no tuviese rendimiento, pero es que .NET Core está pensada desde el principio con esto en mente. .NET Core tiene un desempeño más alto que la versión tradicional, lo cual es muy importante para entornos Cloud, en donde esto se traduce en mucho dinero al cabo del tiempo.
  • Pensada para la nube: cuando .NET se diseñó a finales de los años 90 el concepto de nube ni siquiera existía. .NET Core nace en la era Cloud, por lo que está pensada desde el principio para encajar en entornos de plataforma como servicio y crear aplicaciones eficientes para su funcionamiento en la nube (sea de Microsoft o no).

En este artículo de nuestro tutor José María Aguilar puedes leer más sobre cuáles fueron los motivos de crear .NET Core y qué beneficios se obtienen.

Con .NET core, hoy por hoy, solo podemos crear aplicaciones de consola, aplicaciones Web (con ASP.NET Core y ASP.NET Core MVC), y aplicaciones universales de Windows para Windows 10 o posterior.

En cuanto a los lenguajes disponibles, podremos utilizar C#, F# y Visual basic .NET.

Hoy en día existen todavía bastantes menos componentes de terceros (bibliotecas y similares) para .NET Core que para .NET tradicional. Se está tratando de solucionar con .NET Standard y un shim para unificar bibliotecas que intenta conseguir que sea más fácil crear bibliotecas para ambas plataformas, pero todavía no están a la misma altura.

En el momento de escribir esto .NET Core va por su versión 2.0, aparecida en agosto de 2017. Se trata a estas alturas de una tecnología estable y dotada de funcionalidad, que nos permitirá crear aplicaciones de gran capacidad y multi-plataforma. Es decir, podemos crear una aplicación web con .NET Core que se ejecute bajo un servidor NGinx en Linux, aprovechando las ventajas que nos da esa plataforma, y acto seguido ponerla a andar en paralelo en un sistema con Windows Server 2016 e IIS en Windows, con una ganancia de rendimiento importante frente a una aplicación creada con ASP.NET MVC 5.

.NET Core 2.1 se espera para la primavera de 2018.

Xamarin

Xamarin logo

Xamarin nació como un proyecto Open Source hace muchos años llamado Mono, que trataba de llevar .NET a todas las plataformas en los tiempos en los que Microsoft se negaba a sacar .NET de Windows (hoy en día parece increíble, pero así era). Posteriormente su creador el mexicano Miguel De Icaza (creador también de GNome, el famoso escritorio para Linux) desarrolló lo que hoy en día se conoce como Xamarin, construyendo sobre Mono toda la tecnología para la creación de aplicaciones nativas para móviles en todas las plataformas (iOS, Android y Windows Mobile).

En la actualidad Xamarin se puede usar para crear aplicaciones en muchas otras plataformas incluyendo (y sobre todo) Mac, pero también Windows (mediante UWP), Apple Watch, Android Wear, Apple TV, etc.... En los próximos meses además se podrán crear aplicaciones de escritorio para Linux, proyecto en el que, por cierto, participa nuestro tutor Javier Suárez Ruiz.

Microsoft compró Xamarin a principios del año pasado. Lo ha hecho totalmente gratuito y lo ha incluido en su Visual Studio, tanto para Windows como para Mac. Esto ha disparado el uso de esta tecnología que se ha convertido en la tercera plataforma de desarrollo de Microsoft.

En muy poco tiempo Xamarin se ha postulado como la gran alternativa de desarrollo para casi todo excepto la web.

En Xamarin se debe programar con el lenguaje C#, y posee un ecosistema de componentes y extensiones de terceros que es excepcional.

Tecnologías relacionadas

Alrededor de .NET existen multitud de tecnologías relacionadas que dependen del tipo de aplicaciones que vayamos a crear, como por ejemplo:

  • ASP.NET: la base para crear aplicaciones Web basadas en .NET, con múltiples capas por encima como Web Forms, MVC, Web API o Web Pages en el caso de .NET tradicional.
  • Entity Framework: la tecnología de acceso a datos ORM (Object Relational Mapping) de Microsoft.
  • WPF (Windows Presentation Foundation), para crear interfaces de usuario.

Dado que .NET Core permite crear aplicaciones web y para la UWP, y esta última solo sirve para Windows, podemos decir que lo que nos ofrece .NET Core por encima de la plataforma base es fundamentalmente Entity Framework Core (para acceso a datos, y con diferencias respecto a Entity Framework "tradicional"), y ASP.NET Core (para desarrollo web). ASP.NET Core ofrece una serie de funcionalidades adicionales por encima, como MVC, Razor Pages (una nueva característica que ha aparecido con .NET Core 2 para crear fácilmente páginas dinámicas y que ya veremos si cuaja o no) y SignalR que todavía no es más que una versión "alpha" y tardará bastante tiempo todavía en aparecer en Core de manera oficial.

Dicho esto, el siguiente diagrama comprara .NET y .NET Core en aquello que tienen en común, es decir, el acceso a datos con Entity Framework y el desarrollo de aplicaciones web:

Mapa de tecnologías .NET 2017-2018

Nota: En este gráfico he unido con flechas discontinuas ASP.NET Core y EF Core con el Full Framework tradicional porque se pueden utilizar también desde ahí, aunque hay que tener en cuenta que en ese caso las aplicaciones resultantes no serán multiplataforma, y no tendrán acceso a la misma funcionalidad que con las ediciones tradicionales.

Como vemos ambas se parecen mucho, pero en el caso de .NET Core SignalR todavía no está disponible (se espera aún para el año que viene, pero no tiene fecha). Otras tecnologías más antiguas como Web Forms no están disponibles ni nunca lo van a estar, y las recién estrenadas "Razor Pages" tratan de sustituir a las "Web Pages" tradicionales que en cualquier caso nunca tuvieron demasiado tirón.

Para crear aplicaciones Web ASP.NET MVC 5 y ASP.NET Core MVC, a pesar de compartir el nombre y por supuesto muchos conceptos, son tecnologías diferentes para las cuales hay que aprender características y formas de trabajar muy diferentes, por lo que el cambio de una a otra no es directo.

En lo que respecta a Web API, la tecnología para crear servicios REST con .NET, en la plataforma tradicional era una biblioteca externa y en .NET Core viene incluido de serie con ASP.NET Core MVC. Además han cambiado algunas cosas, simplificando de hecho el desarrollo.

En resumen

En el ámbito de tecnologías de desarrollo de Microsoft existen básicamente 3 opciones:

  • La plataforma .NET tradicional, con la que podemos crear todo tipo de aplicaciones. Estable, muy utilizada y con pocos cambios en el horizonte.
  • La plataforma .NET Core: la tecnología de futuro de Microsoft. Ya en su versión 2 y estabilizada, poco a poco irá tomando cuota de mercado y será más y más utilizada, aunque de momento va por detrás de la anterior. Multiplataforma y utilizada sobre todo a desarrollo Web.
  • Xamarin: la última adquisición pero con muchos años de historia detrás. Permite crear aplicaciones multi-plataforma sobre todo pensando en desarrollo para móviles (iOS, Android), pero también para Mac, Windows 10 y en breve para Linux. En muy poco tiempo ha crecido como la espuma.

Las tres usan como lenguaje común C#, comparten muchos conceptos, clases y técnicas, por lo que se pueden reutilizar en unas gran parte de los conocimientos que adquiramos en las otras.

Con .NET Standard Microsoft está tratando de unificarlo todo de cara al futuro: .NET framework (tradicional), .NET Core, Mono, Xamarin, UWP... de modo que al final tengamos un subconjunto común que nos permita intercambiar bibliotecas y funcionalidad entre todas las plataformas. Ese es el gran reto a medio plazo.

Si tienes interés en aprender alguna de estas plataformas te podemos ofrecer:

Además puede interesarte:

José Manuel Alarcón Director de campusMVP, es ingeniero industrial y especialista en consultoría de empresa. Ha escrito diversos libros, habiendo publicado hasta la fecha cientos de artículos sobre informática e ingeniería en publicaciones especializadas. Puedes seguirlo en Twitter en @jm_alarcon o leer sus blog técnico o personal. Ver todos los posts de José Manuel Alarcón

No te pierdas ningún post

Únete gratis a nuestro canal en Telegram y te avisaremos en el momento en el que publiquemos uno nuevo.


Comentarios (2) -

Alberto Chirinos
Alberto Chirinos

Excelente articulo, clarifica en gran medida lo que se está moviendo en cuanto a desarrollo con tecnologías Microsoft. Sin embargo me pregunto: ¿Para Full Framework / .NET Tradicional no se está trabajando en nuevas actualizaciones / versiones?  ¿Todo el esfuerzo (o la mayoría) se enfoca ahora en .NET Core?

Responder

José Manuel Alarcón
José Manuel Alarcón

Hola Alberto:

Hoy en día es así, sí. .NET tradicional está estabilizado y durará muchos años, pero el futuro a medio/largo plazo es Core (aunque a las empresas le cueste adaptarse y vaya todavía lento).

Saludos y gracias por comentar.

Responder

Agregar comentario