Passer au contenu du pied de page
Iron Academy Logo
Intégration de bases de données C#

Intro To Azure Storage in C# (en anglais)

Tim Corey
1h 05m 37s

Azure Storage est un service essentiel offert par Microsoft Azure, et lorsqu'il est associé aux technologies .NET, il devient un outil puissant pour stocker et récupérer des fichiers dans le nuage. Dans son tutoriel approfondi "Intro to Azure Storage in C#", Tim Corey guide les spectateurs à travers les étapes exactes de la configuration d'un compte de stockage Azure, de la mise en place du stockage Azure Blob et de son intégration dans un projet C# ASP.NET Core MVC.

Dans cet article, nous suivrons de près la vidéo de Tim pour explorer chaque étape du processus en discutant des concepts clés et des terminologies utilisées dans le développement Azure dans le monde réel.

Tarification et planification du stockage Azure

Tim commence par expliquer l'efficacité financière de l'utilisation d'Azure Storage dans une application C#. Que vous utilisiez un conteneur blob pour stocker des fichiers texte, des images ou des données binaires, le coût reste minime. Il présente le calculateur de prix Azure qui permet d'estimer les frais en fonction de caractéristiques sélectionnées telles que les niveaux de performance, les paramètres de redondance et les opérations de données.

Tim choisit Block Blob Storage sous General-purpose v2 dans le portail Azure et configure le niveau d'accès à chaud pour les fichiers fréquemment consultés. Il s'assure que le compte de stockage utilise un stockage localement redondant (LRS) pour minimiser les coûts tout en maintenant la sécurité.

Pour une application de démonstration stockant 1 Go de données et quelques milliers d'opérations, le coût s'élève à 13 cents par mois", explique Tim.

Création du compte de stockage Azure

Dans le portail Azure, Tim montre comment créer un nouveau groupe de ressources et un compte de stockage Azure correspondant. Les conventions de dénomination sont strictes : les noms des comptes de stockage doivent être uniques, en minuscules et ne pas contenir de tirets.

Lors de la configuration, il désactive le stockage géo-redondant pour réduire les coûts, un conseil essentiel pour les développeurs travaillant sur des prototypes ou des environnements locaux. Il permet également un accès anonyme au niveau du conteneur, mais uniquement à des fins de démonstration, en précisant que les environnements de production réels nécessitent un accès sécurisé.

Intro Azure Storage Csharp 1 related to Création du compte de stockage Azure

Tim aborde également les clés d'accès, la chaîne de connexion et le nom du compte de stockage, autant d'éléments essentiels lorsque votre projet C# se connecte aux ressources Azure.

Comprendre Azure Blob Storage

Tim explique comment un conteneur blob est utilisé pour organiser les données dans votre compte de stockage Azure. Il évite de créer manuellement un nouveau conteneur via le portail et prévoit plutôt de le générer en code à l'aide du SDK Azure for .NET.

Il explique que les clés d'accès sécurisées et la chaîne de connexion - visible dans les paramètres de sécurité du compte - seront utilisées dans l'application pour s'authentifier auprès de la bibliothèque client de stockage.

Démarrer le projet ASP.NET Core

Tim crée une application web .NET 9 MVC à l'aide de Visual Studio. Bien que n'importe quel type d'interface utilisateur comme Razor Pages ou Blazor Server puisse être utilisé, il choisit MVC pour la démonstration.

À 19:35, dans secrets.json, il stocke des informations d'identification sensibles en toute sécurité :

  • chaîne de connexion

  • clé du compte de stockage

  • nom du conteneur

  • nom du compte de stockage

Intro Azure Storage Csharp 2 related to Démarrer le projet ASP.NET Core

Tim explique que le fichier appsettings.json ne doit pas contenir de secrets, car il est transféré dans les référentiels de code source. Les secrets devraient plutôt être stockés localement à l'aide des secrets d'utilisateur, en particulier pendant le développement.

Installation des paquets NuGet requis

Pour interagir avec Azure Blob Storage, Tim installe le package NuGet Azure.Storage.Blobs. Il apprécie la façon dont Microsoft a modularisé les fonctionnalités à l'aide du SDK Azure, ce qui permet de créer des applications plus petites et plus faciles à maintenir.

Intro Azure Storage Csharp 3 related to Installation des paquets NuGet requis

"Au lieu de tout regrouper dans le framework, vous obtenez maintenant exactement ce dont vous avez besoin - comme la bibliothèque client Azure Blob - via NuGet", souligne Tim.

Modèle d'options de configuration pour Azure Storage

Ensuite, Tim crée une classe POCO (BlobStorageOptions) qui correspond aux clés de sa configuration. Il utilise le modèle des options pour lier la configuration à des objets fortement typés, ce qui permet une configuration centralisée et testable.

Cette configuration permet à l'application .NET d'utiliser la configuration Azure de manière cohérente dans tous les environnements.

Mise en œuvre de la logique du service de stockage Blob

Tim ajoute un nouveau dossier appelé DataAccess et implémente une classe nommée BlobStorage.cs. À l'intérieur, il injecte la configuration à l'aide de IOptions et la stocke dans une instance privée.

Il construit deux méthodes asynchrones principales :

Logique de téléchargement de fichiers

La méthode UploadFileAsync :

  • Accepte un fichier IFormFile à partir de l'interface MVC.

  • Crée un BlobContainerClient à partir du SDK Azure Storage en utilisant la chaîne de connexion et le nom du conteneur.

  • Vérifie la présence d'un conteneur existant ou crée un nouveau conteneur s'il n'existe pas.

  • Définit la politique d'accès sur None, pour s'assurer que le conteneur n'est pas accessible au public.

  • Utilise un objet BlobClient pour télécharger le fichier à partir d'un flux.

Tim utilise une instruction using et un appel await pour gérer le flux de fichiers en toute sécurité, en évitant les fuites de mémoire.

Logique des fichiers de téléchargement

Dans DownloadFileAsync, Tim :

  • Accepte un nom de fichier sous forme de chaîne ou un URI blob complet.

  • Construit un nouveau BlobClient à l'aide de l'URI et des informations d'identification sécurisées.

  • Télécharge le fichier à l'aide de DownloadStreamingAsync.

  • Enveloppe le flux dans un FileContentResult pour permettre les téléchargements à partir du navigateur.

Cela permet de s'assurer que les fichiers restent sécurisés et qu'ils ne sont accessibles que par l'intermédiaire de l'application, et non pas directement par l'intermédiaire d'une URL.

Enregistrer le stockage Blob avec l'injection de dépendance

Tim définit une interface (IBlobStorage) pour sa classe et l'enregistre en tant que Singleton dans le conteneur .NET DI. Étant donné que la classe est sans état et n'utilise que des valeurs de configuration, la méthode Singleton est optimale.

Intégrer l'application MVC

Le Home Controller est modifié pour utiliser IBlobStorage. Ce document contient :

  • Une méthode POST UploadFile qui valide l'entrée et appelle UploadFileAsync.

  • Une méthode POST GetFile qui vérifie l'URL et appelle ensuite DownloadFileAsync.

Chaque méthode interagit avec le client de stockage pour gérer en toute sécurité les fichiers blob, qu'il s'agisse de téléchargement ou de chargement.

Utilisation de la vue Razor pour les opérations sur les fichiers

Dans Index.cshtml, Tim met en place :

  • Un formulaire pour télécharger des fichiers en utilisant input type="file" et le style Bootstrap.

  • Un deuxième formulaire pour télécharger un fichier en utilisant son URI.

  • Gestion des messages d'erreur pour les cas particuliers tels que les fichiers manquants ou les URI non valides.

  • Une section d'affichage qui montre l'URI du blob généré (https) après un téléchargement réussi.

Tim traite également les erreurs à l'aide d'une List afin de les présenter clairement sur l'interface utilisateur, en informant les utilisateurs de problèmes tels que les sélections de fichiers manquantes.

Tester et vérifier la sécurité des fichiers

Tim télécharge un fichier texte et tente d'accéder à l'URI directement dans le navigateur. Il échoue, comme prévu, en raison de la politique d'accès Aucun.

Après avoir modifié temporairement le niveau d'accès dans le portail Azure, le fichier peut être téléchargé via un lien direct. Mais il revient rapidement à Private, en insistant sur la façon dont Azure permet un contrôle fin de la sécurité.

Recommandations finales de Tim

Tim conclut en rappelant aux développeurs que Microsoft Azure offre une grande valeur ajoutée, même avec un investissement minimal. Avec des outils tels que :

  • Paquets NuGet

  • SDK Azure

  • Visual Studio

  • Portail Azure

  • Chaînes et clés de connexion sécurisées

vous pouvez rapidement créer une solution de stockage prête à la production à l'aide de C#. Que vous travailliez sur un système à grande échelle ou sur un petit projet de test, Azure Blob Storage est un choix évolutif et rentable.

Vous payez pour ce que vous utilisez dans le nuage, alors ne demandez que ce dont vous avez besoin", souligne Tim.

Résumé

De la création d'un compte de stockage et de la configuration des conteneurs blob à la gestion sécurisée des téléchargements dans une application MVC, Tim Corey fournit des instructions détaillées qui couvrent l'ensemble du cycle de vie de l'utilisation d'Azure Storage avec .NET.

Grâce à ce guide et à la vidéo de Tim, vous pouvez commencer à utiliser Azure Blob Storage en toute confiance, tout en gardant le contrôle, en minimisant les coûts et en adhérant aux meilleures pratiques en matière de développement dans le nuage.

Consultez sa vidéo complète pour plus de clarté et sa Chaîne YouTube pour plus de contenu perspicace sur le stockage Azure (C#).

Hero Worlddot related to Intro To Azure Storage in C# (en anglais)
Hero Affiliate related to Intro To Azure Storage in C# (en anglais)

Gagnez plus en partageant ce que vous aimez

Vous créez du contenu pour les développeurs travaillant avec .NET, C#, Java, Python ou Node.js ? Transformez votre expertise en revenu supplémentaire !

Équipe de soutien Iron

Nous sommes en ligne 24 heures sur 24, 5 jours sur 7.
Chat
Email
Appelez-moi