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

Tienes una versión actualizada de este artículo, con más cosas, aquí: Plataforma .NET, Plataforma .NET Core y Xamarin: el panorama de las tecnologías de desarrollo Microsoft en 2018.

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.

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.

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é M. Alarcón Aguín Fundador 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. Microsoft lo ha reconocido como MVP (Most Valuable Professional) en desarrollo web desde el año 2004 hasta la actualidad. Puedes seguirlo en Twitter en @jm_alarcon o leer sus blog técnico o personal. Ver todos los posts de José M. Alarcón Aguín

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ú

Comentarios (20) -

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 <[email protected]>" 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

Jorwin Cumare
Jorwin Cumare

Buen aporte, me ha servido mucho para continuar en el desarrollo de un proyecto que tenemos en Mvc Asp.net, actualmente estamos debatiendo si cambiamos lo que tenemos a .net core, mi temor es que uso varias librerias de terceros todas en nuget, me toca revisar si esas librerias estan soporta .net core

Responder

Muy buena explicación, estoy leyendo a penas esto del aspx que ya se puede usar en cualquier S.O. pero sin en cambio me queda la duda, lo aprendido de Aspx net va a funcionar en el Asp core o por que el renombre, si actualmente mi PC ya tiene aspx net que tengo un Win 8.1 entonces, ahi mismo se va a instalar o es por separado, gracias

Responder

Hola Celestino:

Las páginas ASPX pertenecen a una tecnología denominada ASP.NET Web forms, que no tiene mucho que ver con esta de la que estamos hablando aquí. ASP.NET MVC 5 sí que tiene que ver porque comparte la base con Web Forms (la parte de utilidades transversales, como caché, sesiones, etc...). Pero ASP.NET Core y ASP.NET Core MVC son tecnologías nuevas en las que todo esto ha cambiado.

En resumen:

- Si sabes ASP.NET Web forms lo que sabes no te va a servir prácticamente de nada para aprender ASP.NET Core y Core MVC.
- Si sabes ASP.NET MVC 5 muchos conceptos son idénticos en ASP.NET Core MVC, pero otros muchos no y requiere un aprendizaje adicional importante.

Espramos habértelo aclarado.

Saludos.

Responder

Estoy flipando en colores !!!!...cuando eres joven miras adelante y a medida que cumples años empiezas a mirar hacia atras.
Y casi puedo predecir que dentro de 20 años vamos a tener una estela de tecnologias tan variada que me pregunto yo quien va a tener conocimientos para dar soporte a todo ese software ya funcionando.

No se si me estoy explicando, pero al ritmo que avanza esto de la informática, creo que se va a crear un nicho de mercado en tecnologias obsoletas. Vamos...que veo mas futuro laboral en el pasado que en el futuro y tratar de seguir el rastro a esta locura que estamos viviendo. Esta abalancha de frameworks, cores y leches con vinagre....Al final no te conduce a ninguna parte.

Hace unos años me inicié en la programacion web. Amigos, no se quien coño habla de codigo limpio pero (Y es una opinion personal quede claro). Como es posible que para hacer una mierda de programa necesites HTML5, CSS3, JavaScript, BootStrap, Razor,  Jquery, Json..c#, entityes o T-SQL.y todo lo que le quieras poner...¿Hablamos de espagueti code en 2017?...La verdad, lo mires como lo mires esto es parche sobre parche y chapuza sobre chapuza. En definitiva ...una mierda en toda regla. Lejos de simplificarse las cosas ...todo se ha complicado exponencialmente.

Para terminar... y perdon por irme del tema. Mi opinion es que la versión CORE pueden metersela por donde escuecen los pepinos. Ale a pasar buena tarde.


Responder

Enmanuel García
Enmanuel García

Interesante artículo, de verdad que no podemos confundirnos pensando que .NET Core es una versión ligera de .NET Framework. Yo también escribí un poco sobre el tema acá www.enmanuelgarcia.com/.../

Responder

Pablo Najar
Pablo Najar

Estimado, buenas. Ya a fines de 2017 que opinas de las dos plataformas?.
Estamos con un proyecto en ASP-NET MVC 4 (WCF para los Servicios/ EF 4.5)que debemos hacer un mantenimiento y se nos dio la posibilidad de migrarlo a .NET. CORE. Es importante la cantidad de código que contiene, y vemos que no hay herramientas que lo hagan "automaticamente" por ello tenemos muchas dudas si es conveniente  migrar a una plataforma que: será la que se imponga sobre la otra?, la que mas futuro tenga?. Bueno muchas gracias desde ya!!.

Responder

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

Hola Pablo:

He escrito una versión actualizada de este tema hace poco, lo tienes aquí:

www.campusmvp.es/.../...llo-microsoft-en-2018.aspx

No obstante migrar una aplicación de .NET clásico a .NET Core no es una buena opción y menos si es una app grande. La propia Microsoft recomienda no hacerlo. No obstante también he escrito sobre eso aquí, por si os interesara intentarlo:

www.campusmvp.es/.../...reguntas-y-respuestas.aspx

Saludos!

Responder

Pablo Najar
Pablo Najar

Estimado, muchas gracias por tu pronta respuesta. Muy importantes tus aportes. Agradecido!! un abrazo y sigue asi!!!

Responder

Pingbacks and trackbacks (1)+

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.