BT

Diffuser les Connaissances et l'Innovation dans le Développement Logiciel d'Entreprise

Contribuez

Sujets

Sélectionner votre région

Accueil InfoQ Actualités Explorer Azure en F# grâce à l’Azure Storage Type Provider

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

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

Contenu Éducatif

BT