AIDE .NET

Azure Tables (Comment ça marche pour les développeurs)

Publié octobre 24, 2024
Partager:

Dans le vaste paysage de l'informatique en nuage, le stockage des données joue un rôle essentiel dans l'architecture et l'évolutivité des applications modernes. Tableau Azure Storage, un magasin de données NoSQL entièrement géré fourni par Microsoft Azure, offre aux développeurs une solution polyvalente pour le stockage de données structurées dans le nuage. Partons à la découverte des capacités, des cas d'utilisation et des avantages d'Azure Table Storage.

Comprendre Azure Table Storage

Azure Table Storage est un service de base de données NoSQL basé sur le cloud qui permet de stocker des données structurées sans schéma. Azure Tables offre un modèle de données basé sur des paires clé-valeur, où chaque entité est identifiée de manière unique par une clé de partition et une clé de ligne. Cette conception permet d'interroger et d'extraire efficacement les données, ce qui en fait un outil idéal pour les scénarios nécessitant un accès rapide à de vastes ensembles de données.

Si vous hésitez entre Azure Table Storage et une base de données relationnelle pour gérer vos données structurées, la capacité d'Azure Table Storage à gérer des ensembles de données volumineux et son intégration à l'écosystème Azure font d'Azure Table Storage un outil pratique à intégrer dans votre boîte à outils de développeur.

Principales caractéristiques et capacités

  1. **Contrairement aux bases de données relationnelles traditionnelles, Azure Table Storage n'impose pas de schéma aux données. Cette flexibilité permet aux développeurs de stocker des entités de structures différentes dans une même table, ce qui facilite le développement agile et répond à l'évolution des besoins en matière de données.

  2. Évolutivité et performances: Azure Table Storage est conçu pour l'évolutivité, capable de gérer des quantités massives de données avec facilité. Il s'adapte automatiquement aux charges de travail croissantes et offre des performances prévisibles, ce qui le rend adapté aux applications à haut débit et aux scénarios nécessitant un accès aux données à faible latence.

  3. Partitionnement et équilibrage de charge: Les données dans Azure Table Storage sont partitionnées en fonction de la clé de partition, ce qui permet une distribution efficace des données sur plusieurs nœuds de stockage. Cette stratégie de partitionnement permet l'évolutivité horizontale et l'équilibrage des charges, ce qui garantit des performances et une utilisation des ressources optimales.

  4. Les index secondaires: Bien qu'Azure Table Storage utilise principalement la clé de partition et la clé de ligne pour la récupération des données, il prend également en charge les index secondaires grâce à l'utilisation de clés composites et de projections de requêtes. Cette fonctionnalité permet aux développeurs d'effectuer des requêtes de plage efficaces et de filtrer les données sur la base d'attributs secondaires, améliorant ainsi la flexibilité des modèles d'accès aux données.

  5. Intégration avec l'écosystème Azure: Azure Table Storage s'intègre de manière transparente avec d'autres services Azure, tels que Azure Functions, Azure Cosmos DB et Azure Logic Apps, permettant aux développeurs de créer des solutions de bout en bout en toute simplicité. Qu'il s'agisse de traiter des flux de données avec des fonctions sans serveur ou d'analyser des données avec des outils d'analyse avancés, Azure Table Storage sert de composant fondamental pour créer des applications évolutives et résilientes.

Cas d'utilisation

Azure Table Storage répond à un large éventail de cas d'utilisation dans divers secteurs d'activité, notamment :

  1. Internet des objets(IdO): Azure Table Storage est bien adapté au stockage de données de télémétrie provenant d'appareils IoT, permettant l'ingestion, l'analyse et la visualisation de données en temps réel. Son évolutivité et ses performances en font un outil idéal pour traiter les volumes massifs de données générés par les déploiements IoT.

  2. **Pour les applications nécessitant un stockage structuré des métadonnées de contenu, telles que les blogs, les articles et le contenu généré par les utilisateurs, Azure Table Storage offre une solution rentable et évolutive. Sa conception sans schéma permet une évolution souple du schéma, ce qui permet de prendre en compte les changements de structure du contenu au fil du temps.

  3. Session State Management: Azure Table Storage peut être utilisé pour stocker les données de l'état de la session pour les applications web, fournissant une solution de gestion de session distribuée et évolutive. En transférant l'état de la session vers Azure Table Storage, les développeurs peuvent améliorer l'évolutivité, la tolérance aux pannes et l'affinité des sessions dans les environnements à charge équilibrée.

  4. Systèmes distribués: Dans les architectures de systèmes distribués, Azure Table Storage sert de magasin de données fondamental pour maintenir l'état partagé et la coordination entre les composants. Ses fonctions de partitionnement et d'évolutivité le rendent bien adapté aux scénarios nécessitant une mise en cache distribuée, une gestion de la configuration et une coordination entre les microservices.

Introduction à IronPDF

Tableaux Azure (Comment ça marche pour les développeurs) : Figure 1

IronPDF est une bibliothèque PDF C# qui permet de générer, de gérer et d'extraire le contenu de documents PDF dans des projets .NET. En voici les principales caractéristiques :

  1. Conversion HTML en PDF :

    • Convertissez du contenu HTML, CSS et JavaScript en documents PDF.

    • Moteur de rendu Chrome pour des PDF au pixel près.
    • Générer des PDF à partir d'URL, de fichiers HTML ou de chaînes HTML en entrée.
  2. Conversion d'images et de contenus :

    • Convertissez des images depuis et vers des PDF.

    • Extraction de texte et d'images à partir de documents PDF existants.
    • Prise en charge de divers formats d'image tels que JPG, PNG, etc.
  3. Édition et manipulation :

    • Définir les propriétés, la sécurité et les autorisations pour les PDF.

    • Ajouter des signatures numériques.
    • Modifier les métadonnées et l'historique des révisions.
  4. Support multiplateforme :

    • Fonctionne avec .NET Core(8, 7, 6, 5 et 3.1+), Standard .NET(2.0+)et le Framework .NET(4.6.2+).

    • Compatible avec Windows, Linux et macOS.
    • Disponible sur NuGet pour une installation facile.

Générer un document PDF à l'aide d'IronPDF et d'Azure Tables

Pour commencer, créez une application console à l'aide de Visual Studio, comme indiqué ci-dessous :

Tableaux Azure (Comment ça marche pour les développeurs) : Figure 2

Fournir le nom du projet :

Tableaux Azure (Comment ça marche pour les développeurs) : Figure 3

Fournir la version .NET :

Tableaux Azure (Comment ça marche pour les développeurs) : Figure 4

Installer leIronPDF vous pouvez télécharger le paquet NuGet depuis le gestionnaire de paquets NuGet :

Tableaux Azure (Comment ça marche pour les développeurs) : Figure 5

Pour accéder à la bibliothèque Azure Tables, nous utiliserons la bibliothèque client Azure Tables appelée Azure.Data.Tables qui peut être trouvée dans le gestionnaire de paquets NuGet, le client Azure Table Service fournit des fonctionnalités pour interagir avec le stockage de tables Azure.

Tableaux Azure (Comment ça marche pour les développeurs) : Figure 6

Créez un compte Azure Storage pour commencer à utiliser Azure Tables :

Tableaux Azure (Comment ça marche pour les développeurs) : Figure 7

Cliquez sur réviser et créer.

Saisissez le code ci-dessous dans votre programme afin d'utiliser Azure Tables pour générer un document PDF.

using Azure;
using Azure.Data.Tables;
using Azure.Data.Tables.Models;
namespace CodeSample
{
    public static class AzureTableDemo
    {
        public static async Task Execute()
        {
            var tableName = "IronDemo";
            var connectionString = "DefaultEndpointsProtocol=https;AccountName=irondemo;AccountKey=9Pe6LJlkjA721VgWvSuRCMk+WJR5/kFoyPtR1ewjRsNbGJNJOmWYhCB32fakANmWeAcfyIg++iHl+AStDNYlGw==;EndpointSuffix=core.windows.net";
            Console.WriteLine("Demo IronPDF with Azure.Data.Tables");
            Installation.EnableWebSecurity = true;
            // Instantiate Renderer
            var renderer = new ChromePdfRenderer();
            var content = "<h1>Demo IronPDF with Azure.Data.Tables</h1>";
            content += "<h2>Create TableServiceClient</h2>";
            content += "<p></p>";
            var serviceClient = new TableServiceClient(connectionString);
            content += "<p>var serviceClient = new TableServiceClient(connectionString);</p>";
            content += "<h2>Create CreateTableIfNotExists</h2>";
            TableItem table = await serviceClient.CreateTableIfNotExistsAsync(tableName);
            Console.WriteLine($"Created table: {table.Name}.");
            content += $"<p>Created table: {table.Name}.</p>";
            content += "<h2>Deletes If Required</h2>";
            // Deletes the table made previously.
            // serviceClient.DeleteTable(tableName);
            content += "<p>serviceClient.DeleteTable(tableName);</p>";
            content += "<h2>GetTableClient</h2>";
            var tableClient = serviceClient.GetTableClient(tableName);
            content += "<p>var tableClient = serviceClient.GetTableClient(tableName);</p>";
            content += "<h2>Add Table Entity</h2>";
            // Make a dictionary entity by defining a <see cref="TableEntity">.
            var tableEntity = new TableEntity() { { "Book", "Awesome IronPDF Package" }, { "Price", 5.00 }, { "Quantity", 21 } };
            content += "<p>new TableEntity() { { \"Book\", \"Awesome IronPDF\" }, { \"Price\", 5.00 }, { \"Quantity\", 21 } };</p>";
            tableEntity.PartitionKey = tableEntity["Book"].ToString();
            tableEntity.RowKey = tableEntity["Price"].ToString();
            content += $"<p>tableEntity.PartitionKey = {tableEntity["Book"]}</p>";
            content += $"<p>tableEntity.RowKey = {tableEntity["Price"]}</p>";
            Console.WriteLine($"{tableEntity.RowKey}: {tableEntity["Book"]} costs ${tableEntity.GetDouble("Price")}.");
            content += $"<p>{tableEntity.RowKey}: {tableEntity["Book"]} costs ${tableEntity.GetDouble("Price")}</p>";
            // Add the newly created entity.
            tableClient.AddEntity(tableEntity);
            content += "<p></p>";
            content += "<h2>Query Table</h2>";
            Pageable<TableEntity> queryResultsFilter = tableClient.Query<TableEntity>(filter: $"PartitionKey eq '{tableEntity.PartitionKey}'");
            content += "<p>Using tableClient.Query<TableEntity></p>";
            // Iterate the <see cref="Pageable"> to access all queried entities.
            foreach (TableEntity qEntity in queryResultsFilter)
            {
                content += $"<p>{qEntity.GetString("Book")}: {qEntity.GetDouble("Price")}</p>";
                Console.WriteLine($"{qEntity.GetString("Book")}: {qEntity.GetDouble("Price")}");
            }
            Console.WriteLine($"The query returned {queryResultsFilter.Count()} entities.");
            content +=$"<p>The query returned {queryResultsFilter.Count()} entities.</p>";
            var pdf = renderer.RenderHtmlAsPdf(content);
            // Export to a file or Stream
            pdf.SaveAs("AwesomeAzureDataTables.pdf");
        }
    }
}
using Azure;
using Azure.Data.Tables;
using Azure.Data.Tables.Models;
namespace CodeSample
{
    public static class AzureTableDemo
    {
        public static async Task Execute()
        {
            var tableName = "IronDemo";
            var connectionString = "DefaultEndpointsProtocol=https;AccountName=irondemo;AccountKey=9Pe6LJlkjA721VgWvSuRCMk+WJR5/kFoyPtR1ewjRsNbGJNJOmWYhCB32fakANmWeAcfyIg++iHl+AStDNYlGw==;EndpointSuffix=core.windows.net";
            Console.WriteLine("Demo IronPDF with Azure.Data.Tables");
            Installation.EnableWebSecurity = true;
            // Instantiate Renderer
            var renderer = new ChromePdfRenderer();
            var content = "<h1>Demo IronPDF with Azure.Data.Tables</h1>";
            content += "<h2>Create TableServiceClient</h2>";
            content += "<p></p>";
            var serviceClient = new TableServiceClient(connectionString);
            content += "<p>var serviceClient = new TableServiceClient(connectionString);</p>";
            content += "<h2>Create CreateTableIfNotExists</h2>";
            TableItem table = await serviceClient.CreateTableIfNotExistsAsync(tableName);
            Console.WriteLine($"Created table: {table.Name}.");
            content += $"<p>Created table: {table.Name}.</p>";
            content += "<h2>Deletes If Required</h2>";
            // Deletes the table made previously.
            // serviceClient.DeleteTable(tableName);
            content += "<p>serviceClient.DeleteTable(tableName);</p>";
            content += "<h2>GetTableClient</h2>";
            var tableClient = serviceClient.GetTableClient(tableName);
            content += "<p>var tableClient = serviceClient.GetTableClient(tableName);</p>";
            content += "<h2>Add Table Entity</h2>";
            // Make a dictionary entity by defining a <see cref="TableEntity">.
            var tableEntity = new TableEntity() { { "Book", "Awesome IronPDF Package" }, { "Price", 5.00 }, { "Quantity", 21 } };
            content += "<p>new TableEntity() { { \"Book\", \"Awesome IronPDF\" }, { \"Price\", 5.00 }, { \"Quantity\", 21 } };</p>";
            tableEntity.PartitionKey = tableEntity["Book"].ToString();
            tableEntity.RowKey = tableEntity["Price"].ToString();
            content += $"<p>tableEntity.PartitionKey = {tableEntity["Book"]}</p>";
            content += $"<p>tableEntity.RowKey = {tableEntity["Price"]}</p>";
            Console.WriteLine($"{tableEntity.RowKey}: {tableEntity["Book"]} costs ${tableEntity.GetDouble("Price")}.");
            content += $"<p>{tableEntity.RowKey}: {tableEntity["Book"]} costs ${tableEntity.GetDouble("Price")}</p>";
            // Add the newly created entity.
            tableClient.AddEntity(tableEntity);
            content += "<p></p>";
            content += "<h2>Query Table</h2>";
            Pageable<TableEntity> queryResultsFilter = tableClient.Query<TableEntity>(filter: $"PartitionKey eq '{tableEntity.PartitionKey}'");
            content += "<p>Using tableClient.Query<TableEntity></p>";
            // Iterate the <see cref="Pageable"> to access all queried entities.
            foreach (TableEntity qEntity in queryResultsFilter)
            {
                content += $"<p>{qEntity.GetString("Book")}: {qEntity.GetDouble("Price")}</p>";
                Console.WriteLine($"{qEntity.GetString("Book")}: {qEntity.GetDouble("Price")}");
            }
            Console.WriteLine($"The query returned {queryResultsFilter.Count()} entities.");
            content +=$"<p>The query returned {queryResultsFilter.Count()} entities.</p>";
            var pdf = renderer.RenderHtmlAsPdf(content);
            // Export to a file or Stream
            pdf.SaveAs("AwesomeAzureDataTables.pdf");
        }
    }
}
Imports Azure
Imports Azure.Data.Tables
Imports Azure.Data.Tables.Models
Namespace CodeSample
	Public Module AzureTableDemo
		Public Async Function Execute() As Task
			Dim tableName = "IronDemo"
			Dim connectionString = "DefaultEndpointsProtocol=https;AccountName=irondemo;AccountKey=9Pe6LJlkjA721VgWvSuRCMk+WJR5/kFoyPtR1ewjRsNbGJNJOmWYhCB32fakANmWeAcfyIg++iHl+AStDNYlGw==;EndpointSuffix=core.windows.net"
			Console.WriteLine("Demo IronPDF with Azure.Data.Tables")
			Installation.EnableWebSecurity = True
			' Instantiate Renderer
			Dim renderer = New ChromePdfRenderer()
			Dim content = "<h1>Demo IronPDF with Azure.Data.Tables</h1>"
			content &= "<h2>Create TableServiceClient</h2>"
			content &= "<p></p>"
			Dim serviceClient = New TableServiceClient(connectionString)
			content &= "<p>var serviceClient = new TableServiceClient(connectionString);</p>"
			content &= "<h2>Create CreateTableIfNotExists</h2>"
			Dim table As TableItem = Await serviceClient.CreateTableIfNotExistsAsync(tableName)
			Console.WriteLine($"Created table: {table.Name}.")
			content &= $"<p>Created table: {table.Name}.</p>"
			content &= "<h2>Deletes If Required</h2>"
			' Deletes the table made previously.
			' serviceClient.DeleteTable(tableName);
			content &= "<p>serviceClient.DeleteTable(tableName);</p>"
			content &= "<h2>GetTableClient</h2>"
			Dim tableClient = serviceClient.GetTableClient(tableName)
			content &= "<p>var tableClient = serviceClient.GetTableClient(tableName);</p>"
			content &= "<h2>Add Table Entity</h2>"
			' Make a dictionary entity by defining a <see cref="TableEntity">.
			Dim tableEntity() As New TableEntity() From {
				{ "Book", "Awesome IronPDF Package" },
				{ "Price", 5.00 },
				{ "Quantity", 21 }
			}
			content &= "<p>new TableEntity() { { ""Book"", ""Awesome IronPDF"" }, { ""Price"", 5.00 }, { ""Quantity"", 21 } };</p>"
			tableEntity.PartitionKey = tableEntity("Book").ToString()
			tableEntity.RowKey = tableEntity("Price").ToString()
			content &= $"<p>tableEntity.PartitionKey = {tableEntity("Book")}</p>"
			content &= $"<p>tableEntity.RowKey = {tableEntity("Price")}</p>"
			Console.WriteLine($"{tableEntity.RowKey}: {tableEntity("Book")} costs ${tableEntity.GetDouble("Price")}.")
			content &= $"<p>{tableEntity.RowKey}: {tableEntity("Book")} costs ${tableEntity.GetDouble("Price")}</p>"
			' Add the newly created entity.
			tableClient.AddEntity(tableEntity)
			content &= "<p></p>"
			content &= "<h2>Query Table</h2>"
			Dim queryResultsFilter As Pageable(Of TableEntity) = tableClient.Query(Of TableEntity)(filter:= $"PartitionKey eq '{tableEntity.PartitionKey}'")
			content &= "<p>Using tableClient.Query<TableEntity></p>"
			' Iterate the <see cref="Pageable"> to access all queried entities.
			For Each qEntity As TableEntity In queryResultsFilter
				content &= $"<p>{qEntity.GetString("Book")}: {qEntity.GetDouble("Price")}</p>"
				Console.WriteLine($"{qEntity.GetString("Book")}: {qEntity.GetDouble("Price")}")
			Next qEntity
			Console.WriteLine($"The query returned {queryResultsFilter.Count()} entities.")
			content &=$"<p>The query returned {queryResultsFilter.Count()} entities.</p>"
			Dim pdf = renderer.RenderHtmlAsPdf(content)
			' Export to a file or Stream
			pdf.SaveAs("AwesomeAzureDataTables.pdf")
		End Function
	End Module
End Namespace
VB   C#

Explication du code

Le code démontre comment interagir avec Azure Table Storage et générer un PDF à l'aide d'IronPDF :

  1. Interaction avec le stockage de table Azure :

    • Elle utilise le SDK Azure pour .NET(Azure.Data.Tables) pour se connecter à Azure Table Storage.

    • Il vérifie ensuite si une table nommée "IronDemo" existe ; si ce n'est pas le cas, il le crée.

    • Ajoute une nouvelle entité(similaire à une ligne de base de données) la traduction doit rester professionnelle et préserver l'exactitude technique tout en expliquant les caractéristiques et les avantages de ces outils de développement.
    • Interroge la table pour extraire des entités en fonction d'une condition de filtrage.
  2. Génération de PDF avec IronPDF :

    • Utilise le ChromePdfRenderer d'IronPDF pour rendre le contenu HTML dans un fichier PDF.
    • Génère le PDF à partir d'un contenu HTML dynamique qui inclut des détails sur les opérations d'Azure Table Storage.

    Tableaux Azure (Comment ça marche pour les développeurs) : Figure 8

PDF (EN ANGLAIS)

Tableaux Azure (Comment ça marche pour les développeurs) : Figure 9

Licences d'IronPDF

Le package IronPDF nécessite une licence pour fonctionner. Ajoutez le code ci-dessous au début de l'application avant l'accès au package

IronPdf.License.LicenseKey = "IRONPDF-KEY";
IronPdf.License.LicenseKey = "IRONPDF-KEY";
IRON VB CONVERTER ERROR developers@ironsoftware.com
VB   C#

Une licence d'essai est disponibleici.

Conclusion

Azure Table Storage témoigne de l'engagement de Microsoft à fournir aux développeurs des solutions de stockage de données évolutives, flexibles et rentables dans le nuage. Grâce à sa conception sans schéma, à son évolutivité horizontale et à son intégration transparente à l'écosystème Azure, Azure Table Storage permet aux développeurs de créer des applications résilientes et agiles capables de s'adapter aux exigences dynamiques des environnements d'entreprise modernes.

Qu'il s'agisse de gérer des flux de données IoT, de stocker des métadonnées de contenu ou d'orchestrer des systèmes distribués, Azure Table Storage offre une plateforme polyvalente permettant d'exploiter tout le potentiel des applications cloud-natives. Alors que les organisations continuent d'adopter des initiatives de transformation numérique et de migrer vers le cloud, Azure Table Storage reste une pierre angulaire des architectures modernes de stockage de données, stimulant l'innovation et permettant aux entreprises de prospérer dans un monde de plus en plus axé sur les données.

IronPDF est une bibliothèque .NET utilisée pour créer et manipuler des documents PDF de manière programmatique. Il permet aux développeurs de convertir des pages HTML, ASPX, des images et du texte en fichiers PDF. Les principales caractéristiques sont la conversion de HTML en PDF, les capacités d'édition de PDF et la prise en charge de divers environnements .NET, ce qui en fait un outil polyvalent pour la génération et la manipulation de documents PDF au sein d'applications .NET.

SUIVANT >
C# ConfigureAwait (Comment ça marche pour les développeurs)