Presentación utilizada en el #NetRaf2017 en la cual se mencionan los distintos aspectos asociados a la plataforma .NET en el 2017:
- .NET Core
- .NET Standard
- Xamarin
- Azure
1. La plataforma .NET en el
2017
Diego Bersano
@diegobersano
https://diegobersano.com.ar/
2. • Grupo Kinexo es un conjunto de empresas que ofrece soluciones de desarrollo de
software, marketing digital y servicios multimedia
• Contamos con un equipo estable de más de 100 desarrolladores y 150 empleados en
total en 3 oficinas del interior (Rafaela, Santa Fe y Paraná) y una trayectoria de más de
15 años
3. Tecnologías
J2EE, Hibernate, JMS, JSF, Struts, Spring
MVC, Grails, Scala, Play y GO - Golang.
ASP.NET MVC, Azure, NHibernate, Entity
Framework, Web Api, SignalR, WCF, IIS,
C#, F#, Xamarin, .NET Core
7. Uno de los pilares de interactividad:
.NET Standard
• .NET Standard es una especificación formal de las APIs .NET, definiendo los
requerimientos para que puedan estar disponibles en todas las plataformas puedan
ejecutar aplicaciones .NET
• Su objetivo es establecer una base uniforme en el ecosistema .NET
• Establece los siguientes escenarios clave:
Define un conjunto uniforme de API de PCL para todas las plataformas .NET
Permite a los desarrolladores crear librerías que se pueden utilizar en todas las plataformas de
ejecución de .NET, utilizando este mismo conjunto de API
8. Un cambio de enfoque que nos beneficia a
los desarrolladores
En los últimos años pudimos ver un cambio muy importante en lo que se refiere a la
familia de productos Microsoft, lo cual aplica a la plataforma .NET:
• Framework multiplataforma
• Mayores integraciones con otras plataformas
• Muchas menos restricciones en entorno de trabajo
• Menos restricciones en el entorno de ejecución
9. Contamos con herramientas de trabajo
multiplataforma
• Visual Studio
Windows
macOS
• VS Code
Windows
macOS
Linux
• Rider (basado en IntelliJ)
Windows
macOS
Linux
• En la nube…
10. .NET Core, cambiando el paradigma
• El comienzo del cambio del paradigma que ha llevado Microsoft en los últimos años
• Es la plataforma de desarrollo general creada y mantenida por Microsoft y la
comunidad .NET
• El código fuente está disponible en GitHub (https://github.com/dotnet/core)
• Es multiplataforma, soportando Windows, macOS y Linux, además de poder ser usado
en dispositivos móviles, en la nube y en IoT
• .NET Core implementa el.NET Standard y, por tanto, admite las librerías que lo utilicen
11. .NET Core 2.0
• Hace unos días en el Build 2017 se presentó la nueva versión del framework
• Estará disponible en el Q3 de 2017
• Busca mejorar ciertos aspectos que de momento hacían que la plataforma no sea una
alternativa tan viable a la hora de abordar nuevos proyectos
• Entre las principales ventajas se destacan:
Extensión del soporte a más sistemas operativos: Linux y Tizen
Ampliación del soporte de API’s en comparación a .NET Core 1.x (derivado de la adopción del
.NET Standard 2.0)
Optimizaciones en rendimiento
Mejor integración en Visual Studio
Mejor integración con Azure
13. Desarrollo web
Sigue la línea de los últimos años, contando con dos partes:
• ASP.NET MVC
• ASP.NET WebApi
A esto se le suman las variantes de ASP.NET Core, el cual es útil usarlo para:
• Aplicaciones de alto rendimiento
• Aplicaciones que correrán en un servidor Linux
• Aplicaciones nuevas y sin dependencias en librerías de terceros (paquetes Nuget)
pensando en que las mismas cuenten con el soporte necesario
15. Aplicaciones para cualquier plataforma:
Xamarin
• Xamarin es una plataforma que nos permite desarrollar en C# aplicaciones para
Android, iOS, Windows Phone, aplicaciones universales de Windows y macOS
• Podemos generar aplicaciones nativas para cada una de las plataformas móviles
mencionadas anteriormente
• Permite que la lógica Core de nuestra aplicación pueda ser compartida entre las
distintas plataformas, en vez de tener que desarrollar y resolver las mismas
problemáticas en diferentes lenguajes
17. Aplicaciones para cualquier plataforma:
Xamarin
• A su vez contamos con Xamarin.Forms
• Es una librería que cuenta con un conjunto de elementos estándares para las distintas
plataformas
• Esto hace que escribamos solamente una vez la lógica de presentación, y luego la
librería se encarga de renderizar dicho elemento en la plataforma correspondiente de
la forma adecuada
19. SQL Server ♥ Linux
• Es un paso más de este enfoque del que venimos hablando desde el principio
• Permite usar el motor de base de datos sin estar restringidos a ejecutarlo en un
servidor Windows
• Podemos usar Windows o Linux, tanto en un entorno local como en la nube
20. Open Source
Como vimos anteriormente para .NET Core, muchos proyectos de Microsoft siguen esa
línea. Esto permite que podemos aprender de lo realizado, además de realizar nuestros
aportes:
• VS Code
• Azure SDK’s
• Funcionalidades particulares de Azure
• msbuild y vstest
• TypeScript
• SignalR
• Etc, etc, etc..
21. Integración en la nube con Azure
• Contamos con el SDK para integrarnos a las distintas opciones que nos ofrecen los
servicios en la nube
• Esto permite usarlo como plataforma de ejecución de nuestras aplicaciones (IaaS -
PaaS)
• Pero también nos ofrece soluciones y servicios dedicados ya armados que solucionan
determinadas problemáticas (SaaS), lo que hace que podamos ahorrar tiempos de
desarrollo como darle un salto de calidad a nuestras aplicaciones
• Junto a Ezequiel Eñiguez vamos a estar viendo un ejemplo de estas soluciones
22. Y no solo integración, también desarrollo
en la nube con Azure
• Pero no sólo contamos con servicios dedicados (SaaS), sino que también con
plataformas que nos permiten construir nuestras aplicaciones en la nube al 100%
• Un ejemplo de esto son las Logic Apps, que nos permiten automatizar procesos
completos en la nube con integraciones a distintas plataformas
• Un paso más allá son las Azure Functions, ya que directamente programamos
funciones en la nube (https://github.com/diegobersano/bootcamp-corrientes)
• Nos abstraemos totalmente de donde se ejecutan, yendo a un concepto de
serverless
• Aparece el concepto de nanoservicios
Como empresa local estamos usando la gran parte de las tecnologías que vamos a ver en este evento.
Es por eso que quise mencionarlo en este punto, para que sepamos que no son cosas muy generales o utopías que no vamos a usar nunca, sino todo lo contrario. Son herramientas que podemos usar constantemente
De forma general podemos definir tres grandes partes o ramas de la plataforma .NET en este momento
El framework completo, mencionado muchas veces como la variante full
.NET Core, la plataforma open source. Se ha reescrito el framework con un enfoque muy fuerte en la optimización
El problema es que para cada uno de las variantes hay una forma distinta de librerías base, cada una asociada a cada plataforma.
Este es el resultado del nuevo objetivo que se plantea con .Net Standard, pudiendo desarrollar librerías base que corran en cualquier plataforma.
Specification of .NET APIs for .NET Runtimes
Reduces/Eliminates conditional compilation of shared source
Offers different “netstandard” profiles for platform support
Replaces PCL
More resilient to change in constituent .NET platforms
Class Library (NuGet Package)
Uno de los aspectos más importantes de los últimos años es este cambio de enfoque que Microsoft ha tomado.
Cambia la imagen de ese Microsoft totalmente privativo y cerrado sobre si mismo
Hace un tiempo hubiera sido imposible pensar que tendríamos la opción de contar con el bash de Ubuntu integrado por ejemplo
O tantas contribuciones a proyectos Open Source
Como el ecosistema ahora es multiplataforma, la disponibilidad de los IDE’s va en el mismo sentido.
Hace unos días se ha liberado la versión final de VS for Mac
VS Code tiene una muy buena compatibilidad en general, tanto para la familia .NET como para desarrollo. Lo he usado en Pascal, Assembler, SQL..
Totalmente renovado, enfocado en optimización y poder correrlo en múltiples plataformas.
Cambian manejo de referencias, y archivos clave en los proyectos
Ahora tratará a las distintas distribuciones de Linux como una sola plataforma unificada. Antes se había optado por no avanzar de forma profunda sobre la compatibilidad en Linux, ahora con un grado de madurez mayor se opta por ir en este camino.
.NET Standard 2.0 adds 14,994 APIs that .NET Framework 4.6.1 already supports
.NET Standard 2.0 only has 43 APIs that .NET Framework 4.6.1 doesn't support
Esta es la comparación de cómo se distribuye la plataforma ASP.NET actualmente, pudiendo contar con ambos enfoques: framework completo o Core
La capa de compilación y runtime sigue siendo compartida por ambos
Marco en negrita lo de aplicaciones nativas porque es muy importante: son pocas las alternativas que nos ofrecen la generación de una aplicación nativa
Esto es importante por cuestiones de compatibilidad y rendimiento
Elección de C# como lenguaje
Podemos integrar código java /objective-c
Este es un ejemplo de lo que se propone como arquitectura. La idea es reutilizar toda la lógica de la aplicación que es genérica y podamos escribir en C# independientemente de la plataforma: llamadas a servicios, almacenamiento en BD locales, lógica de negocio, validaciones, etc.
En general es lógica que se escribe muchas veces de forma repetitiva en distintos lenguajes y de distintas formas, perdiendo tiempo valioso
El punto intermedio es opcional, dependiendo de si usamos o no Xamarin.Forms (lo veremos a continuacion)