# data[].attributes.body
Comenzamos hablando de la Biblioteca Clases Portable. Este proyecto contendrá la clase que es el punto de entrada para la aplicación de Xamarin.Forms. Esta clase (regularmente llamada App y contenida en el archivo físico App.cs) es de tipo Xamarin.Forms.Application.

A continuación se describen los miembros más importantes de la clase App:

MainPage

Resources

OnStart()

OnSleep()

OnResume()

Properties

SavePropertiesAsync()

Cada uno de los proyectos concretos referencia a la Biblioteca de Clases Portable, además de referenciar al SDK de Xamarin para cada sistema operativo. Es importante recordar que si bien Xamarin es una plataforma de desarrollo multiplataforma, cada sistema operativo tendrá sus particularidades, es decir, cada sistema operativo cuenta con un modelo de desarrollo específico.

# data[].attributes.body
Comprender a detalle la arquitectura de una aplicación de Xamarin.Forms es necesario para poder construir aplicaciones robustas y elegantes con esta tecnología. El siguiente diagrama muestra la arquitectura de una aplicación de Xamarin.Forms, la cual utiliza el método de Bibliotecas de Clases Portables para compartir el código y que apunta a tres sistemas operativos: Android, iOS y UWP.

# data[].attributes.body
Cuando creamos una aplicación de Xamarin.Forms por medio de Visual Studio .NET usando la plantilla de Biblioteca de Clases Portables, Visual Studio crea diversos proyectos en la solución. El primer proyecto es la Biblioteca de Clases Portable la cual contendrá el código común y compartido multiplataforma que será usado por todo el resto de proyectos. Adicionalmente, Visual Studio .NET creará un proyecto por cada sistema operativo del que encuentre su SDK correctamente instalado y configurado. Ahora bien, nosotros podemos tener más control sobre qué proyectos exactamente crear, si creamos manualmente la solución y sus proyectos.

La siguiente figura muestra el Solution Explorer de Visual Studio .NET después de haber creado un proyecto llamado “EjemploXamarinForms”, por medio de la plantilla “Blank Xaml App (Xamarin.Forms Portable)”:

# data[].attributes.body
Una de las principales dudas que se tienen alrededor del desarrollo de aplicaciones con Xamarin es si utilizamos Xamarin o Xamarin.Forms, como si se tratasen de dos productos completamente diferentes entre sí. Esto es completamente falso, y sospecho que esta duda está basada en cómo se entendió el mensaje cuando se lanzó la plataforma por primera vez. He escuchado a personas recomendar evitar Xamarin.Forms como opción para el desarrollo de aplicaciones multiplataforma. ¡No podrían estar más equivocados! En realidad, Xamarin.Forms es únicamente la abstracción de algunos de los elementos más relevantes en la Interfaz de Usuario de los diversos sistemas operativos que soporta, pero sigue siendo Xamarin e incluso no podría ejecutar sin él.

# data[].attributes.body
Xamarin.Forms es un framework multiplataforma de elementos visuales, desplegable a través de NuGet. Estos elementos visuales son una abstracción de los elementos visuales nativos de cada sistema operativo concreto donde ejecuta la aplicación. Xamarin.Forms nos permite compartir hasta el 100% de código multiplataforma, ya que a diferencia del método “clásico”, el código compartido también incluye las vistas o Interfaz de Usuario de la aplicación.

# data[].attributes.body
BIBLIOTECAS DE CLASES PORTABLES

La Biblioteca de Clases Portable (o PCL por su nombre en inglés “Portable Class Library”) es el mecanismo más usado y sugerido para construir aplicaciones con Xamarin, ya que compila un ensamblado de tipo DLL y resulta una estrategia más limpia en el momento de construir aplicaciones.

CÓDIGO COMPARTIDO

Con este método se crea un “concentrador” en donde se colocan archivos de código y son automáticamente vinculados a los diferentes proyectos que constituyen la solución. En este caso, el código no compila a un DLL por separado, sino que compila como parte de la aplicación concreta nativa. Debido a esto, el código rápidamente se puede inundar con bucles #IF…#ENDIF, haciendo su lectura un tanto menos eficiente.

NET STANDARD

El .NET Standard es un conjunto de APIs que cada runtime de .NET debe implementar. En el momento de estar escribiendo este libro, la versión más ubicua  es la 1.6. Por sus cualidades actuales, este no será el mecanismo que usaré en el libro, sin embargo, en un corto plazo definitivamente será la estrategia recomendada cuando se construyan aplicaciones multiplataforma.

# data[].attributes.body
Xamarin permite a los desarrolladores de C# poder construir aplicaciones multiplataforma para los sistemas operativos móviles y dispositivos más importantes del mundo: Android y iOS, además de poder compartir código con aplicaciones del ecosistema de Windows. Una de las características más importantes de Xamarin es que nos permite construir aplicaciones nativas con Interfaz de Usuario y desempeño nativo, tal cual como si estuviéramos desarrollando con Java para Android o con Objective-C o Swift para iOS, pero reutilizando al máximo nuestros conocimientos en el lenguaje C# y en la plataforma de desarrollo .NET.

# data[].attributes.body
Si hablamos de la definición básica, las aplicaciones móviles son  programas diseñados para ser ejecutados en teléfonos, tablets y otros dispositivos móviles, que permiten al usuario realizar actividades profesionales, acceder a servicios, mantenerse informado, entre otro universo de posibilidades.

Una aplicación móvil es un programa que usted puede descargar y al que puede acceder directamente desde su teléfono o desde algún otro aparato móvil – como por ejemplo una tablet o un reproductor MP3.