.NET Standard, una librería para dominarlos a todos

Como he comentado en uno de los posts anteriores, en una de las charlas que he dado en el #NetRaf2017 comenté el estado de la plataforma .NET en el 2017. Uno de los puntos interesantes para comentar en mayor detalle es el asociado a .NET Standard, una librería que llega para dominarlos a todos.

Estado actual

Al día de hoy tenemos 3 grandes pilares que conforman la plataforma .NET, cada uno con un propósito bien definido (y muy distinto del que tienen los demás pilares):

NetStandard - Pilares.png

Veamos cada uno en más detalle:

.NET Framework:

Es la alternativa que veníamos usando hasta el día de hoy en el desarrollo de nuestras aplicaciones, también conocida como Full Framework en la actualidad. Se distribuye con el sistema operativo (es lo que estamos acostumbrados hasta el día de hoy, para correr una aplicación .NET debíamos tener la versión correspondiente del Framework instalada en el equipo.

.NET Core:

Es la versión multiplataforma del Framework, más reducida y compacta. Tiene un énfasis muy fuerte en lo que es la optimización del rendimiento, además de dar muchas soluciones a los desarrolladores de forma nativa que antes requerían siempre instalar dependencias adicionales. Lo podemos ver como una versión aggiornada del Full Framework. Dentro de los cambios que introduce, el Framework se distribuye con la aplicación, por lo cual las aplicaciones que hagamos son 100% autocontenidas.

Xamarin:

Plataforma que nos permite hacer desarrollos que corran en gran parte de las aplicaciones móviles, basada en el runtime de Mono (más detalles en este post que escribí introduciendo a Xamarin). Al igual que con .NET Core, el Framework se distribuye con la aplicación, lo cual hace que estas aplicaciones tengan un tamaño final más alto que una equivalente hecha en Java para Android o en Swift para iOS.

Lo que pasa aquí es que cada una de estas plataformas tiene una forma diferente de implementación, particularmente en las API’s a bajo nivel que cada una implementa:

Leer más »

Anuncios

#NETRAF2017, un evento que la rompió!!

Buenas!

Les comento que tuve la suerte de participar como speaker en el #NETRAF2017, un evento de tecnologías .NET que se hizo en la ciudad de Rafaela el pasado sábado 20 de mayo. Un lujo todos los speakers de primer nivel que participaron, tanto de la ciudad como a nivel nacional.

En el mismo participé con dos charlas:

La plataforma .NET en el 2017:

En estos últimos tiempos ha habido varios cambios en la plataforma, por lo que es interesante hacer una revisión de dónde estamos parados como desarrolladores y qué alternativas tenemos disponibles. Por ello hice un repaso en general del estado actual de la plataforma y sus particularidades.

Las diapositivas utilizadas son las siguientes:

Chat multiplataforma con reconocimiento de voz:

A modo de cierre del evento, con Ezequiel aplicamos distintos conceptos que se vieron en el evento para desarrollar un chat multiplataforma (sitio web, app Android y app iOS). Para ello, utilizamos las siguientes tecnologías / plataformas:

Leer más »

Elementos comunes en Xamarin.Forms: Páginas

Buenas!

Como hemos comentado en el post donde introducimos Xamarin.Forms, esta plataforma nos permite escribir solamente una vez el diseño y comportamiento de nuestras pantallas para que luego podamos ejecutarlas en distintos sistemas operativos. Para lograr este cometido nos ofrece un conjunto de elementos predefinidos y de cierta forma generales, es decir que tienen un equivalente similar en todas las plataformas.

La documentación oficial de Xamarin.Forms establece los distintos tipos de controles:

  • Páginas
  • Layouts
  • Vistas
  • Celdas

En este post veremos las páginas, el elemento inicial que nos permitirá definir la estructura general de nuestras pantallas y su flujo de navegación.

Páginas

Son el elemento de más alto nivel en Xamarin.Forms y define el comportamiento general que tendrá una pantalla o un conjunto de ellas.

Las alternativas que tenemos disponibles son las siguientes:

XamarinFormsControles - Pages.png

Como podemos ver por los iconos de cada una de ellas, tienen un comportamiento característico. Lo muy bueno de esto es que todas ellas tienen un equivalente en todas las plataformas que Xamarin.Forms soporta y nos abstrae de cómo se implementa en cada una. Nosotros solo definiremos que use esquema con sus propiedades generales,

El más básico es el ContentPage, el cual es una pantalla básica donde podremos agregar cualquier tipo de contenido pero sin ningún comportamiento particular del mismo como si sucederá con los demás. En el ejemplo que vimos en el post inicial de Xamarin.Forms estamos usando este tipo de página:

Leer más »

Genymotion, un emulador alternativo y liviano de dispositivos Android

Buenas!!

Cuando trabajamos en el desarrollo de aplicaciones móviles, un punto a tener en cuenta es cómo probarlas, debido a que necesitamos correrlas en un dispositivo con el sistema operativo para el cual estemos haciendo nuestro desarrollo.

En el post anterior vimos una de las alternativas con las que contamos, que son los emuladores disponibles en el Android Virtual Device Manager (o AVD Manager). Esta es la alternativa oficial de Android con la que contamos por defecto. Sin embargo, aunque han ido mejorando en el último tiempo, el rendimiento de los emuladores no es el mejor, necesitando que tengamos un hardware de muy alto nivel o usemos configuraciones de celulares con muy pocos recursos que no son representativos de la realidad que necesitamos emular.

Ante esto contamos con un emulador alternativo, el cual es el que uso a nivel personal: Genymotion. La gran ventaja que nos ofrece es que las imágenes de los dispositivos corren sobre VirtualBox, aprovechando de forma mucho más eficiente los recursos con los que contamos permitiendo probar aplicaciones de forma realmente fluida. Además nos ofrece muchas opciones de personalización sobre la configuración y ejecución del dispositivo, las cuales veremos más adelante. Otro gran punto a favor es que es multiplataforma, por lo cual podremos usarla tanto en Windows, Linux y Mac. Eso si, es gratuita pero siempre para uso personal.

Lo primero que debemos hacer es ir a la página de Genymotion y crearnos un nuevo usuario. Luego de realizado esto accederemos al siguiente link para seleccionar la opción a descargar, pudiendo elegir la versión que cuenta con VirtualBox integrado o la que no lo tiene (esto depende de si ya tenemos VirtualBox instalado en nuestro equipo). Una vez descargado realizamos normalmente la instalación.

Genymotion - Download

Leer más »

Android en Xamarin: Conceptos generales, consideraciones y configuraciones

En el post anterior vimos cómo crear nuestra aplicación con Xamarin.Forms, corriendo en Android una de las aplicaciones target. La idea de este post es explicar cómo configurar el entorno de desarrollo y las consideraciones que tenemos que tener en cuenta sobre la misma.

Para ello hay tres aspectos que debemos tener en cuenta:

  • Dependencias según las versiones de Android que usemos
  • Configuración del proyecto Android en Visual Studio
  • Correr la aplicación en emuladores

Veamos en detalle cada uno de estos puntos:


Android SDK Manager

Esta es una de las partes fundamentales para el desarrollo de aplicaciones Android en general ya que es donde vamos a poder descargar todas las dependencias necesarias para el desarrollo.

Algo que hay que explicar como introducción es que en Android existe un concepto muy importante que son los API Levels, que es lo que habitualmente acostumbramos a mencionar como las diferentes versiones de Android disponibles en general. Actualmente tenemos disponibles los recursos desde la API 7 (Android 2.1) hasta la API 25 (Android 7.1.1). En el Android SDK Manager los distintos recursos se encuentran agrupados por cada API Level disponible, teniendo los siguientes recursos disponibles para descarga:

Leer más »

¿Cómo crear una aplicación Xamarin.Forms?

Buenas!

Continuando con el conjunto de posts asociados a Xamarin vamos a ver cómo crear una aplicación del tipo Xamarin.Forms.

Como hemos mencionado en el post anterior, Xamarin.Forms es la variante de enfoque que nos permite reutilizar código asociado a la lógica de presentación. Con el mismo podremos llegar al extremo (dependiendo del caso es posible de que sea así) de desarrollar solamente una vez el código para múltiples plataformas.

Lo primero que deberemos hacer es crear el tipo de proyecto asociado. Para ello dentro de las opciones para crearlo seleccionamos Cross-Platform > Blank App (Xamarin.Forms portable):

xamarinformsinicial-crearproyecto

Leer más »

Esquemas de reutilización de código en Xamarin

Dentro del desarrollo multiplataforma que plantea Xamarin hay dos puntos claves donde podremos plantear reutilización del código de nuestras aplicaciones: la lógica de negocio y la lógica de presentación. Esto implica que sobre dos de los puntos claves de una aplicación mobile podremos aplicar reutilización de código, reduciendo tiempos de desarrollo y facilitando el mantenimiento.

A su vez estos puntos son complementarios entre sí, pudiendo utilizar ambos de forma simultánea. Lo que si quedará en nuestras manos es la decisión sobre cuando utilizar cada una de estas formas y que funcionalidad tener como compartida entre las distintas plataformas, ya que como en todo desarrollo si planteamos compartir algo que realmente no corresponde nos estaremos complicando sin necesidad.

 

Lógica de negocio:

Este será el punto de reutilización elemental de Xamarin, ya que no hay existe prácticamente escenario donde no sea provechoso reutilizar la lógica de negocio de una aplicación.

A aquellos que ya hayan hecho desarrollos móviles en distintas plataformas, ¿no les ha pasado de que terminan haciendo exactamente la misma lógica de aplicación en distintos lenguajes y con distintos frameworks, resolviendo los mismos problemas pero de distintas formas? Acá está el punto original sobre el cual Xamarin a venido a ayudarnos.

La clave aquí está en desarrollar toda nuestra lógica de aplicación a través de proyectos separados a lo que son las capas de presentación, y desde estás últimas referenciar a dichos proyectos. En los proyectos compartidos donde desarrollemos toda nuestra lógica de aplicación por ejemplo podremos hacer lo siguiente (solo por mencionar algunos usos comunes):

Leer más »