.NET 幫助

Azure Tables(對開發人員的運作方式)

發佈 2024年10月24日
分享:

在廣闊的雲端運算領域中,資料儲存對於塑造現代應用程式的架構和可擴充性起著關鍵作用。 Azure 表格由 Microsoft Azure 提供的完全託管 NoSQL 資料存儲「Storage」,為開發者提供了一個儲存結構化雲端資料的多功能解決方案。 讓我們開始一段旅程,探索 Azure 表格儲存的功能、用例和優勢。

了解 Azure 表存儲

Azure Table Storage 是一種基於雲端的 NoSQL 資料庫服務,提供結構化資料的無模式存儲。 Azure Tables 提供基於鍵值對的數據模型,其中每個實體都由分區鍵和行鍵唯一識別。 此設計可高效查詢和檢索資料,非常適合需要快速存取大型資料集的情境。

如果您正在考慮選擇 Azure Table Storage 或關聯式資料庫來管理結構化資料,Azure Table Storage 處理大型數據集的能力以及與 Azure 生態系統的整合能力,使 Azure Table Storage 對於開發者工具箱來說是一個方便的選擇。

主要特色與功能

  1. 無綱設計: 與傳統的關聯式資料庫不同,Azure Table Storage 不對數據使用綱要。 這種靈活性允許開發人員在同一張表中存儲具有不同結構的實體,有助於敏捷開發並適應不斷變化的數據需求。

  2. 可擴展性和性能: Azure 表格儲存專為可擴展性而設計,能夠輕鬆處理大量數據。 它會自動擴展以適應不斷增加的工作負載,並提供可預測的性能,使其適合高吞吐量應用和需要低延遲數據訪問的場景。

  3. 分區與負載平衡: Azure 表格儲存中的資料是依據分區鍵進行分區,從而實現資料在多個儲存節點中的高效分配。 這種分區策略允許水平擴展和負載平衡,以確保最佳性能和資源利用。

  4. 次級索引: 雖然 Azure 表儲存主要使用分割區鍵和行鍵來檢索數據,但它也透過使用複合鍵和查詢投影來支援次級索引。 此功能使開發人員能夠執行有效的範圍查詢,並根據次要屬性篩選數據,從而提高數據訪問模式的靈活性。

  5. 與 Azure 生態系統的整合:Azure Table Storage 可以無縫地與其他 Azure 服務整合,比如 Azure Functions、Azure Cosmos DB 和 Azure Logic Apps,使開發人員能夠輕鬆構建端到端的解決方案。 無論是使用無伺服器功能處理資料流,還是使用高級分析工具分析數據,Azure Table Storage 作為建立可擴展和彈性應用程式的基礎元件。

使用案例

Azure 表格儲存服務滿足各種行業的多種使用情境,包括:

  1. 物聯網(物聯網):** Azure 表格存储非常适合存储来自物联网设备的遥测数据,支持实时数据摄取、分析和可视化。 其可擴展性和性能使其成為處理物聯網部署所產生的大量數據的理想選擇。

  2. 內容管理: 對於需要結構化存儲內容元數據的應用程式,例如博客、文章和用戶生成的內容,Azure 表格儲存提供了一個具成本效益且可擴充的解決方案。 其無模式設計允許靈活的模式演變,能夠隨時間的推移適應內容結構的變化。

  3. Session State Management: Azure 表格儲存可以用來儲存網路應用程式的會話狀態資料,提供一個分散式且可擴展的會話管理解決方案。 通過將會話狀態卸載到 Azure 表存儲,開發人員可以在負載平衡環境中實現更佳的可擴展性、容錯能力和會話親和性。

  4. 分散式系統: 在分散式系統架構中,Azure Table Storage 作為基礎數據存儲,用於維持元件之間的共享狀態和協調。 其分區和擴展性功能使其非常適合需要分布式快取、配置管理及微服務之間協調的場景。

IronPDF 介紹

Azure Tables(開發人員如何工作):圖 1

IronPDF是一個 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 Tables 生成 PDF 文件

首先,按照如下所示使用 Visual Studio 創建一個控制台應用程式:

Azure Tables(開發人員如何使用):圖 2

提供專案名稱:

Azure Tables(對開發者的工作原理):圖 3

提供 .NET 版本:

Azure Tables(對開發者的運作方式):圖 4

安裝這個IronPDF從 NuGet 套件管理員中獲取套件:

Azure 表格(對開發者的運作方式):圖 5

要訪問 Azure 表庫,我們將使用稱為 Azure.Data.Tables 的 Azure 表客戶端庫,可以在 NuGet 套件管理器中找到,Azure 表服務客戶端提供了與 Azure 表存儲交互的功能。

Azure 表格(它對開發者的運作方式):圖 6

建立 Azure 儲存帳戶以開始使用 Azure Tables:

Azure Tables(開發人員如何使用):圖 7

按一下檢閱並建立。

在您的程式中輸入以下代碼,以使用 Azure Tables 生成 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 Table Storage 進行交互並使用 IronPDF 生成 PDF:

  1. Azure Table Storage 互動

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

    • 然後檢查是否存在名為 "IronDemo" 的表; 如果沒有,它就會創建它。

    • 添加新實體(類似於資料庫列)到表格中,指定屬性例如 "Book"、"Price" 和 "Quantity"。
    • 查詢表格以根據篩選條件檢索實體。
  2. 使用 IronPDF 生成 PDF

    • 使用 IronPDF 的 ChromePdfRenderer 將 HTML 內容渲染為 PDF 文件。
    • 從包含有關 Azure Table Storage 操作詳細信息的動態 HTML 內容生成 PDF。

    Azure 表格(開發者如何運作):圖 8

PDF

Azure Tables(它如何為開發人員工作):圖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 Table Storage 使開發人員能夠構建具彈性和敏捷性的應用程式,以適應現代商業環境的動態需求。

無論是管理 IoT 數據流、儲存內容元數據還是協調分佈式系統,Azure 表存儲都提供了一個多功能的平台,以釋放雲原生應用程式的全部潛力。 隨著組織不斷採用數位轉型計劃並遷移至雲端,Azure Table Storage 仍然是現代資料存儲架構的基石,推動創新並使企業在日益數據驅動的世界中蓬勃發展。

IronPDF是一個用於程式化創建和操作 PDF 文件的 .NET 函式庫。 它允許開發者將 HTML、ASPX 頁面、圖片和文字轉換為 PDF 文件。 主要功能包括 HTML 转 PDF 转換、PDF 編輯功能,以及支援各種 .NET 環境,這使其成為在 .NET 應用程式中生成和處理 PDF 文件的多功能工具。

下一個 >
C# ConfigureAwait(它如何為開發人員工作)

準備開始了嗎? 版本: 2024.12 剛剛發布

免費 NuGet 下載 總下載次數: 11,622,374 查看許可證 >