Archivo por meses: noviembre 2016

La evolución de las PCL con .NET Standard para Xamarin

En un anterior post hablé sobre la unificación de las librerías .NET a través de .NET Standard para desarrollos cross-platform.

Muchas de ellas, recientemente, han añadido soporte a la librería de .NET estándar. La virtud de esta librería es que agrupa un conjunto de API’s básicas y versiones construidas de forma agnóstica a la plataforma que las va a usar. Por este motivo, las librerías construidas con este subconjunto de dotnet se consideran una evolución a las librerías portables (PCL). Estas no tienen un Profile asignado si no que tienen un alias único que permite una comptaibilidad transversal de forma que las nuevas versiones de esta son compatibles con otras más antiguas.

Para entenderlo mejor, podemos ver un diagrama especifico que muestra el interior de la librería,netstandard

Y otro, de cómo esta organizado por dentro y como la capa de contratos hace posible esta compatibilidad lineal, 

.NET Standard contracts

Tenemos que tener en cuenta que la librería no puede tener todas las APIs que tenemos en .NET debido a que muchas de ellas están atadas a versiones especificas de Microsoft Windows y la totalidad del .NET Framework tradicional no es compatible con el enfoque cross-platform y por lo tanto, algunas API, dejan de tener sentido con este.

Cuantas más frameworks tenga que soportar la versión de .netstandard, menos APIs tendrá disponibles. Por ejemplo, netstandard1.0 es compatible con la mayoría de las plataformas pero con menos APIs y, por otro lado, netstandard1.6 soporta únicamente .NET Core 1.0 y .NET Framework 4.6.3 pero con disponibilidad de todas las APIs recientes de .NET. Para que tengáis una idea en cifras de lo que comento, .netstandard 1.0 tiene 7.949 APIs y 2.0, 32.638.

Xamarin, actualmente, soporta esta librería para los diferentes tipos de aplicaciones. Para ello nos debemos asegurar que estamos usando Visual Studio 2015 Update 3 y tener actualizado Xamarin a la versión 4.1.2.

Para hacer uso de ellas es muy sencillo y no conlleva ninguna complicación; nos vamos a VS > Nuevo Proyecto y seleccionamos la plantilla estándar de creación de PCL tal y como se muestra en la imagen,VS Standard Library

Una vez creado el proyecto, vamos a las propiedades del mismo y cambiamos el target,

propiedades_proyecto

Y ya tenemos nuestra librería cross-platform trabajando con un modelo más modular y portable que las propias PCL con una abstracción completa sin conocimiento de cuál será el destino en el que se va a usar.

Finalmente, tan solo necesitamos agregar nuestra lib a nuestro proyecto Xamarin como una referencia más y ya podemos seguir!

.NET Standard como unificación de .NET Framework, .NET Core & Xamarin

Microsoft está haciendo un gran trabajo para abrirse y exponer sus dotes tecnológicas a través de Frameworks abiertos, modulares y cross-platform con el fin de reutilizar el código al máximo.

En las primeras versiones de .NET Core, ASP.NET Core, Entity Core, etc… teníamos marcos de trabajo independientes, con un entorno aislado al .NET tradicional a diferencia de ahora.

Para huir de este entorno aislado, es dónde .NET Standard Library cómo eje de unión, entra en acción. Esta librería es una especificación de las APIs del framework que está destinada a estar disponible en todos los runtimes de .NET. ECMA355 establece una uniformidad para el comportamiento del runtime a diferencia de las antiguas .NET Base Class (BCL).

Esta librería nos permite trabajar con una API unificada para todas las plataformas de dotnet abstrayéndonos de cual es la plataforma y, además, nos permite que podamos desarrollar librerías portables sin políticas de compilación.

¡Vamos a ver esto un poco más gráfico! Así es cómo quedará el stack,.NET Tomorrow

Para nosotros, cómo técnicos, significa que tan solo tendremos que tener un knowledge de una única biblioteca. Las bibliotecas nuevas cómo .NET Core o el recién incorporado en Microsoft, Xamarin, podrán ser ejecutadas sobre esta librería sin tener que preocuparnos que  librería debemos consumir.

Para resumir este primer post nos tenemos que quedar con dos importantes mensajes; consistencia y cross-plarform en todos los desarrollos realizados con esta nueva librería.

Un saludo!!! :)