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

26/09/2017Artículo original

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:

La plataforma .NET 4.x

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í, excepto en el caso de las aplicaciones móviles (basadas en Xamarin), son 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

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).
  Google financiará la implantación de Rust en el kernel de Linux, que quedará en manos de un programador español

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 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.

  Php file put contents

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 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:

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.
  Perfiles tu Webcam: ajustar y guardar sus parámetros en cualquier condición de luz en Windows

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:

  • Fundamentos de programación con C# y la Plataforma .NET: para iniciarse en el lenguaje C# y las cuestiones más importantes de la plataforma .NET. Vale para programar en cualquiera de las 3 pues son cuestiones de fundamentos.
  • Certificación 70-483: Programación en C# y Plataforma .NET: al igual que el anterior parte también de cero, pero llega a un nivel mucho más alto tocando multitud de cuestiones adicionales, incluyendo el acceso a datos, la programación asíncrona, etc…
  • Desarrollo Web ASP.NET MVC 5: el mejor curso que podrás encontrar sobre MVC 5.x, “tradicional”, muy demandado por las empresas, y con el que se han formado cientos de alumnos satisfechos.
  • Desarrollo Web con ASP.NET Core 2 MVC: para aprender lo último de lo último de la mano del mismo tutor, sin duda uno de los profesionales más reconocidos en estas tecnologías. Aprende .NET Core y desarrollo web con esta tecnología.
  • Desarrollo de aplicaciones móviles para iPhone y Android con Xamarin: de la mano de uno de los mayores expertos del mundo en esta tecnología, y que ha formado con nosotros a miles de desarrolladores en desarrollo móvil.

Además puede interesarte:

Esta web utiliza cookies propias y de terceros para su correcto funcionamiento y para fines analíticos y para mostrarte publicidad relacionada con sus preferencias en base a un perfil elaborado a partir de tus hábitos de navegación. Contiene enlaces a sitios web de terceros con políticas de privacidad ajenas que podrás aceptar o no cuando accedas a ellos. Al hacer clic en el botón Aceptar, acepta el uso de estas tecnologías y el procesamiento de tus datos para estos propósitos. Más información
Privacidad