在實際環境中測試
在生產環境中測試無浮水印。
在任何需要的地方都能運作。
在廣闊的雲端運算領域中,資料儲存對於塑造現代應用程式的架構和可擴充性起著關鍵作用。 Azure 表格由 Microsoft Azure 提供的完全託管 NoSQL 資料存儲「Storage」,為開發者提供了一個儲存結構化雲端資料的多功能解決方案。 讓我們開始一段旅程,探索 Azure 表格儲存的功能、用例和優勢。
Azure Table Storage 是一種基於雲端的 NoSQL 資料庫服務,提供結構化資料的無模式存儲。 Azure Tables 提供基於鍵值對的數據模型,其中每個實體都由分區鍵和行鍵唯一識別。 此設計可高效查詢和檢索資料,非常適合需要快速存取大型資料集的情境。
如果您正在考慮選擇 Azure Table Storage 或關聯式資料庫來管理結構化資料,Azure Table Storage 處理大型數據集的能力以及與 Azure 生態系統的整合能力,使 Azure Table Storage 對於開發者工具箱來說是一個方便的選擇。
無綱設計: 與傳統的關聯式資料庫不同,Azure Table Storage 不對數據使用綱要。 這種靈活性允許開發人員在同一張表中存儲具有不同結構的實體,有助於敏捷開發並適應不斷變化的數據需求。
可擴展性和性能: Azure 表格儲存專為可擴展性而設計,能夠輕鬆處理大量數據。 它會自動擴展以適應不斷增加的工作負載,並提供可預測的性能,使其適合高吞吐量應用和需要低延遲數據訪問的場景。
分區與負載平衡: Azure 表格儲存中的資料是依據分區鍵進行分區,從而實現資料在多個儲存節點中的高效分配。 這種分區策略允許水平擴展和負載平衡,以確保最佳性能和資源利用。
次級索引: 雖然 Azure 表儲存主要使用分割區鍵和行鍵來檢索數據,但它也透過使用複合鍵和查詢投影來支援次級索引。 此功能使開發人員能夠執行有效的範圍查詢,並根據次要屬性篩選數據,從而提高數據訪問模式的靈活性。
Azure 表格儲存服務滿足各種行業的多種使用情境,包括:
物聯網(物聯網):** Azure 表格存储非常适合存储来自物联网设备的遥测数据,支持实时数据摄取、分析和可视化。 其可擴展性和性能使其成為處理物聯網部署所產生的大量數據的理想選擇。
內容管理: 對於需要結構化存儲內容元數據的應用程式,例如博客、文章和用戶生成的內容,Azure 表格儲存提供了一個具成本效益且可擴充的解決方案。 其無模式設計允許靈活的模式演變,能夠隨時間的推移適應內容結構的變化。
Session State Management: Azure 表格儲存可以用來儲存網路應用程式的會話狀態資料,提供一個分散式且可擴展的會話管理解決方案。 通過將會話狀態卸載到 Azure 表存儲,開發人員可以在負載平衡環境中實現更佳的可擴展性、容錯能力和會話親和性。
IronPDF是一個 C# PDF 函式庫,允許在 .NET 專案中生成、管理和提取 PDF 文件的內容。 以下是一些主要功能:
HTML 轉換為 PDF:
將 HTML、CSS 和 JavaScript 內容轉換為 PDF 文件。
圖片和內容轉換:
將圖像轉換成 PDF 或從 PDF 轉換圖像。
編輯和操作:
設定 PDF 的屬性、安全性和許可權。
跨平台支持:
適用於 .NET Core(8, 7, 6, 5, 和 3.1+).NET 標準(2.0+),和 .NET Framework(4.6.2+).
首先,按照如下所示使用 Visual Studio 創建一個控制台應用程式:
提供專案名稱:
提供 .NET 版本:
安裝這個IronPDF從 NuGet 套件管理員中獲取套件:
要訪問 Azure 表庫,我們將使用稱為 Azure.Data.Tables 的 Azure 表客戶端庫,可以在 NuGet 套件管理器中找到,Azure 表服務客戶端提供了與 Azure 表存儲交互的功能。
建立 Azure 儲存帳戶以開始使用 Azure Tables:
按一下檢閱並建立。
在您的程式中輸入以下代碼,以使用 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
該代碼演示了如何與 Azure Table Storage 進行交互並使用 IronPDF 生成 PDF:
Azure Table Storage 互動:
它使用 Azure SDK for .NET(Azure.Data.Tables)連接到 Azure 表存儲。
然後檢查是否存在名為 "IronDemo" 的表; 如果沒有,它就會創建它。
使用 IronPDF 生成 PDF:
IronPDF 套件需要許可證才能運行。 在存取封包之前,請在應用程式的開頭添加以下程式碼
IronPdf.License.LicenseKey = "IRONPDF-KEY";
IronPdf.License.LicenseKey = "IRONPDF-KEY";
IRON VB CONVERTER ERROR developers@ironsoftware.com
試用許可證可用這裡.
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 文件的多功能工具。