BT

Explorer Azure en F# grâce à l’Azure Storage Type Provider

| par Pierre-Luc Maheu Suivre 3 Abonnés , traduit par Julien Delhomme Suivre 1 Abonnés le 18 mai 2016. Durée de lecture estimée: 2 minutes |

L’Azure Storage Type Provider propose un accès typé aux sources de données des différents modes de stockage Azure : Blob, Table et Queue. Isaac Abraham, qui maintient le projet, a récemment présenté comment interagir avec ces sources de données à l’aide du Type Provider.

L’initialisation du Type Provider est la même pour toutes les sources :

open FSharp.Azure.StorageTypeProvider

// Connect to a live account using a two-part name and key.
type Storage = AzureTypeProvider<"name", "key">

 

Blob

Le Blob storage d’Azure est un service permettant de stocker des fichiers dans le cloud. Le Type Provider offre un accès statiquement typé aux conteneurs et aux fichiers qu’ils contiennent :

let container = Storage.Containers.samples
let theBlob = container.``folder/``.``childFile.txt``
printfn "Blob '%s' is %d bytes big." theBlob.Name theBlob.Size

let totalSize =
    [ container.``file1.txt``
      container.``file2.txt``
      container.``file3.txt``
      container.``sample.txt`` ]
    |> List.sumBy(fun blob -> blob.Size)

printfn "These files take up %d bytes." totalSize

 

Table

Le Table storage d’Azure est une base NoSQL clé/valeur dans le cloud. La base de données est dépourvue de schéma, ce qui signifie que toutes les lignes n’ont pas à contenir les mêmes propriétés. Les tables Azure offrent des possibilités de requêtage, dans une certaine limite : il est possible de récupérer des lignes par leur clé et de filtrer par propriété. Le point d’entrée pour le requêtage s’appuie sur le protocole OData. Le Type Provider apporte les opérations de CRUD basiques, nécessaires pour la gestion de la donnée. Il y a plusieurs façons de faire des requêtes, la plus simple étant la recherche par clé :

let employeeTable = Storage.Tables.employee
let firstEmployee = employeeTable.Get(Row "1", Partition "women")
let allWomen = employeeTable.GetPartition("women")

Le Type Provider met à disposition un IQueryable permettant de filtrer par propriété. Cependant, cette solution est limitée par l’ensemble restreint des opérations supportées par les tables Azure. Une alternative est d’utiliser les conditions auto générées par le Type Provider :

let longerQuery = employeeTable.Query()
  .``Where Years Working Is``.``Greater Than``(14)
  .``Where Name Is``.``Equal To``(“Fred”)
  .``Where Is Manager Is``.True()

 

Queues

Azure Queue est un service de messaging disposant d’une API REST. Ce service permet également de gérer des tâches asynchrones et la construction de workflows. Une API traditionnelle de manipulation des Queues ne s’appuyant pas sur un schéma et ne disposant pas de capacités de requêtage extensives, un Type Provider n’aura pas grand chose à offrir à ce niveau. Cependant, celui-ci propose plusieurs fonctions pour le développement et le debugging. En utilisant F# Interactive, il est possible d’explorer les queues directement depuis l’IDE.

let queue = Azure.Queues.``sample-queue``

async {
    printfn "Enqueuing a message!"
    do! queue.Enqueue("Hello from Azure Type Provider")
    printfn "Queue length is %d." (queue.GetCurrentLength())

    // Get the message back off the queue
    let dequeuedMessage = (queue.Dequeue() |> Async.RunSynchronously).Value
    printfn "%A" dequeuedMessage

    printfn "Deleting the message."
    do! queue.DeleteMessage dequeuedMessage.Id
    printfn "Queue length is %d." (queue.GetCurrentLength())
} |> Async.RunSynchronously

L’Azure Storage Type Provider est un projet open source disponible sur GitHub.

Evaluer cet article

Pertinence
Style

Bonjour étranger!

Vous devez créer un compte InfoQ ou cliquez sur pour déposer des commentaires. Mais il y a bien d'autres avantages à s'enregistrer.

Tirez le meilleur d'InfoQ

Donnez-nous votre avis

Html autorisé: a,b,br,blockquote,i,li,pre,u,ul,p

M'envoyer un email pour toute réponse à l'un de mes messages dans ce sujet
Commentaires de la Communauté

Html autorisé: a,b,br,blockquote,i,li,pre,u,ul,p

M'envoyer un email pour toute réponse à l'un de mes messages dans ce sujet

Html autorisé: a,b,br,blockquote,i,li,pre,u,ul,p

M'envoyer un email pour toute réponse à l'un de mes messages dans ce sujet

Discuter

Se connecter à InfoQ pour interagir sur ce qui vous importe le plus.


Récupérer votre mot de passe

Follow

Suivre vos sujets et éditeurs favoris

Bref aperçu des points saillants de l'industrie et sur le site.

Like

More signal, less noise

Créez votre propre flux en choisissant les sujets que vous souhaitez lire et les éditeurs dont vous désirez suivre les nouvelles.

Notifications

Restez à jour

Paramétrez vos notifications et ne ratez pas le contenu qui vous importe

BT