Actualizado: mayo de 2011
Los siguientes pasos describen cómo crear una aplicación de consola que usa la API de servicios de almacenamiento de Windows Azure. Concretamente este ejemplo cargará un archivo en el servicio de blob de Windows Azure.
Este ejemplo no se implementa en Windows Azure; en su lugar, le demuestra cómo llamar a la biblioteca de cliente de almacenamiento de Windows Azure a través de una aplicación de consola independiente.
Antes de continuar asegúrese de que cumple los requisitos previos enumerados en Inicio rápido del código de Windows Azure. Si aún no tiene una suscripción de Windows Azure, puede avanzar en este tema hasta el paso 10 para cargar un archivo en el servicio de blob local en el que se ejecuta el emulador de almacenamiento de Windows Azure.
-
Inicie Microsoft Visual Studio 2010.
-
En el menú Archivo, haga clic en Nuevo y, a continuación, haga clic en Proyecto.
-
En el cuadro de diálogo Nuevo proyecto, navegue a Plantillas instaladas, Visual C# y haga clic en Windows.
-
Haga clic en Aplicación de consola. Elija .NET Framework 4 en la lista desplegable. Si es necesario, modifique el campo Ubicación, que indica donde se almacenará la solución. Para los propósitos de este ejemplo, use StorageSample como nombre del proyecto. Haga clic en Aceptar para cerrar el cuadro de diálogo Nuevo proyecto.
-
En el menú Proyecto, haga clic en Agregar referencia. En la pestaña Examinar del cuadro de diálogo Agregar referencia, navegue a la ubicación donde están instaladas las bibliotecas de referencia de Windows Azure SDK, asegúrese de usar la versión más reciente. Por ejemplo, C:\Archivos de programa\Windows Azure SDK\v1.4\ref\. Seleccione Microsoft.WindowsAzure.StorageClient.dll y haga clic en Aceptar.
-
Modifique Program.cs de forma que contenga el siguiente código:
using System; using System.Collections.Generic; using System.Linq; using System.Text; using Microsoft.WindowsAzure; using Microsoft.WindowsAzure.StorageClient; namespace StorageSample { class Program { static void Main(string[] args) { try { // Variables for the cloud storage objects. CloudStorageAccount cloudStorageAccount; CloudBlobClient blobClient; CloudBlobContainer blobContainer; BlobContainerPermissions containerPermissions; CloudBlob blob; // Use the local storage account. cloudStorageAccount = CloudStorageAccount.DevelopmentStorageAccount; // If you want to use Windows Azure cloud storage account, use the following // code (after uncommenting) instead of the code above. // cloudStorageAccount = CloudStorageAccount.Parse("DefaultEndpointsProtocol=http;AccountName=your_storage_account_name;AccountKey=your_storage_account_key"); // Create the blob client, which provides // authenticated access to the Blob service. blobClient = cloudStorageAccount.CreateCloudBlobClient(); // Get the container reference. blobContainer = blobClient.GetContainerReference("mycontainer"); // Create the container if it does not exist. blobContainer.CreateIfNotExist(); // Set permissions on the container. containerPermissions = new BlobContainerPermissions(); // This sample sets the container to have public blobs. Your application // needs may be different. See the documentation for BlobContainerPermissions // for more information about blob container permissions. containerPermissions.PublicAccess = BlobContainerPublicAccessType.Blob; blobContainer.SetPermissions(containerPermissions); // Get a reference to the blob. blob = blobContainer.GetBlobReference("myfile.txt"); // Upload a file from the local system to the blob. Console.WriteLine("Starting file upload"); blob.UploadFile(@"c:\myfiles\myfile.txt"); // File from local storage. Console.WriteLine("File upload complete to blob " + blob.Uri); } catch (StorageClientException e) { Console.WriteLine("Storage client error encountered: " + e.Message); // Exit the application with exit code 1. System.Environment.Exit(1); } catch (Exception e) { Console.WriteLine("Error encountered: " + e.Message); // Exit the application with exit code 1. System.Environment.Exit(1); } finally { // Exit the application. System.Environment.Exit(0); } } } }
Cree un archivo en el equipo local denominado c:\myfiles\myfile.txt. Alternativamente, use un archivo existente, pero cambie el siguiente código para hacer referencia al archivo existente, no ac:\myfiles\myfile.txt:
blob.UploadFile(@"c:\myfiles\myfile.txt"); // File from local storage.
- Guarde Program.cs.
- Puesto que el código usa el servicio de blob local, inicie el emulador de almacenamiento de Windows Azure. En Windows, haga clic en el icono Inicio de Windows, haga clic en Todos los programas, haga clic en Windows Azure SDK v1.4 y haga clic en Emulador de almacenamiento. Alternativamente, si el icono Emulador de Windows Azure está en la barra de tareas, puede iniciar el emulador de almacenamiento si hace clic con el botón secundario en el icono Emulador de Windows Azure y, a continuación, en Iniciar el emulador de almacenamiento.
- En el menú Depurar, haga clic en Iniciar sin depurar. Suponiendo que no se produzca ningún error de compilación ni del equipo cliente, el programa debería ejecutarse ahora correctamente. Copie el URI mostrado por la aplicación en el explorador; debería mostrarse el archivo que cargó en el servicio de blob local, ya que está usando la cuenta de almacenamiento local. Para especificar la cuenta de almacenamiento local se usó el siguiente código:
cloudStorageAccount = CloudStorageAccount.DevelopmentStorageAccount; |
Para obtener más información sobre el emulador de almacenamiento, vea Configuring and Using the Storage Emulator with Visual Studio.
11. Ahora preparemos el código para cargar el archivo en la cuenta de almacenamiento de Windows Azure, en lugar de cargarlo en la cuenta de almacenamiento local. Si aún no lo ha hecho, cree una cuenta de almacenamiento de Windows Azure siguiendo las instrucciones de Crear una cuenta de almacenamiento.
12. En Program.cs, marque como comentario la siguiente línea de código, dado que va a usar una cuenta de almacenamiento de Windows Azure, no una de almacenamiento de desarrollo:
// cloudStorageAccount = CloudStorageAccount.DevelopmentStorageAccount; |
13. Modifique el código de Program.cs para usar la información de la cuenta de almacenamiento. En esta sección de código se necesitan los valores propios de su conexión, que especifican la cadena de conexión que se debe usar para el almacenamiento de Windows Azure:
cloudStorageAccount = CloudStorageAccount.Parse("DefaultEndpointsProtocol=http;AccountName=your_storage_account_name;AccountKey=your_storage_account_key"); |
Asegúrese de que esta línea de código ya no está marcada como comentario. Modifique los valores asignados a your_storage_account_name y your_storage_account_key para usar su nombre de cuenta de almacenamiento y la clave de acceso de la cuenta de almacenamiento, respectivamente. Puede usar el Portal de administración de la plataforma Windows Azure, http://windows.azure.com, para determinar ambos valores. Específicamente, en http://windows.azure.com, puede navegar a Servicios hospedados, cuentas de almacenamiento y CDN y, a continuación, hacer clic en Cuentas de almacenamiento para ver los nombres de cuenta de almacenamiento enumerados para su suscripción o suscripciones. Haga clic en una cuenta de almacenamiento para ver la página de propiedades de las cuentas de almacenamiento. A continuación se muestra la página de propiedades de las cuentas de almacenamiento, con rótulos que indican dónde debería mostrarse el nombre de la cuenta de almacenamiento y la clave de acceso primaria:
En el código anterior, reemplace el texto your_storage_account_name con el nombre de la cuenta de almacenamiento. Reemplace your_storage_account_key con el valor de clave de acceso de almacenamiento primaria o secundaria. Para obtener más información sobre las cadenas de conexión, vea Cómo configurar cadenas de conexión.
SeguridadNota
Asegúrese de que mantiene en secreto las claves de cuenta de almacenamiento. Proteja la aplicación y el código fuente, incluido el archivo Program.cs, ya que ahora contiene las credenciales de la cuenta de almacenamiento.
14. Guarde Program.cs.
15. En el menú Depurar, haga clic en Iniciar sin depurar. Suponiendo que no se produzca ningún error de compilación ni del equipo cliente, el programa debería ejecutarse ahora correctamente. Copie el URI mostrado por la aplicación en el explorador; debería mostrarse el archivo que cargó en la cuenta de almacenamiento de Windows Azure.
El código muestra adquiere una instancia de la clase CloudStorageAccount, que encapsula las credenciales necesarias para autenticar una solicitud en los servicios de almacenamiento. A continuación, este objeto se usa para crear una instancia de la clase CloudBlobClient, que proporciona acceso al servicio de blob. Con la instancia de CloudBlobClient, el ejemplo adquiere una referencia a un contenedor de blob denominadomycontainer y lo crea si no existe. El permiso del contenedor se establece para permitir el acceso anónimo en el nivel de blob. Para obtener información sobre los diversos tipos de permisos disponibles para un contenedor, vea BlobContainerPermissions. Finalmente, el ejemplo carga un archivo local en el blob denominado myfile.txt mediante una llamada al método UploadFile. Observe que no es necesario que el nombre del blob sea el mismo que el del archivo local.
Además de poder ver el blob mediante su URI, puede verlo en Visual Studio. Para obtener información sobre cómo ver el blob en Visual Studio, vea Browsing Storage Resources with the Windows Azure Storage Explorer. Asimismo, hay disponible una variedad de software de visualización de almacenamiento de Windows Azure de otros fabricantes que se puede encontrar mediante búsquedas en línea.
Tal y como cabe esperar de una entidad de almacenamiento, hay muchos métodos y propiedades disponibles para los blobs. Por ejemplo, puede cargar el texto en un blob a través del método UploadText o descargar un blob en un archivo a través del método DownloadToFile. Si desea eliminar el blob que cargó, llame al método Delete. Para obtener más información sobre los métodos y propiedades de los blobs, veaCloudBlob.
De igual forma, hay muchos métodos y propiedades para los contenedores. Por ejemplo, puede enumerar los blobs en un contenedor mediante el método ListBlobs o eliminar un contenedor a través del métodoDelete. Para obtener más información sobre los métodos y propiedades de los contenedores, vea CloudBlobContainer.
Aparte de CloudBlobClient, los otros tipos de clientes que se pueden adquirir a través de una instancia de la clase CloudStorageAccount son CloudTableClient y CloudQueueClient, que se usan para las operaciones de las tablas y colas de Windows Azure, respectivamente. Para obtener más información sobre la biblioteca administrada de .NET para los servicios de almacenamiento de Windows Azure, veaMicrosoft.WindowsAzure.StorageClient.
Además de la biblioteca administrada de .NET proporcionada por la API de servicios de almacenamiento de Windows Azure, también se proporciona una API de REST para la funcionalidad de almacenamiento. Para obtener más información, vea Windows Azure Storage Services REST API Reference.
0 comentarios:
Publicar un comentario