Inicio rápido: Biblioteca cliente de Azure Blob Storage v12 con Xamarin

Introducción a la biblioteca cliente de Azure Blob Storage v12 con Xamarin. Azure Blob Storage es la solución de almacenamiento de objetos de Microsoft para la nube. Siga los pasos para instalar el paquete y probar el código de ejemplo para realizar tareas básicas. Blob Storage está optimizado para el almacenamiento de cantidades masivas de datos no estructurados.

La biblioteca cliente de Azure Blob Storage v12 con Xamarin se puede usar para:

  • Crear un contenedor
  • Cargar un blob en Azure Storage
  • Enumerar todos los blobs de un contenedor
  • Descargar el blob en un dispositivo
  • Eliminación de un contenedor

Vínculos de referencia:

Requisitos previos

Instalación

En esta sección se explica cómo preparar un proyecto para usarlo con la biblioteca cliente de Azure Blob Storage v12 con Xamarin.

Creación del proyecto

  1. Abra Visual Studio y cree una aplicación de Forms en blanco.
  2. Asígnele un nombre: BlobQuickstartV12

Instalar el paquete

  1. Haga clic con el botón derecho en la solución en el panel del Explorador de soluciones y seleccione Administrar paquetes NuGet para la solución.
  2. Busque Azure.Storage.Blobs e instale la versión estable más reciente en todos los proyectos de su solución.

Instalación del marco de la aplicación

En el directorio BlobQuickstartV12:

  1. Abra el archivo MainPage.xaml en el editor.
  2. Quite todo lo que haya entre los elementos <ContentPage></ContentPage> y reemplácelo por lo siguiente:
<StackLayout HorizontalOptions="Center" VerticalOptions="Center">

    <Button x:Name="uploadButton" Text="Upload Blob" Clicked="Upload_Clicked"  IsEnabled="False"/>
    <Button x:Name="listButton" Text="List Blobs" Clicked="List_Clicked"  IsEnabled="False" />
    <Button x:Name="downloadButton" Text="Download Blob" Clicked="Download_Clicked"  IsEnabled="False" />
    <Button x:Name="deleteButton" Text="Delete Container" Clicked="Delete_Clicked" IsEnabled="False" />

    <Label Text="" x:Name="resultsLabel" HorizontalTextAlignment="Center" Margin="0,20,0,0" TextColor="Red" />

</StackLayout>

Copia de las credenciales desde Azure Portal

Cuando la aplicación de ejemplo realiza una solicitud a Azure Storage, debe estar autorizada. Para autorizar una solicitud, agregue a la aplicación las credenciales de la cuenta de almacenamiento en forma de cadena de conexión. Para ver las credenciales de la cuenta de almacenamiento, siga estos pasos:

  1. Inicie sesión en Azure Portal.

  2. Busque su cuenta de almacenamiento.

  3. En la sección Configuración de la información general de la cuenta de almacenamiento, seleccione Claves de acceso. Aquí puede ver las claves de acceso de la cuenta, así como la cadena de conexión completa de cada clave.

  4. Busque el valor de Cadena de conexión en key1 y seleccione el botón Copiar para copiar la cadena de conexión. En el paso siguiente, agregará el valor de la cadena de conexión a una variable de entorno.

    Captura de pantalla que muestra cómo copiar una cadena de conexión desde Azure Portal

Configuración de la cadena de conexión de almacenamiento.

Una vez que haya copiado la cadena de conexión, establézcala en una variable de nivel de clase en el archivo MainPage.xaml.cs. Abra MainPaage.xaml.cs y busque la variable storageConnectionString. Reemplace <yourconnectionstring> por la cadena de conexión real.

Este es el código:

string storageConnectionString = "<yourconnectionstring>";

Modelo de objetos

Azure Blob Storage está optimizado para el almacenamiento de cantidades masivas de datos no estructurados. Los datos no estructurados son datos que no cumplen un modelo de datos o definición concreta, como texto o datos binarios. Blob Storage ofrece tres tipos de recursos:

  • La cuenta de almacenamiento
  • Un contenedor en la cuenta de almacenamiento
  • Un blob en el contenedor

En el siguiente diagrama se muestra la relación entre estos recursos.

Diagrama de arquitectura de Blob Storage

Use las siguientes clases de .NET para interactuar con estos recursos:

  • BlobServiceClient: La clase BlobServiceClient permite manipular recursos de Azure Storage y contenedores de blobs.
  • BlobContainerClient: La clase BlobContainerClient permite manipular contenedores de Azure Storage y sus blobs.
  • BlobClient: La clase BlobClient permite manipular los blobs de Azure Storage.
  • BlobDownloadInfo: La clase BlobDownloadInfo representa las propiedades y el contenido devuelto por la descarga de un blob.

Ejemplos de código

Estos fragmentos de código de ejemplo muestran cómo realizar las siguientes tareas con la biblioteca cliente de Azure Blob Storage para .NET en una aplicación Xamarin.Forms:

Creación de variables de nivel de clase

El código siguiente declara varias variables de nivel de clase. Necesitan comunicarse con Azure Blob Storage en todo este ejemplo.

Estas variables se suman a la cadena de conexión de la cuenta de almacenamiento establecida en la sección Configuración de una cadena de conexión de almacenamiento.

Agregue este código como variables de nivel de clase dentro del archivo MainPage.xaml.cs:

string storageConnectionString = "{set in the Configure your storage connection string section}";
string fileName = $"{Guid.NewGuid()}-temp.txt";

BlobServiceClient client;
BlobContainerClient containerClient;
BlobClient blobClient;

Crear un contenedor

Decida un nombre para el nuevo contenedor. El código siguiente anexa un valor de GUID al nombre de contenedor para asegurarse de que sea único.

Importante

Los nombres de contenedor deben estar en minúsculas. Para más información acerca de los contenedores de nomenclatura y los blobs, consulte Naming and Referencing Containers, Blobs, and Metadata (Asignación de nombres y realización de referencias a contenedores, blobs y metadatos).

Cree una instancia de la clase BlobServiceClient. A continuación, llame al método CreateBlobContainerAsync para crear el contenedor en la cuenta de almacenamiento.

Agregue este código al archivo MainPage.xaml.cs:

protected async override void OnAppearing()
{            
    string containerName = $"quickstartblobs{Guid.NewGuid()}";

    client = new BlobServiceClient(storageConnectionString);
    containerClient = await client.CreateBlobContainerAsync(containerName);

    resultsLabel.Text = "Container Created\n";

    blobClient = containerClient.GetBlobClient(fileName);

    uploadButton.IsEnabled = true;
}

Carga de los blobs en un contenedor

El siguiente fragmento de código:

  1. Crea una MemoryStream de texto.
  2. Carga el texto en un blob, para lo que llama a la función UploadAsync de la clase BlobContainerClient y utiliza tanto el nombre de archivo como el MemoryStream de texto. Esta operación crea el blob si no existe y lo sobrescribe, en caso de que ya exista.

Agregue este código al archivo MainPage.xaml.cs:

async void Upload_Clicked(object sender, EventArgs e)
{                                    
    using MemoryStream memoryStream = new MemoryStream(Encoding.UTF8.GetBytes("Hello World!"));

    await containerClient.UploadBlobAsync(fileName, memoryStream);

    resultsLabel.Text += "Blob Uploaded\n";

    uploadButton.IsEnabled = false;
    listButton.IsEnabled = true;
}

Enumerar los blobs de un contenedor

Enumere los blobs en el contenedor llamando al método GetBlobsAsync. En este caso, solo se ha agregado un blob al contenedor, por lo que la operación de enumeración devuelve simplemente dicho blob.

Agregue este código al archivo MainPage.xaml.cs:

async void List_Clicked(object sender, EventArgs e)
{            
    await foreach (BlobItem blobItem in containerClient.GetBlobsAsync())
    {
        resultsLabel.Text += blobItem.Name + "\n";                
    }

    listButton.IsEnabled = false;
    downloadButton.IsEnabled = true;
}

Descargar blobs

Llame al método DownloadToAsync para descargar el blob creado previamente. El código de ejemplo copia la representación de Stream del blob primero en un MemoryStream y, después, en un StreamReader para que se pueda mostrar el texto.

Agregue este código al archivo MainPage.xaml.cs:

async void Download_Clicked(object sender, EventArgs e)
{
    BlobDownloadInfo downloadInfo = await blobClient.DownloadAsync();

    using MemoryStream memoryStream = new MemoryStream();

    await downloadInfo.Content.CopyToAsync(memoryStream);
    memoryStream.Position = 0;

    using StreamReader streamReader = new StreamReader(memoryStream);

    resultsLabel.Text += "Blob Contents: \n";
    resultsLabel.Text += await streamReader.ReadToEndAsync();
    resultsLabel.Text += "\n";

    downloadButton.IsEnabled = false;
    deleteButton.IsEnabled = true;
}

Eliminación de un contenedor

El código siguiente limpia los recursos que creó; para ello, elimina todo el contenedor con DeleteAsync.

En primer lugar, la aplicación solicita confirmación antes de eliminar el blob y el contenedor. Esta es una buena oportunidad para verificar que los recursos se han creado correctamente antes de eliminarlos.

Agregue este código al archivo MainPage.xaml.cs:

async void Delete_Clicked(object sender, EventArgs e)
{            
    var deleteContainer = await Application.Current.MainPage.DisplayAlert("Delete Container",
        "You are about to delete the container proceeed?", "OK", "Cancel");

    if (deleteContainer == false)
        return;

    await containerClient.DeleteAsync();

    resultsLabel.Text += "Container Deleted";

    deleteButton.IsEnabled = false;
}

Ejecución del código

Cuando la aplicación se inicie, lo primero que hará es crear el contenedor tal como aparece. Luego, tendrá que hacer clic en los botones para cargar, enumerar y descargar los blobs, así como para eliminar el contenedor.

Para ejecutar la aplicación en Windows, presione F5. Para ejecutar la aplicación en Mac, presione Cmd+Enter.

La aplicación escribe en la pantalla después de cada operación. La salida de la aplicación es similar a la del ejemplo siguiente:

Container Created
Blob Uploaded
98d9a472-8e98-4978-ba4f-081d69d2e6f8-temp.txt
Blob Contents:
Hello World!
Container Deleted

Antes de comenzar el proceso de limpieza, compruebe que la salida del contenido del blob en la pantalla coincide con el valor que se cargó.

Después de comprobar los valores, confirme la solicitud de eliminación del contenedor y finalice la demostración.

Pasos siguientes

En este inicio rápido, ha aprendido a cargar, descargar y enumerar blobs mediante una biblioteca cliente de Azure Blob Storage v12 con Xamarin.

Para ver las aplicaciones de ejemplo de Blob Storage, siga estos pasos: