El panorama de .NET en 2016: ¿plataforma completa o .NET Core?
Men? de navegaci?nMen?
Categorías

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

El panorama de .NET en 2016: ¿plataforma completa o .NET Core?

versiones-asp-net-Core

En Julio del año pasado, justo antes de que lanzasen Visual Studio 2015, escribí un post muy detallado sobre todo el lío de versiones que se nos venía encima con la aparición de lo que se conocía entonces como ASP.NET "vNext", y el enorme fiasco que había montado el equipo de desarrollo con la numeración de versiones que habían elegido.

Aunque creo que te interesará y deberías leerlo, si no quieres hacerlo ahora, como resumen te diré que lo que hicieron con el versionamiento del producto daba a entender a la gente que todo lo nuevo que están haciendo iba a ser una nueva versión de lo anterior, sustituyéndolo, cuando en realidad son dos proyectos distintos que trabajarán en paralelo.

Es decir, a partir del momento en el que salga lo nuevo tendremos dos ediciones diferentes y en paralelo de la plataforma .NET: la "tradicional" y la "Core", pensadas para necesidades diferentes y con filosofías distintas.

La última noticia en este culebrón saltó el pasado miércoles cuando anunciaron que le iban a cambiar el nombre definitivamente a la tecnología y que pasaría a llevar el apellido "Core" en todos los nombres.

Así, las nuevas tecnologías que lanzarán se llamarán:

Es curioso que lo hayan hecho ahora cuando la mayoría de los "Insiders" llevamos diciéndole exactamente esto desde hace más de 1 año, e incluso en la última reunión global en Redmond en noviembre tuvimos un fuerte debate al respecto (que parece que por fin les hizo cambiar de opinión). En cualquier caso más vale tarde que nunca ;-)

Sea como fuere, lo importante es que el gráfico de las tecnologías .NET en 2016 será este a partir de ahora:

Plataforma .NET Core - 2016

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.

eBook gratuito: 20 consejos y conceptos imprescindibles para desarrolladores de C# y .NET

Resumen de la situación

Los puntos clave que debemos tener claros son los siguientes:

  • Existirán dos versiones diferentes de .NET en paralelo:  .NET Full Framework (solo para Windows) y .NET Core (multiplataforma y totalmente Open Source). No son intercambiables. Si usas ASP.NET Core todos los componentes que utilices deberán ser compatibles con .NET Core, lo cual te limita el uso que puedes hacer de controles comerciales u Open Source (por poner un ejemplo: iTextSharp para crear PDFs no es compatible) e incluso de componentes propios anteriores que hayas creado.
  • Las versiones Core no sustituyen a las anteriores: son ediciones diferentes, y Core es una nueva opción para aprender y desarrollar. Aunque se parecen y funcionan de manera similar, NO son lo mismo.
  • Las ediciones Core tienen menos funcionalidad que las versiones "Full": pero a cambio funcionan en Windows, Mac y Linux y son más ágiles (más rendimiento) y más granulares (podemos decidir con mayor detalle qué partes queremos incluir en una aplicación).
  • Entity Framework Core 1.0 es diferente de Entity Framework 6: de hecho cuando salga tendrá su funcionalidad bastante recortada respecto a las posibilidades de la actual versión "Full". A medida que pasen los meses acabará probablemente equiparándose.

Ante esta situación ¿cuál debo aprender?

Dicho así la respuesta parece clara: deberías aprender las dos. Lógicamente, dominando ambas tendrás más puertas abiertas ;-)

Sin embargo el tiempo y los recursos son limitados, así que si debes escoger y quedarte solo con una ¿cuál debería ser?

Difícil elección.

Por un lado .NET Full framework (la tradicional) está presente en cientos de millones de equipos de todo el mundo, y es una de las principales tecnologías utilizadas en la empresa. ASP.NET MVC 5.x es el motor de miles y miles de aplicaciones que se deben seguir manteniendo. Esta tecnología no va a desparecer en un futuro cercano y hay muchísimas empresas en todo el mundo que la utilizan y, por tanto, la demandan. A día de hoy, mi sensación personal es que el Full Framework es el camino más seguro por el que empezar a día de hoy, en 2016, sobre todo si quieres aprender con objetivos laborales.

Por otro lado .NET Core es una tecnología prometedora creada desde cero pensando en que sea multiplataforma y lo más eficiente posible. Por ello es interesante aprenderla si quieres crear aplicaciones que sean capaz de ejecutarse en Windows, Linux y Mac o si el rendimiento es realmente crucial para las mismas. No es que la versión tradicional no obtenga un gran rendimiento, es simplemente que Core está pensado para eso, para ejecutarse en la nube donde la eficiencia significa dinero. Además, el equipo de desarrollo de .NET en Microsoft está volcado en esta nueva edición y lo seguirá estando en los próximos meses, así que a medio/largo plazo cada vez tendrá más peso.

Curso de ASP.NET Core MVC: Tu mejor opción para aprender online y en español.

Eso sí, en mi opinión es una apuesta más arriesgada por el momento en cuanto a estabilidad de características y compatibilidad hacia atrás. Están haciendo cambios constantemente, no solo añadiendo cosas. La versión definitiva es ya más estable y las nuevas versiones deberían ser 100% compatibles hacia atrás con la 1.0, pero sinceramente no creo que eso les preocupe demasiado. Por eso veo un riesgo. Yo personalmente quizá esperaría unos cuantos meses (hasta finales de 2016 o así) para adoptarla y así asegurarme de su estabilidad. Quizá me pase de previsor, pero....

En cualquier caso, hagas lo que hagas, si lo que quieres es meterte en el mundo .NET, recuerda que los fundamentos de la plataforma y del lenguaje C# son los mismos en ambas plataformas. Así que el primer paso será siempre dominarlos.

ACTUALIZACIÓN 1 de Marzo de 2016: Más de un mes después y las cosas siguen totalmente paradas en cuanto a versiones "oficiales" de .NET Core. A pesar de estar en una versión RC ("Release Candidate", es decir, casi definitiva), no hacen más que meter cambios que rompen la compatibilidad hacia atrás. Las últimas noticias del "Roadmap" son de hace un mes, y sigue sin haber fecha para la próxima RC, y mucho menos para la 1.0 definitiva. Ellos mismos de manera oficial justifican el que no haya una fecha.  Los que esperábamos que estuviese listo para el Build, creo que vamos a llevarnos una decepción. Y cuando salga la 1.0 casi seguro que en un mes tienen una 1.1 o similar que romperá la compatibilidad hacia atrás... Todo esto es una opinión personal, pero reafirma mi opinión anterior: .NET Core es una apuesta arriesgada. Y lo será al menos durante los primeros meses después de que salga la versión 1.0 (cuando salga). En fin...

ACTUALIZACIÓN 20 de abril de 2016: en el último hangout con el equipo manifestaron que no habría versión RC2 hasta por lo menos 4 o 6 semanas. Esto nos pone en el mes de junio. Jugando a ser adivino me aventuro a decir que no tendremos versión 1.0 definitiva (RTM) antes de septiembre o quizá octubre de 2016 :-(
Seguiremos informando...
ACTUALIZACIÓN 9 de mayo de 2016: hace un par de días han manifestado que en cuestión de 1 semana más o menos habrá RC2 de .NET Core 1.0, aunque no así del "Tooling". La versión definitiva (RTM) probablemente salga a finales de Junio, o sea, mucho antes de lo esperado hace solo unas semanas, aunque las herramientas de desarrollo definitivas para trabajar con ella tardarán más (¿septiembre?). Más detalles en el blog de nuestro tutor José María Aguilar.
ACTUALIZACIÓN 28 de junio de 2016: bueno, por fin se ha liberado .NET Core 1.0 versión definitiva. Ha sido un tanto precipitadamente porque la cosa no daba más de sí y tenían que lanzarlo, pero aún falta el "tooling" que no saldrá probablemente hasta octubre, junto con la versión 1.2. Es decir, durante los próximos meses van a estar ampliando la plataforma a lo loco. Solo esperemos que no metan cambios incompatibles (se supone que no, pero si nos atenemos al histórico del proyecto, vaya usted a saber...).

¡Espero que te sea útil!

Nota: Gracias a José María Aguilar por revisar este artículo antes de su publicación.

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 (12) -

Gracias por aclarar este tema a los que recien ingresamos en el aprendizaje web con .net.

Responder

Julio Trujillo
Spain Julio Trujillo

Efectivamente Joseé Manuel adoptarla ahora es todo un riesgo.... Mejor esperaría más de un año, ya sabemos lo que pasa luego. Respecto a core yo esperaba más portabilidad pe. Android IOS etc y no ir de la mano del viejo MONO y sus derivados o evolutivos porque eso es una auténtica jungla.

Responder

UnoQuePasaba
UnoQuePasaba

¿Con cuál quedarse?... pues hombre, estamos en España y excepto que trabaje alguno en una empresa puntera y partnert de Microsoft que genera aplicaciones sin que el cliente, decida, pues nos toca seguir con el "full" de framework 3.5!!!! porque seamos realistas, trabajo para Indra  y he trabajado para otras similares y todas, incluida, los clientes a los que hacen outsourcing (Endesa, ONCE, Enresa, Movistar etc...) siguen teniendo proyectos VB6, usan internet explorer 8 e incluso, si el cliente, no paga TODA la licencia de Microsoft para Office, pues ahí estamos, con el notepad y VS2010 express para poder avanzar... Y es que en este país, profesionales que les gustaría evolucionar con estas tecnologías, haylos, pero gerentes, ejecutivos, jefes de proyectos, clientes etc.. que quieran tener un producto bueno, pocos, prima el dinero y la ignorancia tecnológica de una mentalidad retrograda.

Responder

Allan Cantillo
Allan Cantillo

Tengo dos dudas:
¿porqué si el .Net Core 1.0 es una versión definitiva cuando uno lo trata de bajar apunta a un .exe que dice Preview2?
¿si .Net Core es lo que se usa por debajo en UWP eso no implicaría que uno podria usar UWP en Mac y Linux?

Responder

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

Hola Allan:

.NET Core es una versión definitiva y no lleva "Preview2" en el nombre cuando te la bajas. Lo que lleva esa palabra en el nombre es el SDK de .NET Core que sí que está en Preview al igual que todo el "Tooling" de la plataforma. Puedes verlo aquí:

https://www.microsoft.com/net/download

En cuanto a las Universal Windows Platform (UWP) apps, no es que .NET Core use por debajo UWP, sino más bien al revés: UWP usa por debajo .NET Core, por lo que una aplicación universal de windows 10 se ejecutará con .NET Core, que no es lo mismo. No podrás ejecutar esas aplicaciones en Linux o Mac por que son un estándar para crear aplicaciones multiplataforma bajo todas las versiones de Windows (escritorio, móvil, consolas, Hololens...). No sé si en el futuro permitirán hacerlo o no.

Espero habértelo aclarado.

Saludos.

Responder

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

Y por cierto, se me olvidaba, la parte de "lógica de negocio" de tu aplicación (es decir, la parte "no visible" de tu UWP app) podría ejecutarse sin problemas en Linux o Mac, pero no así la interfaz de usuario ni las partes que hagan uso de APIs nativas de Windows.

Responder

Buenas: ¿que hay acerca de usar en el futuro VB o F# en Core? De momento no es posible, y para mi es fundamental poder usarlos, sobre todo F#. Un saludo y gracias.

Responder

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

Hola Pepe:

F# ya está soportado actualmente en .NET Core:

https://github.com/dotnet/netcorecli-fsc/wiki/FAQ

De VB lo último que yo sé es que está bloqueado de momento el soporte (Julio 2016): https://github.com/dotnet/cli/issues/587

Saludos!

Responder

Buenas noches.

Amigos estoy intentando instalar .net core en mi linux mint 18 32 bits siguiendo las instrucciones dadas aquí:
https://www.microsoft.com/net/core#ubuntu

El problema se genera al ejecutar:
sudo apt-key adv --keyserver apt-mo.trafficmanager.net --recv-keys 417A0893

Recibo la siguiente respuesta:
Executing: /tmp/tmp.Q0EdLOwsJl/gpg.1.sh --keyserver
apt-mo.trafficmanager.net
--recv-keys
417A0893
gpg: solicitando clave 417A0893 de hkp servidor apt-mo.trafficmanager.net
gpg: clave 417A0893: clave pública "MS Open Tech <interop@microsoft.com>" importada
gpg: Cantidad total procesada: 1
gpg:               importadas: 1  (RSA: 1)
gpg: almacén editable no encontrado: eof
gpg: error leyendo `[stdin]': error general
gpg: import from `[stdin]' failed: error general
gpg: Cantidad total procesada: 0

Alguien podría indicarme cual es el problema y de ser posible la solución?

Estoy urgido de esto ya que tengo un proyecto en puertas y estoy evaluando hacerlo siguiendo con .Net Core

Agradecido de antemano por la atención prestada  

Responder

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

Hola Luis:

En la páginad e .NET Core vienen instrucciones con Linux de 64 bits. Prueba con esta instrucción sh antes de apt-key:

sudo sh -c 'echo "deb [arch=i386] apt-mo.trafficmanager.net/repos/dotnet-release/ trusty main" > /etc/apt/sources.list.d/dotnetdev.list'

Si no abre una incidencia en la lista de incidencias de .NET Core:

https://github.com/dotnet/cli/issues

Saludos.

Responder

Hola, agradecido por la respuesta, igual me genera el error, como me lo comentaste, abrí la incidencia en github, esperemos por su respuesta, al tenerla paso por aquí dando los resultados.

Aprovecho para preguntar la combinación mvc core - signalR2 que te parece? viable, aceptable ya lista para producción?  

Responder

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

Hola de nuevo:

SignalR 2 está pensado para trabajar con .NET 4.x.
Están preparando una nueva versión que saldrá para el año que viene (aunque no sabemos cuándo aún) que será específica para .NET Core.

Saludos.

Responder

Pingbacks and trackbacks (1)+

Agregar comentario