.NET 帮助

Azure 表(如何为开发人员工作)

发布 2024年十月24日
分享:

在云计算的广阔前景中,数据存储在塑造现代应用程序的架构和可扩展性方面发挥着举足轻重的作用。 Azure 表格Storage 是 Microsoft Azure 提供的一种完全托管的 NoSQL 数据存储,为开发人员提供了在云中存储结构化数据的多功能解决方案。 让我们开始探索 Azure 表存储的功能、用例和优势的旅程。

了解 Azure 表存储

Azure Table Storage 是一种基于云的 NoSQL 数据库服务,提供无模式的结构化数据存储。 Azure 表提供基于键值对的数据模型,其中每个实体都由一个分区键和一个行键唯一标识。 这种设计可以高效地查询和检索数据,非常适合需要快速访问大型数据集的场景。

如果您想在 Azure 表存储或关系数据库之间做出选择,以管理结构化数据,那么 Azure 表存储处理大型数据集的能力以及与 Azure 生态系统的集成使 Azure 表存储成为开发人员工具包中的得力助手。

主要特点和功能

  1. 无模式设计: 与传统的关系数据库不同,Azure 表存储不会对数据执行模式。 这种灵活性允许开发人员在同一个表中存储不同结构的实体,从而促进敏捷开发并适应不断变化的数据要求。

  2. 可扩展性和性能: Azure 表存储专为可扩展性而设计,能够轻松处理海量数据。 它可自动扩展以适应不断增加的工作负载,并提供可预测的性能,因此适用于高吞吐量应用和需要低延迟数据访问的场景。

  3. 分区和负载平衡: Azure 表存储中的数据根据分区密钥进行分区,以便在多个存储节点之间高效分配数据。 这种分区策略可实现横向扩展和负载平衡,确保最佳性能和资源利用率。

  4. 二级索引: 虽然 Azure 表存储主要使用分区键和行关键字进行数据检索,但它也通过使用复合键和查询投影来支持二级索引。 该功能使开发人员能够执行高效的范围查询,并根据次要属性过滤数据,从而提高数据访问模式的灵活性。

  5. 与 Azure 生态系统集成: Azure Table Storage 与 Azure Functions、Azure Cosmos DB 和 Azure Logic Apps 等其他 Azure 服务无缝集成,使开发人员能够轻松构建端到端解决方案。 无论是使用无服务器功能处理数据流,还是使用高级分析工具分析数据,Azure 表存储都是构建可扩展和弹性应用程序的基础组件。

使用案例

Azure Table Storage 适用于各行各业的各种用例,包括

  1. **物联网(物联网)Azure 表存储非常适合用于存储物联网设备的遥测数据,从而实现实时数据摄取、分析和可视化。 它的可扩展性和性能使其成为处理物联网部署所产生的海量数据的理想选择。

  2. 内容管理: 对于需要结构化存储内容元数据(如博客、文章和用户生成的内容)的应用程序,Azure 表存储提供了经济高效且可扩展的解决方案。 其无模式设计允许灵活的模式演变,以适应内容结构随时间的变化。

  3. 会话状态管理: Azure 表存储可用于存储网络应用程序的会话状态数据,提供分布式和可扩展的会话管理解决方案。 通过将会话状态卸载到 Azure 表存储,开发人员可以在负载平衡环境中实现更好的可扩展性、容错性和会话亲和性。

  4. 分布式系统: 在分布式系统架构中,Azure 表存储是维护共享状态和组件间协调的基础数据存储。 它的分区和可扩展性功能使其非常适合需要分布式缓存、配置管理和微服务间协调的场景。

IronPDF 简介

Azure 表格(如何为开发人员工作):图 1

IronPDFC# PDF 是一个 C# PDF 库,可在 .NET 项目中生成、管理 PDF 文档并从中提取内容。 以下是一些主要特点:

  1. HTML 转换为 PDF**:

    • 将 HTML、CSS 和 JavaScript 内容转换为 PDF 文档。

    • Chrome 浏览器渲染引擎可生成像素完美的 PDF。
    • 根据输入的 URL、HTML 文件或 HTML 字符串生成 PDF。
  2. 图像和内容转换

    • 将图像转换成 PDF 或从 PDF 转换成图像。

    • 从现有 PDF 文档中提取文本和图像。
    • 支持各种图片格式,如 JPG、PNG 等。
  3. 编辑和处理

    • 设置 PDF 的属性、安全性和权限。

    • 添加数字签名。
    • 编辑元数据和修订历史。
  4. 跨平台支持

    • 适用于 .NET Core(8、7、6、5 和 3.1+), .NET 标准(2.0+)和 .NET Framework(4.6.2+).

    • 兼容 Windows、Linux 和 macOS。
    • 在 NuGet 上提供,便于安装。

使用 IronPDF 和 Azure 表生成 PDF 文档

首先使用 Visual Studio 创建一个控制台应用程序,如下所示:

Azure 表格(如何为开发人员工作):图 2

提供项目名称:

Azure 表格(如何为开发人员工作):图 3

提供 .NET 版本:

Azure 表格(如何为开发人员工作):图 4

安装IronPDF从 NuGet 软件包管理器下载软件包:

Azure 表格(如何为开发人员工作):图 5

对于访问 Azure 表库,我们将使用名为 Azure.Data.Tables 的 Azure 表客户端库,该库可在 NuGet 包管理器中找到,Azure 表服务客户端提供了与 Azure 表存储交互的功能。

Azure 表格(如何为开发人员工作):图 6

创建 Azure Storage 帐户,开始使用 Azure 表:

Azure 表格(如何为开发人员工作):图 7

单击审核并创建。

在您的程序中输入以下代码,使用 Azure 表生成 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#

代码解释

代码演示了如何与 Azure 表存储交互并使用 IronPDF 生成 PDF:

  1. Azure 表存储交互

    • 它使用 Azure SDK for .NET(Azure.Data.Tables)连接到 Azure 表存储。

    • 例如,在翻译 "IronDemo "时,首先检查是否存在名为 "IronDemo "的表; 如果没有,它就会产生。

    • 添加新实体(类似于数据库行)在表格中指定 "书籍"、"价格 "和 "数量 "等属性。
    • 根据过滤条件查询表以检索实体。
  2. 使用 IronPDF 生成 PDF

    • 使用 IronPDF 的 ChromePdfRenderer 将 HTML 内容呈现为 PDF 文件。
    • 根据动态 HTML 内容生成 PDF,其中包括有关 Azure 表存储操作的详细信息。

    Azure 表格(如何为开发人员工作):图 8

PDF

Azure 表格(如何为开发人员工作):图 9

IronPDF 许可

IronPDF 软件包需要许可证才能运行。 在访问软件包之前,在应用程序的开头添加以下代码

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

试用许可证可用这里.

结论

Azure Table Storage 是 Microsoft 致力于为开发人员提供可扩展、灵活且经济高效的云数据存储解决方案的有力证明。 Azure 表存储具有无模式设计、横向可扩展性以及与 Azure 生态系统的无缝集成等特点,使开发人员能够构建弹性、灵活的应用程序,以适应现代业务环境的动态需求。

无论是管理物联网数据流、存储内容元数据,还是协调分布式系统,Azure Table Storage 都为释放云原生应用程序的全部潜力提供了一个多功能平台。 随着企业不断接受数字化转型计划并迁移到云中,Azure Table Storage 仍然是现代数据存储架构的基石,它能够推动创新,使企业在数据日益驱动的世界中蓬勃发展。

IronPDFPDF 是一个 .NET 库,用于以编程方式创建和处理 PDF 文档。 它允许开发人员将 HTML、ASPX 页面、图像和文本转换为 PDF 文件。 主要功能包括 HTML 到 PDF 的转换、PDF 编辑功能以及对各种 .NET 环境的支持,使其成为在 .NET 应用程序中生成和处理 PDF 文档的多功能工具。

下一步 >
C# ConfigureAwait(面向开发人员的工作原理)

准备开始了吗? 版本: 2024.12 刚刚发布

免费NuGet下载 总下载量: 11,622,374 查看许可证 >