BLOG

¿Qué framework de .NET elegir para aplicaciones en servidor?

Por [N1] Fred el | 1 Comment
  • desarrollo multiplataforma

El ecosistema Microsoft .NET tiene el concepto de frameworks. Dichos frameworks definen el API que puedes usar para enfocarte en una plataforma en concreto. 

  • Tenemos el framework .NET Standard que busca solucionar el problema de compartición del código entre plataformas para los desarrolladores de .NET al aportar todas las APIs que necesitas en todos los entornos: aplicaciones de escritorio, apps móviles, juegos y servicios cloud.
  • Por otro lado está .NET Core que es un framework más pequeño para aplicaciones de servidor, de consola, aplicaciones web y como entorno en tiempo de ejecución principal del cual crear otros sistemas. Está concebido para crear aplicaciones multiplataforma con un buen rendimiento en cloud.
  • Y luego esta el “clásico” .NET Framework para aplicaciones y sistemas Windows.

Antes de empezar a crear un proyecto de un software o aplicación de arquitectura cliente / servidor en .NET debes decidir que opción en tiempo de ejecución del lado del servidor vas a usar para crear la aplicación.

Para aplicaciones servidor en .NET hay dos opciones soportadas mencionadas anteriormente: .NET Core Application y .NET Framework.  Ambas comparten muchos componentes de la plataforma .NET y puedes compartir código entre ellas. Sin embargo, hay una serie de diferencias fundamentales entre las dos, y elegir entre .NET Core y .NET Framework al final dependerá de lo que quieras lograr. En este post ofreceremos un poco de luz para ayudarte a decidir qué framework usar en cada momento para hacer aplicaciones del lado servidor en la plataforma .NET.

¿Cuándo debo usar .NET Core?

 1. Necesidad de multiplataforma

Si tu objetivo es tener una aplicación web o servidor que tiene que poder ejecutarse en varias plataformas  (Windows, Linux y MacOS), la mejor elección dentro del ecosistema .NET es usar .NET Core como su runtime (CoreCLR) y librerías que sean multiplataforma. Otra posible opción es usar Mono.

Ambas opciones son código abierto, pero .NET Core es un proyecto propio de Microsoft y tiene detrás una grandísima inversión lo que le augura un largo futuro.

Al usar .NET Core para distintas plataformas, la mejor experiencia de desarrollo se tiene sobre Windows con el IDE de Visual Studio que es compatible con muchas funcionalidades productivas como la gestión de proyectos,  depuración, control de versiones, refactoring, edición enriquecida incluyendo Intellisense, ejecución de pruebas y mucho más.

El desarrollo enriquecido también es soportado usando Visual Studio Code en Mac, Linux y Windows incluyendo intellisense y depuración. Incluso editores de terceros como Sublime, Emacs y VI, por citar algunos, van bien y pueden incoporar un editor intellisense tirando del proyecto de código abierto Omnisharp.

2. Microservicios

Cuando estés creando un sistema orientado a microservicios compuesto de varios microservicios independientes, dinámicamente escalables, de estado o sin estado, la gran ventaja que tienes aquí es que puedes usar diferentes tecnologías / frameworks/ lenguajes a nivel de microservicio. Eso te permite usar el mejor enfoque y tecnología para cada micro-área del sistema, así que si quieres crear unos microservicios potentes y escalables, lo mejor es usar .NET Core. Si por el camino necesitas usar cualquier librería de .NET Framework que no es compatible con .NET Core, no hay ningún problema, haces ese microservicio en concreto con .NET Framework y en un futuro no muy lejano puedo que lo puedas substituir con un hecho en .NET Core.

En cuanto a la plataforma de la infraestructura se podrían usar muchas. Lo ideal, para sistemas de microservicios grandes y complejos, es usar Azure Service Fabric. Para microservicios sin estado también puedes usar productos como Azure App Service o Azure Functions.

3. Sistemas que requieren de mucho rendimiento y escalabilidad

Si tu sistema requiere el mejor rendimiento y ser muy escalable de cara a dar la mejor capacidad de respuestas a muchos usuarios, debes elegir .NET Core y ASP.NET. Cuánto más puedas cubrir con la misma infraestructura / hardware, mejor experiencia de usuario ofrecerás a tus usuarios finales -y a menor precio.

Si puedes aislar pequeñas partes de tu sistema en forma de microservicios o cualquier otro enfoque similar, será bueno en el sentido de que no solo podrás evolucionar cada pequeña parte/microservicio por separado sino que también podrás usar cualquier otra tecnología a nivel de microservicio si lo que necesitas hacer no es compatible con .NET Core esperando a poder actualizarlo y traerlo a .NET Core cuando sea posible.

4. Desarrollo tipo línea de comandos Mac, Linux o Windows.

Este enfoque es opcional cuando se usa .NET Core (obviamente también puedes usar la versión completa del IDE de Visual Studio). Pero si eres un desarrollador que quiere desarrollar con editores ligeros y muchas líneas de comando, .NET Core está diseñado para CLI. Ofrece herramientas sencillas de línea de comandos disponibles en todas las plataformas compatibles, permitiendo a los programadores crear y probar aplicaciones con una instalación mínima en máquina. Editores tipo Visual Studio Code usan las mismas herramientas de líneas de comando para sus experiencias de desarrollo. Los IDE tipo Visual Studio usan la mismas herramientas CLI pero por detrás esconde una experiencia IDE enriquecida. Aquí como desarrollador puedes elegir a qué nivel quieres interactuar con la cadena de herramientas desde CLI a editor a IDE.

5. Necesidad de tener versiones de .NET en paralelo por aplicación.

Si necesitas instalar aplicaciones que tienen dependencias de diferentes versiones del framework .NET, necesitas usar .NET Core que ofrece un paralelismo total.

6. Apps UWP .NET de Windows 10

Las  apps UWP .NET usan NET Core por debajo.

¿Cuándo debo usar .NET Framework?

El .NET Framework se ejecuta principalmente en Windows. Incluye una librería de clase enorme llamada Framework Class Library (FCL)  que habilita la interoperabilidad entre distintos lenguajes de programación (cada lenguaje pueda usar código escrito en otros lenguajes mediante el uso de FCL).

FCL provee de interfaz de usuario, acceso a datos, conectividad con la base de datos, criptografía, desarrollo de aplicaciones web, algoritmos numéricos, y comunicaciones de red. Los desarrolladores hacen software combinando su propio código con .NET framework y otras librerías. El código de los programadores lo que hace es extraer funcionalidad del .NET Framework, por eso el lenguaje que eliges no resta funcionalidad a la aplicación final. El .NET Framework se usa para desarrollar software para la plataforma Windows principalmente. Microsoft también fabrica un IDE principalmente para software .NET llamado Visual Studio.

1. Aplicaciones en .NET Framework que ya están en producción / migraciones

En la mayoría de los casos no es necesario migrar tus aplicaciones .NET actuales como ASP .NET para ejecutarse en .NET Core. No solo porque el coste de la migración y de reescribir el código sería considerable, sino porque a día de hoy (principios de 2017) te encontrarás con muchas librerías que estás ejecutando desde el .NET Framework no pueden usarse desde una aplicación ejecutándose en .NET Core.

Sin embargo, si quieres sacar provecho de las nuevas capacidades de ASP .NET Core, puedes optar por migrar pero aún ejecutando en el CLR tradicional del .NET Framework. Eso te permitiría reutilizar librerías .NET de terceros de forma heredada que no son compatibles con .NET Core, sacándole ventaja a la nuevas capacidades web y enfoques propios de ASP .NET Core.

2. Nuevas aplicaciones monolíticas

Si estas desarrollando una gran aplicación para empresas que no va a ser fácil de conectar o integrar y que no sigue un enfoque de componentes o servicios aislados (tipo arquitectura de microservicios) lo más probable es que pronto tendrás que tirar de librerías que solo son compatibles con .NET Framework. Si usas el entorno de ejecución .NET Core te quedarás atascado ya que estos componentes / librerías que necesitas no se pueden ejecutar en el CoreCLR y con un enfoque monolítico es muy difícil aislar componentes / servicios que una única función que pueden estar ejecutándose con .NET Core.

Esto en absoluto quiere decir que con .NET Core siempre tienes que usar un enfoque de microservicios y que no puedes crear software siguiendo un modelo arquitectónico tradicional de varias capas. Puedes hacerlo perfectamente. Aquí todo el problema tiene que ver con la compatibilidad de las librerías y las referencias permitidas por proyecto / ensamblaje / servicio.

Un enfoque factible aquí sería usar ASP.NET Core pero ejecutándolo sobre el .NET Framework y el CLR tradicional, de forma que puedas tirar de cualquier librería del framework .NET o de terceros. Con el tiempo puedes eliminar esas dependencias para ejecutarlo todo como una aplicación .NET Core pura. Pero toda esta tarea de refactoring con una aplicación de arquitectura monolítica no será tan fácil de hacer…

3. Necesidad de usar todas las capacidades de los entornos de más alto nivel como Entity Framework 6.x, WCF y Windows Workflow Foundation.

Aunque .NET Core varias librerías nuevas relacionadas (como EF Core o WCF para .NET Core) enfocada a parte de esas áreas, aún no tienen la misma funcionalidad que sus homólogas en .NET Framework.

Nuevamente indicar que si necesitas librerías / funcionalidades que aún no están soportadas por .NET Core, se recomienda crear microservicios desacoplados usandoel .NET Framework completo que terminará migrándose a .NET Core para que puedas obtener el rendimiento adicional y las ventajas de escalabilidad para esos microservicios en un futuro.

4. Necesidad de usar sub-entornos no soportados por .NET Core.

Si necesitas usar sub-entornos como WPF, WebForms, WinForms o otros frameworks que no son compatibles con .NET Core, aún tienes que usar .NET Framework.

Conclusión

El .NET framework clásico es una tecnología muy extendida, especialmente en el ámbito de las aplicaciones empresariales, y hay millones de usuarios de aplicaciones hechas en .NET Framework, aplicaciones que van a seguir necesitando mantenimientos y soporte durante muchos años. Sigue teniendo una gran demanda laboral y es una opción sensata y conservadora para adentrarse en la programación e tecnologías Microsoft.

.NET Core es una tecnología de mucho futuro a corto plazo. Microsoft está muy centrado en hacer evolucionar esta tecnología ya que es su apuesta definitiva para la creación de aplicaciones eficientes y optimizadas para multiplataforma (Windows, Linux y Mac). Está también concebida para ejecutarse en la nube, por ello el tema del rendimiento toma mucha relevancia ya que en la nube cuantos más datos mueves más inversión se necesita. Actualmente está en la versión 1.0 pero no es ninguna locura adentrarse tanto si ya tienes experiencia en el framework .NET clásico como si empiezas de cero. La tendencia es movilidad, multiplatforma y cloud desde ya varios años.

Artículos relacionados: ¿Cómo aprender a programar en .NET? y ¿Qué lenguaje de programación elegir para programar en .NET?

Nota: este artículo ha tomado como fuente este artículo y este.

Velneo es el entorno ágil para el desarrollo
de aplicaciones empresariales

DESCARGAR VELNEO

One Response to "¿Qué framework de .NET elegir para aplicaciones en servidor?"
  1. [N1] jose_guevara dice:

    Saludos buen post quisiera preguntarte una seria de dudas que tengo con respecto a net core

    1. Estoy empezando en todo este mundo de .net y quiero aprender a futuro ASP.Net mi pregunta es si ASP del .net tradicional es el mismo tipo de codigo, la misma sintaxis y herramientas de ASP.net core? o que diferencias pueden haber al respecto

    2. relacionado a lo primero si yo aprendo mucho de lo que tiene que ver con .net, en .net core sera en la mayoria lo mismo que aprendi con el framework tradicional .net?

    gracias de antemano.

Deja un comentario

Esta web utiliza cookies. Si continúa navegando acepta dichas cookies y nuestra política de cookies. Gracias. ACEPTAR

Aviso de cookies