jueves, 19 de noviembre de 2009

Windows Azure Storage Client v1.0

Windows Azure Storage Client v1.0

(Traducción del original escrito por Neil Mackenzie )

El paquete de Noviembre de 2009 del SDK de Windows Azure y herramientas ha introducido para la muchachada una API totalmente renovada StorageClient v 1.0 que ahora es una parte integral de la liberación de Azure, en lugar de ser sólo un ejemplo como sucedia anteriormente (Para más información consulte nuestros post anteriores acerca del tema de almacenamiento en Azure). La API de StorageClient incluye cerca de 70 clases repartidas en 3 espacios de nombres:

Microsoft.WindowsAzure.StorageClient.dll

La funcionalidad de cliente de almacenamiento se encuentra en Microsoft.WindowsAzure.StorageClient.dll.
Esta funcionalidad se expone a través de cerca de 70 clases repartidas en 3 espacios de nombres:


Microsoft.WindowsAzure
Microsoft.WindowsAzure.StorageClient
Microsoft.WindowsAzure.StorageClient.Protocol


El espacio de nombres Microsoft.WindowsAzure proporciona funcionalidad en cuenta de almacenamiento. El espacio de nombres Microsoft.WindowsAzure.StorageClient proporciona la funcionalidad de clave de almacenamiento del cliente.
La clase Microsoft.WindowsAzure.StorageClient.Protocol proporciona la funcionalidad de bajo nivel relacionados con las llamadas REST al servicio de almacenamiento de Azure y no está cubierto en este post.

Espacio de nombres Microsoft.WindowsAzure

El espacio de nombres Microsoft.WindowsAzure comprende clases relacionadas con las cuentas de almacenamiento y credenciales:


CloudStorageAccount
StorageCredentials
StorageCredentialsAccountAndKey
StorageCredentialsSharedAccessSignature


CloudStorageAccount expone información de cuenta y clave, y es capaz de analizar el archivo de configuración para recuperar esta información.
StorageCredentials es una clase base abstracta para StorageCredentialsAccountAndKey, el soporte a las credenciales de clave compartida,
y StorageCredentialsSharedAccessSignature usadas para crear firmas compartidas para el acceso a blobs.

La clase CloudStorageAccount se declara:


public sealed class CloudStorageAccount {
// Constructors
public CloudStorageAccount(StorageCredentialsAccountAndKey storageCredentialsAccountAndKey, Boolean useHttps);
public CloudStorageAccount(StorageCredentials storageCredentials, Uri blobEndpoint, Uri queueEndpoint, Uri tableEndpoint);

// Properties
public Uri BlobEndpoint { get; }
public StorageCredentials Credentials { get; }
public static CloudStorageAccount DevelopmentStorageAccount { get; }
public Uri QueueEndpoint { get; }
public Uri TableEndpoint { get; }

// Methods
public static CloudStorageAccount FromConfigurationSetting(String settingName);
public static CloudStorageAccount Parse(String value);
public static void SetConfigurationSettingPublisher(Action> configurationSettingPublisher);
public String ToString(Boolean exportSecrets);
public static Boolean TryParse(String value, out CloudStorageAccount account);

// Implemented Interfaces and Overridden Members
public override String ToString();
}


La clase CloudStorageAccount es esencial para el cliente de almacenamiento, ya que cualquier intento de utilizar el servicio de almacenamiento de Azure comienza por la creación de una instancia del mismo.
Los servicios de Windows Azure services utilizan el archivo de configuración para almacenar información de su cuenta tales como nombre y clave.
Una simple llamada al método estático FromConfigurationSetting() será suficiente para crear un CloudStorageAccount objeto correctamente inicializado a partir del archivo de configuración.
Sin embargo, un intento de hacer esto producirá un error en tiempo de ejecución porque no se ha especificado un valor de configuración de Publisher.
La solución a esto es invocar la SetConfigurationSettingPublisher() en el nuevo método OnStart() para el rol.
El código necesario para hacer esto es bastante retorcido, y la técnica más simple para hacerlo funcionar es la de copiarlo directamente del ejemplo de los thumbnails que viene con el SDK de Azure v1.0.


Es posible ignorar al archivo de configuración y crear un objeto de CloudStorageAccount de un objeto StorageCredentialsAccountAndKey como se muestra a continuación:

StorageCredentialsAccountAndKey storageCredentialsAccountAndKey = new StorageCredentialsAccountAndKey("ACCOUNT_NAME",
"ACCOUNT_KEY");
CloudStorageAccount cloudStorageAccount = new CloudStorageAccount(storageCredentialsAccountAndKey, true);


Esto hace que el cliente de almacenamiento vaya directamente contra el almacenamiento en la nube con la cuenta indicada.
Tenga en cuenta que la sustitución del ACCOUNT_NAME y ACCOUNT_KEY con las de almacenamiento de desarrollo no causa que sea usado el almacenamiento de desarrollo y causa un error de ejecución.
Sin embargo, la propiedad DevelopmentStorageAccount es un objeto pre instanciado del tipo CloudStorageAccount que puede ser utilizado para el acceso al almacenamiento de desarrollo:

CloudStorageAccount cloudStorageAccount = CloudStorageAccount.DevelopmentStorageAccount;


Espacio de nombres Microsoft.WindowsAzure.StorageClient

Este espacio de nombres es el núcleo del cliente de almacenamiento y dispone de casi 40 clases de apoyo a la gama completa de funcionalidad para blobs,
las tablas y las colas. Las clases son enumeradas aquí, junto con un breve resumen del uso de las mismas. Casi toda la funcionalidad se ofrece tanto en forma sincrónica y asincrónica. Por ejemplo, la clase CloudQueue soporta adición de mensajes sincrónica y asincrónica a una cola a través de los siguientes métodos:

public void AddMessage(CloudQueueMessage message, TimeSpan timeToLive);
public void AddMessage(CloudQueueMessage message, TimeSpan timeToLive);
public void AddMessage(CloudQueueMessage message);
public IAsyncResult BeginAddMessage(CloudQueueMessage message, TimeSpan timeToLive, AsyncCallback callback, Object state);
public IAsyncResult BeginAddMessage(CloudQueueMessage message, AsyncCallback callback, Object state);
public void EndAddMessage(IAsyncResult asyncResult);

Hasta la proxima!

No hay comentarios:

Publicar un comentario