SlideShare ist ein Scribd-Unternehmen logo
1 von 36
Downloaden Sie, um offline zu lesen
Almacenamiento en la nube
desde apps móviles con
Xamarin
@enriqueaguilar
enriqueaguilarvargas.com
Acerca de
@enriqueaguilar
• Miembro de la Universidad De La Salle Bajío como catedrático y Director de la Facultad
de Tecnologías de Información.
• Galardonado con el Microsoft MVP (Most Valuable Professional) 2017 - 2018 - Award
Category Visual Studio and Development Technologies.
• Galardonado con el Xamarin MVP 2015 & 2017, siendo el primero de habla hispana en
recibir la distinción. (xamarin.com/mvp)
• Catedrático de La Salle Open University de Andorra y del Tecnológico Nacional de México
en el área de Desarrollo Móvil.
• Conferencista sobre Xamarin con más 45 presentaciones en México y 25 a nivel
Internacional en diferentes lugares de Colombia, Argentina, Perú, Bolivia, Nicaragua y
Venezuela.
• Profesor de los dos primeros Diplomados Oficiales Online de Microsoft sobre
Tecnologías Xamarin (Xamarin Diplomado y Xamarin Intermediate) y Maratona Xamarin
disponible para Brasil (subtitulado al portugües)
• Master en Tecnologías de Información Empresarial y postgraduado en Teleinformática y
Redes.
• Consultor en Implementaciones Móviles en empresas de Manufactura en Guanajuato y
Jalisco en México.
• Profesor Internacional de Posgrado Invitado por la Universidad Nacional de Ingeniería de
Nicaragua en temas de Seguridad de la Información.
• Ponente del Seminario Lasaliano sobre Tecnología Educativa en Roma Italia.
• Autor y co-autor de artículos de divulgación en el área de Tecnologías de Información.
2015 / 2017 2017 / 2018
El Desarrollo para iOS y Android
está dividido en los siguientes 3
escenarios:
1. Híbridas
2. Aplicaciones de acceso a
API´s nativas de iOS (Proceso
de compilación directo a
código máquina).
3. Aplicaciones de acceso a
API´s nativas de iOS (Proceso
de compilación con
intermediario de
interpretación).
1.- Híbridas
Son aquellas que no compilan directamente en el hardware del dispositivo de
forma directa, sino que utilizan una o varias capas intermedias para hacerlo, por
lo general utilizan HTML5, JS y CSS para realizar el proceso, no siempre pueden
aprovechar el 100% de los recursos del sistema.
No son recomendables para grandes proyectos empresariales
2.- Aplicaciones de acceso a API´s nativas de iOS y Android (Proceso de
compilación con intermediario de interpretación).
Son aquellas que compilan posterior a una interpretación, pueden aprovechar
el 100% de los recursos del sistema, pero mediante una capa intermedia de
software. Por lo general la Interfaz gráfica se tiene que interpretar para generar
una interfaz nativa y posterior se realiza el proceso de compilación, como por
ejemplo C# con Xamarin.Forms, Appcelerator Titanium, etc.
Las aplicaciones Nativas de Interpretación – Compilación permite un desarrollo
más ágil en proyectos que busquen la multiplataforma, sin embargo se
ejecutan ligeramente con mayor retardo que las aplicaciones Nativas de
compilación directa.
3.- Aplicaciones de acceso a API´s nativas de iOS y Android (Proceso de
compilación directo a código máquina).
Son aquellas que compilar directamente aprovechando el 100% de los recursos del
sistema, obteniendo acceso directo a las API´s del dispositivo, utilizando la interfaz
gráfica sin procesos de interpretación y utilizando un Lenguaje de Alto Nivel como
por ejemplo ObjetiveC, Swift y C# con Xamarin.
Independientemente del lenguaje de programación, el rendimiento de las
aplicaciones nativas es el más recomendado en el Desarrollo Móvil para iOS.
Harry Cheung
Ingeniero de Software de Google
Roostify Consulting
Harry Cheung
Ingeniero de Software de Google
Roostify Consulting
Las interfaces gráficas nativas para iOS son de tipo XIB, manejadas
principalmente por un StoryBoard y para Android son AXML.
Para crear una interfaz gráfica nativa para iOS de tipo XIB se puede usar Xcode
o Visual Studio 2017 Community Edition y para Android de tipo AXML se puede
usar Android Studio o Visual Studio 2017 Community Edition. (Nota: se requiere
acceso a una Mac).
La interfaz gráfica XIB puede interactuar con el lenguaje ObjectiveC, Swift o C#
con Xamarin.
1.- Framework Multiplataforma de Compilación Nativa para iOS y Android.
2.- Creada por el equipo elite de Novell, entre ellos Miguel De Icaza y Nat Friedman.
3.- Basado en el Framework de Mono.
iOS WindowsAndroid
Objective-C
Swift
Xcode
C#
Visual Studio
Java
Android Studio
Tecnología Xamarin (C#)
Todo lo que puedes hacer con Objective C, Swift y Java, lo puedes
hacer con C# con Xamarin
iOS C# UI Windows C# UIAndroid C# UI
Shared C# Mobile C# Server
Linux/Mono
CoreCLRAzure
Enfoque de Xamarin
"We think about building technology so
other people can build technology and
make things happen”
Satya Nadella
CEO
Microsoft
Almacenamiento Azure
Ideal para la Administración del
Centro de Datos:
• Gama de soluciones para cada
necesidad.
• La escalabilidad que nunca
sobrepasará.
• Flexible a medida que cambian las
necesidades.
• Costos más bajos y pago solo por lo
que necesita.
Almacenamiento Azure
•Blobs.
Almacena datos de objetos no estructurados, como texto,
documentos, archivo multimedia o un instalador de
aplicación.
• Tablas
Almacena conjuntos de datos estructurados (NoSQL), que
permite el desarrollo rápido de grandes cantidades de datos
y el acceso inmediato a los mismos.
• Queue
Ofrece una solución de mensajería confiable para el
procesamiento de flujos de trabajo y para la
comunicación entre los componentes de los servicios
en la nube.
• Archivos Compartidos
Ofrece almacenamiento compartido para aplicaciones
heredadas que usan el protocolo SMB estándar. Las
máquinas virtuales y los servicios en la nube pueden
compartir datos de archivos entre componentes de
aplicaciones a través de recursos compartidos.
Ejemplo de
Almacenamiento en
Azure desde Xamarin
Preparando el entorno para el uso de Blobs
Preparando el entorno para el uso de Blobs
Asignamos un nombre a la cuenta de Almacenamiento
Resource Manager para aplicaciones nuevas o
clásica para ya implementadas previamente.
Seleccione uso general para unificar la cuenta de
Almacenamiento o almacenamiento de blobs para
verificar nivel de acceso.
Almacenamiento en cinta magnética o en disco de
estado sólido.
Replicación con redundancia geográfica
Suscripción a un mismo permiso, ciclo de vida y directivas.
Preparando el entorno para el uso de Blobs
Preparando el entorno para el uso de Blobs
Preparando el entorno para el uso de Blobs
Código Xamarin– Azure Storage Blob
string archivoLocal;
AVCaptureDevice dispositivodeCaptura;
AVCaptureSession sesiondeCaptura;
AVCaptureDeviceInput entradaDispositivo;
AVCaptureStillImageOutput salidaImagen;
AVCaptureVideoPreviewLayer preview;
string ruta;
byte[] arregloJpg;
async Task autorizacionCamara()
{
var estatus = AVCaptureDevice.GetAuthorizationStatus(AVMediaType.Video);
if (estatus != AVAuthorizationStatus.Authorized)
{
await AVCaptureDevice.RequestAccessForMediaTypeAsync(AVMediaType.Video);
}
}
using System;
using UIKit;
using System.Drawing;
using System.Threading.Tasks;
using AVFoundation;
using Foundation;
using System.IO;
using Microsoft.WindowsAzure.Storage;
using Microsoft.WindowsAzure.Storage.Blob;
Código Xamarin – Azure Storage Blob
btnRespaldar.TouchUpInside += async delegate
{
try
{
CloudStorageAccount cuentaAlmacenamiento = CloudStorageAccount.Parse
("DefaultEndpointsProtocol=https;AccountName=enriqueaguilar;AccountKey=UJ+
q1zwfv7lkb2d/cm8r9ycoc5ZgkNEbuypQYgM001p9E9CWChPtIBfW1A==");
CloudBlobClient clienteBlob = cuentaAlmacenamiento.CreateCloudBlobClient();
CloudBlobContainer contenedor = clienteBlob.GetContainerReference("imagenes");
CloudBlockBlob recursoblob = contenedor.GetBlockBlobReference(archivoLocal);
await recursoblob.UploadFromFileAsync(ruta);
MessageBox("Guardado en", "Azure Storage - Blob");
}
catch (StorageException ex)
{
MessageBox("Error: ", ex.Message);
}
};
Código Xamarin.iOS – Azure Storage Blob
btnRespaldar.TouchUpInside += async delegate
{
try
{
CloudStorageAccount cuentaAlmacenamiento = CloudStorageAccount.Parse
("DefaultEndpointsProtocol=https;AccountName=enriqueaguilar;AccountKey=UJ+
q1zwfv7lkb2d/cm8r9ycoc5ZgkNEbuypQYgM001p9E9CWChPtIBfW1A==");
CloudBlobClient clienteBlob = cuentaAlmacenamiento.CreateCloudBlobClient();
CloudBlobContainer contenedor = clienteBlob.GetContainerReference("imagenes");
CloudBlockBlob recursoblob = contenedor.GetBlockBlobReference(archivoLocal);
await recursoblob.UploadFromFileAsync(ruta);
MessageBox("Guardado en", "Azure Storage - Blob");
}
catch (StorageException ex)
{
MessageBox("Error: ", ex.Message);
}
};
Código Xamarin.iOS – Azure Storage Blob
btnRespaldar.TouchUpInside += async delegate
{
try
{
CloudStorageAccount cuentaAlmacenamiento = CloudStorageAccount.Parse
("DefaultEndpointsProtocol=https;AccountName=enriqueaguilar;AccountKey=UJ+
q1zwfv7lkb2d/cm8r9ycoc5ZgkNEbuypQYgM001p9E9CWChPtIBfW1A==");
CloudBlobClient clienteBlob = cuentaAlmacenamiento.CreateCloudBlobClient();
CloudBlobContainer contenedor = clienteBlob.GetContainerReference("imagenes");
CloudBlockBlob recursoblob = contenedor.GetBlockBlobReference(archivoLocal);
await recursoblob.UploadFromFileAsync(ruta);
MessageBox("Guardado en", "Azure Storage - Blob");
}
catch (StorageException ex)
{
MessageBox("Error: ", ex.Message);
}
};
Código Xamarin – Azure Storage Blob
btnImagen.Click += async delegate{
try {
string carpeta = System.Environment.GetFolderPath
(System.Environment.SpecialFolder.Personal);
string archivoLocal = "Foto.jpg";
string ruta = System.IO.Path.Combine(carpeta, archivoLocal);
CloudStorageAccount cuentaAlmacenamiento = CloudStorageAccount.Parse
("DefaultEndpointsProtocol=https;AccountName=enriqueaguilar;AccountKey=UJ+q1z
wfv7lkb2d/cm8riq9E9CWChPtIBfW1A==");
CloudBlobClient clienteBlob = cuentaAlmacenamiento.CreateCloudBlobClient();
CloudBlobContainer contenedor = clienteBlob.GetContainerReference("imagenes");
CloudBlockBlob recursoBlob = contenedor.GetBlockBlobReference("Foto.jpg");
var stream = File.OpenWrite(ruta);
await recursoBlob.DownloadToStreamAsync(stream);
Android.Net.Uri rutaImagen = Android.Net.Uri.Parse(ruta);
Imagen.SetImageURI(rutaImagen);
}
catch (StorageException ex)
{
Toast.MakeText(this, ex.Message, ToastLength.Short);
}
};
Código Xamarin.Android – Azure Storage Blob
btnImagen.Click += async delegate{
try {
string carpeta = System.Environment.GetFolderPath
(System.Environment.SpecialFolder.Personal);
string archivoLocal = "Foto.jpg";
string ruta = System.IO.Path.Combine(carpeta, archivoLocal);
CloudStorageAccount cuentaAlmacenamiento = CloudStorageAccount.Parse
("DefaultEndpointsProtocol=https;AccountName=enriqueaguilar;AccountKey=UJ+q1z
wfv7lkb2d/cm8riq9E9CWChPtIBfW1A==");
CloudBlobClient clienteBlob = cuentaAlmacenamiento.CreateCloudBlobClient();
CloudBlobContainer contenedor = clienteBlob.GetContainerReference("imagenes");
CloudBlockBlob recursoBlob = contenedor.GetBlockBlobReference("Foto.jpg");
var stream = File.OpenWrite(ruta);
await recursoBlob.DownloadToStreamAsync(stream);
Android.Net.Uri rutaImagen = Android.Net.Uri.Parse(ruta);
Imagen.SetImageURI(rutaImagen);
}
catch (StorageException ex)
{
Toast.MakeText(this, ex.Message, ToastLength.Short);
}
};
Código Xamarin.Android – Azure Storage Blob
btnImagen.Click += async delegate{
try {
string carpeta = System.Environment.GetFolderPath
(System.Environment.SpecialFolder.Personal);
string archivoLocal = "Foto.jpg";
string ruta = System.IO.Path.Combine(carpeta, archivoLocal);
CloudStorageAccount cuentaAlmacenamiento = CloudStorageAccount.Parse
("DefaultEndpointsProtocol=https;AccountName=enriqueaguilar;AccountKey=UJ+q1z
wfv7lkb2d/cm8riq9E9CWChPtIBfW1A==");
CloudBlobClient clienteBlob = cuentaAlmacenamiento.CreateCloudBlobClient();
CloudBlobContainer contenedor = clienteBlob.GetContainerReference("imagenes");
CloudBlockBlob recursoBlob = contenedor.GetBlockBlobReference("Foto.jpg");
var stream = File.OpenWrite(ruta);
await recursoBlob.DownloadToStreamAsync(stream);
Android.Net.Uri rutaImagen = Android.Net.Uri.Parse(ruta);
Imagen.SetImageURI(rutaImagen);
}
catch (StorageException ex)
{
Toast.MakeText(this, ex.Message, ToastLength.Short);
}
};
DEMO
Por donde empezar?
• channel9.msdn.com
• azure.microsoft.com
• enriqueaguilarvargas.com
@enriqueaguilar
enriqueaguilarvargas.com
https://github.com/enriqueaguilarvargas

Weitere ähnliche Inhalte

Was ist angesagt?

Tecnologia Microsoft .Net - [Asp .Net - Parte 1]
Tecnologia Microsoft .Net - [Asp .Net - Parte 1]Tecnologia Microsoft .Net - [Asp .Net - Parte 1]
Tecnologia Microsoft .Net - [Asp .Net - Parte 1]Antonio Torres
 
Introducción a la Plataforma .NET
Introducción a la Plataforma .NETIntroducción a la Plataforma .NET
Introducción a la Plataforma .NETMelissa Santacruz
 
Cuadro comparativo de lenguajes
Cuadro comparativo de lenguajesCuadro comparativo de lenguajes
Cuadro comparativo de lenguajesJimena Rendon
 
Tecnologia microsoft .net
Tecnologia microsoft .netTecnologia microsoft .net
Tecnologia microsoft .netlilymejia1979
 
Tecnologia Microsoft
Tecnologia  MicrosoftTecnologia  Microsoft
Tecnologia Microsoftbrobelo
 
Tecnologia web
Tecnologia webTecnologia web
Tecnologia webfanyto
 
Mi lenguaje de Programacion de Preferencia
Mi lenguaje de Programacion de PreferenciaMi lenguaje de Programacion de Preferencia
Mi lenguaje de Programacion de PreferenciaGuy43cd
 
Automatización en el desarrollo de software a través de lenguajes específicos...
Automatización en el desarrollo de software a través de lenguajes específicos...Automatización en el desarrollo de software a través de lenguajes específicos...
Automatización en el desarrollo de software a través de lenguajes específicos...Omar S. Gomez
 
Entendiendo el .NET Framework
Entendiendo el .NET FrameworkEntendiendo el .NET Framework
Entendiendo el .NET FrameworkSorey García
 
Conoce lo nuevo en RAD Studio, C++ Builder y Delphi 10.2.2
Conoce lo nuevo en RAD Studio, C++ Builder y Delphi 10.2.2Conoce lo nuevo en RAD Studio, C++ Builder y Delphi 10.2.2
Conoce lo nuevo en RAD Studio, C++ Builder y Delphi 10.2.2Fernando Rizzato
 
Herramientas de desarrollo para dispositivos móviles
Herramientas de desarrollo para dispositivos móvilesHerramientas de desarrollo para dispositivos móviles
Herramientas de desarrollo para dispositivos móvilesFernand Bernowly
 
Introduccion a la plataforma .NET
Introduccion a la plataforma .NETIntroduccion a la plataforma .NET
Introduccion a la plataforma .NETjnarchie
 

Was ist angesagt? (14)

Net Framework
Net FrameworkNet Framework
Net Framework
 
Tecnologia Microsoft .Net - [Asp .Net - Parte 1]
Tecnologia Microsoft .Net - [Asp .Net - Parte 1]Tecnologia Microsoft .Net - [Asp .Net - Parte 1]
Tecnologia Microsoft .Net - [Asp .Net - Parte 1]
 
Introducción a la Plataforma .NET
Introducción a la Plataforma .NETIntroducción a la Plataforma .NET
Introducción a la Plataforma .NET
 
Cuadro comparativo de lenguajes
Cuadro comparativo de lenguajesCuadro comparativo de lenguajes
Cuadro comparativo de lenguajes
 
Tecnologia microsoft .net
Tecnologia microsoft .netTecnologia microsoft .net
Tecnologia microsoft .net
 
Tecnologia Microsoft
Tecnologia  MicrosoftTecnologia  Microsoft
Tecnologia Microsoft
 
Tecnologia web
Tecnologia webTecnologia web
Tecnologia web
 
Mi lenguaje de Programacion de Preferencia
Mi lenguaje de Programacion de PreferenciaMi lenguaje de Programacion de Preferencia
Mi lenguaje de Programacion de Preferencia
 
Automatización en el desarrollo de software a través de lenguajes específicos...
Automatización en el desarrollo de software a través de lenguajes específicos...Automatización en el desarrollo de software a través de lenguajes específicos...
Automatización en el desarrollo de software a través de lenguajes específicos...
 
Entendiendo el .NET Framework
Entendiendo el .NET FrameworkEntendiendo el .NET Framework
Entendiendo el .NET Framework
 
1 Plataforma .Net
1 Plataforma .Net1 Plataforma .Net
1 Plataforma .Net
 
Conoce lo nuevo en RAD Studio, C++ Builder y Delphi 10.2.2
Conoce lo nuevo en RAD Studio, C++ Builder y Delphi 10.2.2Conoce lo nuevo en RAD Studio, C++ Builder y Delphi 10.2.2
Conoce lo nuevo en RAD Studio, C++ Builder y Delphi 10.2.2
 
Herramientas de desarrollo para dispositivos móviles
Herramientas de desarrollo para dispositivos móvilesHerramientas de desarrollo para dispositivos móviles
Herramientas de desarrollo para dispositivos móviles
 
Introduccion a la plataforma .NET
Introduccion a la plataforma .NETIntroduccion a la plataforma .NET
Introduccion a la plataforma .NET
 

Ähnlich wie Almacenamiento nube Xamarin

Azure Storage, Cognitive Services y Xamarin - Tepic Nayarit
Azure Storage, Cognitive Services y Xamarin - Tepic NayaritAzure Storage, Cognitive Services y Xamarin - Tepic Nayarit
Azure Storage, Cognitive Services y Xamarin - Tepic Nayaritenriqueaguilar
 
Cognitive Services y Xamarin - Tec Purísima
Cognitive Services y Xamarin - Tec PurísimaCognitive Services y Xamarin - Tec Purísima
Cognitive Services y Xamarin - Tec Purísimaenriqueaguilar
 
TechDay 2015 - C# y XAML: El poder de construir aplicaciones en todas las pla...
TechDay 2015 - C# y XAML: El poder de construir aplicaciones en todas las pla...TechDay 2015 - C# y XAML: El poder de construir aplicaciones en todas las pla...
TechDay 2015 - C# y XAML: El poder de construir aplicaciones en todas las pla...Sorey García
 
Back2Learn MSFT UCuenca - Desarrollo de apps móviles multiplataforma con Xam...
Back2Learn MSFT UCuenca - Desarrollo de apps móviles multiplataforma con Xam...Back2Learn MSFT UCuenca - Desarrollo de apps móviles multiplataforma con Xam...
Back2Learn MSFT UCuenca - Desarrollo de apps móviles multiplataforma con Xam...Luis Beltran
 
6 Lenguajes para dispositivos móviles
6 Lenguajes para dispositivos móviles 6 Lenguajes para dispositivos móviles
6 Lenguajes para dispositivos móviles RAUL Velez
 
Llevando tu startup a las tres principales plataformas móviles
Llevando tu startup a las tres principales plataformas móvilesLlevando tu startup a las tres principales plataformas móviles
Llevando tu startup a las tres principales plataformas móvilesJosué Yeray Julián Ferreiro
 
Software en la actualidad
Software en la actualidadSoftware en la actualidad
Software en la actualidadRaelyx Cordero
 
COECYS - Introducción al desarrollo de apps multiplataforma con Xamarin.pptx
COECYS - Introducción al desarrollo de apps multiplataforma con Xamarin.pptxCOECYS - Introducción al desarrollo de apps multiplataforma con Xamarin.pptx
COECYS - Introducción al desarrollo de apps multiplataforma con Xamarin.pptxLuis Beltran
 
Cognitive Services y Xamarin - Tec Tinaguistenco
Cognitive Services y Xamarin - Tec TinaguistencoCognitive Services y Xamarin - Tec Tinaguistenco
Cognitive Services y Xamarin - Tec Tinaguistencoenriqueaguilar
 
DotNet2018: Xamarin.Forms Everywhere!
DotNet2018: Xamarin.Forms Everywhere!DotNet2018: Xamarin.Forms Everywhere!
DotNet2018: Xamarin.Forms Everywhere!Javier Suárez Ruiz
 
OpenSouthCode 2018: Taller Xamarin
OpenSouthCode 2018: Taller XamarinOpenSouthCode 2018: Taller Xamarin
OpenSouthCode 2018: Taller XamarinJavier Suárez Ruiz
 
Lenguajes de programacion rivas maldonado
Lenguajes de programacion  rivas maldonadoLenguajes de programacion  rivas maldonado
Lenguajes de programacion rivas maldonadoRAUL Velez
 
Evento Bolivia - Fundamentos de Xamarin - Desarrollo de apps moviles multipla...
Evento Bolivia - Fundamentos de Xamarin - Desarrollo de apps moviles multipla...Evento Bolivia - Fundamentos de Xamarin - Desarrollo de apps moviles multipla...
Evento Bolivia - Fundamentos de Xamarin - Desarrollo de apps moviles multipla...Luis Beltran
 
Introducción a Xamarin Forms con XAML
Introducción a Xamarin Forms con XAMLIntroducción a Xamarin Forms con XAML
Introducción a Xamarin Forms con XAMLSorey García
 
Dev Days 1 - Introducción a Xamarin
Dev Days 1 - Introducción a XamarinDev Days 1 - Introducción a Xamarin
Dev Days 1 - Introducción a XamarinSergio Gasca García
 
Desarrollo de Apps con la herramienta Phonegap
Desarrollo de Apps con la herramienta PhonegapDesarrollo de Apps con la herramienta Phonegap
Desarrollo de Apps con la herramienta PhonegapCongresoWeb
 
NetRaf 2017 - La plataforma .NET en el 2017
NetRaf 2017 - La plataforma .NET en el 2017NetRaf 2017 - La plataforma .NET en el 2017
NetRaf 2017 - La plataforma .NET en el 2017Diego Bersano
 

Ähnlich wie Almacenamiento nube Xamarin (20)

Azure Storage, Cognitive Services y Xamarin - Tepic Nayarit
Azure Storage, Cognitive Services y Xamarin - Tepic NayaritAzure Storage, Cognitive Services y Xamarin - Tepic Nayarit
Azure Storage, Cognitive Services y Xamarin - Tepic Nayarit
 
Cognitive Services y Xamarin - Tec Purísima
Cognitive Services y Xamarin - Tec PurísimaCognitive Services y Xamarin - Tec Purísima
Cognitive Services y Xamarin - Tec Purísima
 
Introduction to xamarin
Introduction to xamarinIntroduction to xamarin
Introduction to xamarin
 
TechDay 2015 - C# y XAML: El poder de construir aplicaciones en todas las pla...
TechDay 2015 - C# y XAML: El poder de construir aplicaciones en todas las pla...TechDay 2015 - C# y XAML: El poder de construir aplicaciones en todas las pla...
TechDay 2015 - C# y XAML: El poder de construir aplicaciones en todas las pla...
 
Back2Learn MSFT UCuenca - Desarrollo de apps móviles multiplataforma con Xam...
Back2Learn MSFT UCuenca - Desarrollo de apps móviles multiplataforma con Xam...Back2Learn MSFT UCuenca - Desarrollo de apps móviles multiplataforma con Xam...
Back2Learn MSFT UCuenca - Desarrollo de apps móviles multiplataforma con Xam...
 
6 Lenguajes para dispositivos móviles
6 Lenguajes para dispositivos móviles 6 Lenguajes para dispositivos móviles
6 Lenguajes para dispositivos móviles
 
Llevando tu startup a las tres principales plataformas móviles
Llevando tu startup a las tres principales plataformas móvilesLlevando tu startup a las tres principales plataformas móviles
Llevando tu startup a las tres principales plataformas móviles
 
Software en la actualidad
Software en la actualidadSoftware en la actualidad
Software en la actualidad
 
COECYS - Introducción al desarrollo de apps multiplataforma con Xamarin.pptx
COECYS - Introducción al desarrollo de apps multiplataforma con Xamarin.pptxCOECYS - Introducción al desarrollo de apps multiplataforma con Xamarin.pptx
COECYS - Introducción al desarrollo de apps multiplataforma con Xamarin.pptx
 
Cognitive Services y Xamarin - Tec Tinaguistenco
Cognitive Services y Xamarin - Tec TinaguistencoCognitive Services y Xamarin - Tec Tinaguistenco
Cognitive Services y Xamarin - Tec Tinaguistenco
 
DotNet2018: Xamarin.Forms Everywhere!
DotNet2018: Xamarin.Forms Everywhere!DotNet2018: Xamarin.Forms Everywhere!
DotNet2018: Xamarin.Forms Everywhere!
 
OpenSouthCode 2018: Taller Xamarin
OpenSouthCode 2018: Taller XamarinOpenSouthCode 2018: Taller Xamarin
OpenSouthCode 2018: Taller Xamarin
 
Lenguajes de programacion rivas maldonado
Lenguajes de programacion  rivas maldonadoLenguajes de programacion  rivas maldonado
Lenguajes de programacion rivas maldonado
 
Evento Bolivia - Fundamentos de Xamarin - Desarrollo de apps moviles multipla...
Evento Bolivia - Fundamentos de Xamarin - Desarrollo de apps moviles multipla...Evento Bolivia - Fundamentos de Xamarin - Desarrollo de apps moviles multipla...
Evento Bolivia - Fundamentos de Xamarin - Desarrollo de apps moviles multipla...
 
Introducción a Xamarin Forms con XAML
Introducción a Xamarin Forms con XAMLIntroducción a Xamarin Forms con XAML
Introducción a Xamarin Forms con XAML
 
Dev Days 1 - Introducción a Xamarin
Dev Days 1 - Introducción a XamarinDev Days 1 - Introducción a Xamarin
Dev Days 1 - Introducción a Xamarin
 
Desarrollo de Apps con la herramienta Phonegap
Desarrollo de Apps con la herramienta PhonegapDesarrollo de Apps con la herramienta Phonegap
Desarrollo de Apps con la herramienta Phonegap
 
Taller Xamarin Monkey Conf 2018
Taller Xamarin Monkey Conf 2018Taller Xamarin Monkey Conf 2018
Taller Xamarin Monkey Conf 2018
 
introducción a xamarin
  introducción a xamarin  introducción a xamarin
introducción a xamarin
 
NetRaf 2017 - La plataforma .NET en el 2017
NetRaf 2017 - La plataforma .NET en el 2017NetRaf 2017 - La plataforma .NET en el 2017
NetRaf 2017 - La plataforma .NET en el 2017
 

Mehr von enriqueaguilar

Microsoft Virtual Academy - Live Session - Xamarin con Azure Storage
Microsoft Virtual Academy - Live Session - Xamarin con Azure StorageMicrosoft Virtual Academy - Live Session - Xamarin con Azure Storage
Microsoft Virtual Academy - Live Session - Xamarin con Azure Storageenriqueaguilar
 
Microsoft Virtual Academy - Xamarin iOS y Xamarin Android con Azure Storage
Microsoft Virtual Academy - Xamarin iOS y Xamarin Android con Azure StorageMicrosoft Virtual Academy - Xamarin iOS y Xamarin Android con Azure Storage
Microsoft Virtual Academy - Xamarin iOS y Xamarin Android con Azure Storageenriqueaguilar
 
Microsoft Virtual Academy - Xamarin iOS
Microsoft Virtual Academy - Xamarin iOSMicrosoft Virtual Academy - Xamarin iOS
Microsoft Virtual Academy - Xamarin iOSenriqueaguilar
 
Xamarin Diplomado Intermedio
Xamarin Diplomado IntermedioXamarin Diplomado Intermedio
Xamarin Diplomado Intermedioenriqueaguilar
 
Azure Storage, Cognitive Services y Xamarin - Universidad Tecnológica de León
Azure Storage, Cognitive Services y Xamarin - Universidad Tecnológica de LeónAzure Storage, Cognitive Services y Xamarin - Universidad Tecnológica de León
Azure Storage, Cognitive Services y Xamarin - Universidad Tecnológica de Leónenriqueaguilar
 
Presentación en el Mobile Day
Presentación en el Mobile DayPresentación en el Mobile Day
Presentación en el Mobile Dayenriqueaguilar
 

Mehr von enriqueaguilar (6)

Microsoft Virtual Academy - Live Session - Xamarin con Azure Storage
Microsoft Virtual Academy - Live Session - Xamarin con Azure StorageMicrosoft Virtual Academy - Live Session - Xamarin con Azure Storage
Microsoft Virtual Academy - Live Session - Xamarin con Azure Storage
 
Microsoft Virtual Academy - Xamarin iOS y Xamarin Android con Azure Storage
Microsoft Virtual Academy - Xamarin iOS y Xamarin Android con Azure StorageMicrosoft Virtual Academy - Xamarin iOS y Xamarin Android con Azure Storage
Microsoft Virtual Academy - Xamarin iOS y Xamarin Android con Azure Storage
 
Microsoft Virtual Academy - Xamarin iOS
Microsoft Virtual Academy - Xamarin iOSMicrosoft Virtual Academy - Xamarin iOS
Microsoft Virtual Academy - Xamarin iOS
 
Xamarin Diplomado Intermedio
Xamarin Diplomado IntermedioXamarin Diplomado Intermedio
Xamarin Diplomado Intermedio
 
Azure Storage, Cognitive Services y Xamarin - Universidad Tecnológica de León
Azure Storage, Cognitive Services y Xamarin - Universidad Tecnológica de LeónAzure Storage, Cognitive Services y Xamarin - Universidad Tecnológica de León
Azure Storage, Cognitive Services y Xamarin - Universidad Tecnológica de León
 
Presentación en el Mobile Day
Presentación en el Mobile DayPresentación en el Mobile Day
Presentación en el Mobile Day
 

Almacenamiento nube Xamarin

  • 1. Almacenamiento en la nube desde apps móviles con Xamarin @enriqueaguilar enriqueaguilarvargas.com
  • 2. Acerca de @enriqueaguilar • Miembro de la Universidad De La Salle Bajío como catedrático y Director de la Facultad de Tecnologías de Información. • Galardonado con el Microsoft MVP (Most Valuable Professional) 2017 - 2018 - Award Category Visual Studio and Development Technologies. • Galardonado con el Xamarin MVP 2015 & 2017, siendo el primero de habla hispana en recibir la distinción. (xamarin.com/mvp) • Catedrático de La Salle Open University de Andorra y del Tecnológico Nacional de México en el área de Desarrollo Móvil. • Conferencista sobre Xamarin con más 45 presentaciones en México y 25 a nivel Internacional en diferentes lugares de Colombia, Argentina, Perú, Bolivia, Nicaragua y Venezuela. • Profesor de los dos primeros Diplomados Oficiales Online de Microsoft sobre Tecnologías Xamarin (Xamarin Diplomado y Xamarin Intermediate) y Maratona Xamarin disponible para Brasil (subtitulado al portugües) • Master en Tecnologías de Información Empresarial y postgraduado en Teleinformática y Redes. • Consultor en Implementaciones Móviles en empresas de Manufactura en Guanajuato y Jalisco en México. • Profesor Internacional de Posgrado Invitado por la Universidad Nacional de Ingeniería de Nicaragua en temas de Seguridad de la Información. • Ponente del Seminario Lasaliano sobre Tecnología Educativa en Roma Italia. • Autor y co-autor de artículos de divulgación en el área de Tecnologías de Información. 2015 / 2017 2017 / 2018
  • 3.
  • 4.
  • 5. El Desarrollo para iOS y Android está dividido en los siguientes 3 escenarios: 1. Híbridas 2. Aplicaciones de acceso a API´s nativas de iOS (Proceso de compilación directo a código máquina). 3. Aplicaciones de acceso a API´s nativas de iOS (Proceso de compilación con intermediario de interpretación).
  • 6. 1.- Híbridas Son aquellas que no compilan directamente en el hardware del dispositivo de forma directa, sino que utilizan una o varias capas intermedias para hacerlo, por lo general utilizan HTML5, JS y CSS para realizar el proceso, no siempre pueden aprovechar el 100% de los recursos del sistema. No son recomendables para grandes proyectos empresariales
  • 7. 2.- Aplicaciones de acceso a API´s nativas de iOS y Android (Proceso de compilación con intermediario de interpretación). Son aquellas que compilan posterior a una interpretación, pueden aprovechar el 100% de los recursos del sistema, pero mediante una capa intermedia de software. Por lo general la Interfaz gráfica se tiene que interpretar para generar una interfaz nativa y posterior se realiza el proceso de compilación, como por ejemplo C# con Xamarin.Forms, Appcelerator Titanium, etc. Las aplicaciones Nativas de Interpretación – Compilación permite un desarrollo más ágil en proyectos que busquen la multiplataforma, sin embargo se ejecutan ligeramente con mayor retardo que las aplicaciones Nativas de compilación directa.
  • 8. 3.- Aplicaciones de acceso a API´s nativas de iOS y Android (Proceso de compilación directo a código máquina). Son aquellas que compilar directamente aprovechando el 100% de los recursos del sistema, obteniendo acceso directo a las API´s del dispositivo, utilizando la interfaz gráfica sin procesos de interpretación y utilizando un Lenguaje de Alto Nivel como por ejemplo ObjetiveC, Swift y C# con Xamarin. Independientemente del lenguaje de programación, el rendimiento de las aplicaciones nativas es el más recomendado en el Desarrollo Móvil para iOS.
  • 9. Harry Cheung Ingeniero de Software de Google Roostify Consulting
  • 10. Harry Cheung Ingeniero de Software de Google Roostify Consulting
  • 11. Las interfaces gráficas nativas para iOS son de tipo XIB, manejadas principalmente por un StoryBoard y para Android son AXML. Para crear una interfaz gráfica nativa para iOS de tipo XIB se puede usar Xcode o Visual Studio 2017 Community Edition y para Android de tipo AXML se puede usar Android Studio o Visual Studio 2017 Community Edition. (Nota: se requiere acceso a una Mac). La interfaz gráfica XIB puede interactuar con el lenguaje ObjectiveC, Swift o C# con Xamarin.
  • 12.
  • 13.
  • 14. 1.- Framework Multiplataforma de Compilación Nativa para iOS y Android. 2.- Creada por el equipo elite de Novell, entre ellos Miguel De Icaza y Nat Friedman. 3.- Basado en el Framework de Mono.
  • 15. iOS WindowsAndroid Objective-C Swift Xcode C# Visual Studio Java Android Studio Tecnología Xamarin (C#) Todo lo que puedes hacer con Objective C, Swift y Java, lo puedes hacer con C# con Xamarin
  • 16. iOS C# UI Windows C# UIAndroid C# UI Shared C# Mobile C# Server Linux/Mono CoreCLRAzure Enfoque de Xamarin
  • 17. "We think about building technology so other people can build technology and make things happen” Satya Nadella CEO Microsoft
  • 18. Almacenamiento Azure Ideal para la Administración del Centro de Datos: • Gama de soluciones para cada necesidad. • La escalabilidad que nunca sobrepasará. • Flexible a medida que cambian las necesidades. • Costos más bajos y pago solo por lo que necesita.
  • 19. Almacenamiento Azure •Blobs. Almacena datos de objetos no estructurados, como texto, documentos, archivo multimedia o un instalador de aplicación. • Tablas Almacena conjuntos de datos estructurados (NoSQL), que permite el desarrollo rápido de grandes cantidades de datos y el acceso inmediato a los mismos. • Queue Ofrece una solución de mensajería confiable para el procesamiento de flujos de trabajo y para la comunicación entre los componentes de los servicios en la nube. • Archivos Compartidos Ofrece almacenamiento compartido para aplicaciones heredadas que usan el protocolo SMB estándar. Las máquinas virtuales y los servicios en la nube pueden compartir datos de archivos entre componentes de aplicaciones a través de recursos compartidos.
  • 21. Preparando el entorno para el uso de Blobs
  • 22. Preparando el entorno para el uso de Blobs Asignamos un nombre a la cuenta de Almacenamiento Resource Manager para aplicaciones nuevas o clásica para ya implementadas previamente. Seleccione uso general para unificar la cuenta de Almacenamiento o almacenamiento de blobs para verificar nivel de acceso. Almacenamiento en cinta magnética o en disco de estado sólido. Replicación con redundancia geográfica Suscripción a un mismo permiso, ciclo de vida y directivas.
  • 23. Preparando el entorno para el uso de Blobs
  • 24. Preparando el entorno para el uso de Blobs
  • 25. Preparando el entorno para el uso de Blobs
  • 26. Código Xamarin– Azure Storage Blob string archivoLocal; AVCaptureDevice dispositivodeCaptura; AVCaptureSession sesiondeCaptura; AVCaptureDeviceInput entradaDispositivo; AVCaptureStillImageOutput salidaImagen; AVCaptureVideoPreviewLayer preview; string ruta; byte[] arregloJpg; async Task autorizacionCamara() { var estatus = AVCaptureDevice.GetAuthorizationStatus(AVMediaType.Video); if (estatus != AVAuthorizationStatus.Authorized) { await AVCaptureDevice.RequestAccessForMediaTypeAsync(AVMediaType.Video); } } using System; using UIKit; using System.Drawing; using System.Threading.Tasks; using AVFoundation; using Foundation; using System.IO; using Microsoft.WindowsAzure.Storage; using Microsoft.WindowsAzure.Storage.Blob;
  • 27. Código Xamarin – Azure Storage Blob btnRespaldar.TouchUpInside += async delegate { try { CloudStorageAccount cuentaAlmacenamiento = CloudStorageAccount.Parse ("DefaultEndpointsProtocol=https;AccountName=enriqueaguilar;AccountKey=UJ+ q1zwfv7lkb2d/cm8r9ycoc5ZgkNEbuypQYgM001p9E9CWChPtIBfW1A=="); CloudBlobClient clienteBlob = cuentaAlmacenamiento.CreateCloudBlobClient(); CloudBlobContainer contenedor = clienteBlob.GetContainerReference("imagenes"); CloudBlockBlob recursoblob = contenedor.GetBlockBlobReference(archivoLocal); await recursoblob.UploadFromFileAsync(ruta); MessageBox("Guardado en", "Azure Storage - Blob"); } catch (StorageException ex) { MessageBox("Error: ", ex.Message); } };
  • 28. Código Xamarin.iOS – Azure Storage Blob btnRespaldar.TouchUpInside += async delegate { try { CloudStorageAccount cuentaAlmacenamiento = CloudStorageAccount.Parse ("DefaultEndpointsProtocol=https;AccountName=enriqueaguilar;AccountKey=UJ+ q1zwfv7lkb2d/cm8r9ycoc5ZgkNEbuypQYgM001p9E9CWChPtIBfW1A=="); CloudBlobClient clienteBlob = cuentaAlmacenamiento.CreateCloudBlobClient(); CloudBlobContainer contenedor = clienteBlob.GetContainerReference("imagenes"); CloudBlockBlob recursoblob = contenedor.GetBlockBlobReference(archivoLocal); await recursoblob.UploadFromFileAsync(ruta); MessageBox("Guardado en", "Azure Storage - Blob"); } catch (StorageException ex) { MessageBox("Error: ", ex.Message); } };
  • 29. Código Xamarin.iOS – Azure Storage Blob btnRespaldar.TouchUpInside += async delegate { try { CloudStorageAccount cuentaAlmacenamiento = CloudStorageAccount.Parse ("DefaultEndpointsProtocol=https;AccountName=enriqueaguilar;AccountKey=UJ+ q1zwfv7lkb2d/cm8r9ycoc5ZgkNEbuypQYgM001p9E9CWChPtIBfW1A=="); CloudBlobClient clienteBlob = cuentaAlmacenamiento.CreateCloudBlobClient(); CloudBlobContainer contenedor = clienteBlob.GetContainerReference("imagenes"); CloudBlockBlob recursoblob = contenedor.GetBlockBlobReference(archivoLocal); await recursoblob.UploadFromFileAsync(ruta); MessageBox("Guardado en", "Azure Storage - Blob"); } catch (StorageException ex) { MessageBox("Error: ", ex.Message); } };
  • 30. Código Xamarin – Azure Storage Blob btnImagen.Click += async delegate{ try { string carpeta = System.Environment.GetFolderPath (System.Environment.SpecialFolder.Personal); string archivoLocal = "Foto.jpg"; string ruta = System.IO.Path.Combine(carpeta, archivoLocal); CloudStorageAccount cuentaAlmacenamiento = CloudStorageAccount.Parse ("DefaultEndpointsProtocol=https;AccountName=enriqueaguilar;AccountKey=UJ+q1z wfv7lkb2d/cm8riq9E9CWChPtIBfW1A=="); CloudBlobClient clienteBlob = cuentaAlmacenamiento.CreateCloudBlobClient(); CloudBlobContainer contenedor = clienteBlob.GetContainerReference("imagenes"); CloudBlockBlob recursoBlob = contenedor.GetBlockBlobReference("Foto.jpg"); var stream = File.OpenWrite(ruta); await recursoBlob.DownloadToStreamAsync(stream); Android.Net.Uri rutaImagen = Android.Net.Uri.Parse(ruta); Imagen.SetImageURI(rutaImagen); } catch (StorageException ex) { Toast.MakeText(this, ex.Message, ToastLength.Short); } };
  • 31. Código Xamarin.Android – Azure Storage Blob btnImagen.Click += async delegate{ try { string carpeta = System.Environment.GetFolderPath (System.Environment.SpecialFolder.Personal); string archivoLocal = "Foto.jpg"; string ruta = System.IO.Path.Combine(carpeta, archivoLocal); CloudStorageAccount cuentaAlmacenamiento = CloudStorageAccount.Parse ("DefaultEndpointsProtocol=https;AccountName=enriqueaguilar;AccountKey=UJ+q1z wfv7lkb2d/cm8riq9E9CWChPtIBfW1A=="); CloudBlobClient clienteBlob = cuentaAlmacenamiento.CreateCloudBlobClient(); CloudBlobContainer contenedor = clienteBlob.GetContainerReference("imagenes"); CloudBlockBlob recursoBlob = contenedor.GetBlockBlobReference("Foto.jpg"); var stream = File.OpenWrite(ruta); await recursoBlob.DownloadToStreamAsync(stream); Android.Net.Uri rutaImagen = Android.Net.Uri.Parse(ruta); Imagen.SetImageURI(rutaImagen); } catch (StorageException ex) { Toast.MakeText(this, ex.Message, ToastLength.Short); } };
  • 32. Código Xamarin.Android – Azure Storage Blob btnImagen.Click += async delegate{ try { string carpeta = System.Environment.GetFolderPath (System.Environment.SpecialFolder.Personal); string archivoLocal = "Foto.jpg"; string ruta = System.IO.Path.Combine(carpeta, archivoLocal); CloudStorageAccount cuentaAlmacenamiento = CloudStorageAccount.Parse ("DefaultEndpointsProtocol=https;AccountName=enriqueaguilar;AccountKey=UJ+q1z wfv7lkb2d/cm8riq9E9CWChPtIBfW1A=="); CloudBlobClient clienteBlob = cuentaAlmacenamiento.CreateCloudBlobClient(); CloudBlobContainer contenedor = clienteBlob.GetContainerReference("imagenes"); CloudBlockBlob recursoBlob = contenedor.GetBlockBlobReference("Foto.jpg"); var stream = File.OpenWrite(ruta); await recursoBlob.DownloadToStreamAsync(stream); Android.Net.Uri rutaImagen = Android.Net.Uri.Parse(ruta); Imagen.SetImageURI(rutaImagen); } catch (StorageException ex) { Toast.MakeText(this, ex.Message, ToastLength.Short); } };
  • 33. DEMO
  • 34.
  • 35. Por donde empezar? • channel9.msdn.com • azure.microsoft.com • enriqueaguilarvargas.com