Pruebas en un entorno real
Pruebe en producción sin marcas de agua.
Funciona donde lo necesites.
En el vasto panorama de la computación en nube, el almacenamiento de datos desempeña un papel fundamental en la configuración de la arquitectura y la escalabilidad de las aplicaciones modernas. Tabla Azure Storage, un almacén de datos NoSQL totalmente gestionado proporcionado por Microsoft Azure, ofrece a los desarrolladores una solución versátil para almacenar datos estructurados en la nube. Embarquémonos en un viaje para explorar las capacidades, los casos de uso y las ventajas de Azure Table Storage.
Azure Table Storage es un servicio de base de datos NoSQL basado en la nube que proporciona almacenamiento sin esquema de datos estructurados. Azure Tables ofrece un modelo de datos basado en pares clave-valor, en el que cada entidad se identifica de forma única mediante una clave de partición y una clave de fila. Este diseño permite realizar consultas y recuperar datos de forma eficaz, por lo que resulta ideal para situaciones que requieren un acceso rápido a grandes conjuntos de datos.
Si estás tratando de decidir entre Azure Table Storage o una base de datos relacional para gestionar tus datos estructurados, la capacidad de Azure Table Storage para manejar grandes conjuntos de datos y la integración con el ecosistema Azure hace que Azure Table Storage sea útil para tener en tu kit de herramientas de desarrollador.
**A diferencia de las bases de datos relacionales tradicionales, Azure Table Storage no impone un esquema a los datos. Esta flexibilidad permite a los desarrolladores almacenar entidades con diferentes estructuras dentro de la misma tabla, lo que facilita un desarrollo ágil y se adapta a la evolución de los requisitos de datos.
Escalabilidad y rendimiento: Azure Table Storage está diseñado para la escalabilidad, capaz de manejar cantidades masivas de datos con facilidad. Se adapta automáticamente a cargas de trabajo cada vez mayores y proporciona un rendimiento predecible, por lo que es adecuado para aplicaciones de alto rendimiento y escenarios que requieren acceso a datos de baja latencia.
Particionamiento y equilibrio de carga: Los datos de Azure Table Storage se particionan en función de la clave de partición, lo que permite una distribución eficiente de los datos en varios nodos de almacenamiento. Esta estrategia de partición permite la escalabilidad horizontal y el equilibrio de carga, garantizando un rendimiento y una utilización de recursos óptimos.
Índices secundarios: Aunque Azure Table Storage utiliza principalmente la clave de partición y la clave de fila para la recuperación de datos, también admite índices secundarios mediante el uso de claves compuestas y proyecciones de consulta. Esta función permite a los desarrolladores realizar consultas de rango eficientes y filtrar datos basándose en atributos secundarios, mejorando la flexibilidad de los patrones de acceso a datos.
Azure Table Storage atiende a una amplia gama de casos de uso en diversos sectores, entre los que se incluyen:
**Internet de las cosas(IoT)azure Table Storage es ideal para almacenar datos de telemetría de dispositivos IoT, lo que permite la ingestión, el análisis y la visualización de datos en tiempo real. Su escalabilidad y rendimiento la hacen ideal para manejar los volúmenes masivos de datos generados por los despliegues de IoT.
Gestión de contenido: Para aplicaciones que requieren almacenamiento estructurado de metadatos de contenido, como blogs, artículos y contenido generado por el usuario, Azure Table Storage proporciona una solución rentable y escalable. Su diseño sin esquema permite una evolución flexible del esquema, adaptándose a los cambios en la estructura del contenido con el paso del tiempo.
**Azure Table Storage puede utilizarse para almacenar datos de estado de sesión para aplicaciones web, proporcionando una solución de gestión de sesiones distribuida y escalable. Al descargar el estado de la sesión a Azure Table Storage, los desarrolladores pueden lograr una mejor escalabilidad, tolerancia a fallos y afinidad de sesión en entornos de carga equilibrada.
IronPDF es una biblioteca PDF en C# que permite generar, gestionar y extraer contenido de documentos PDF en proyectos .NET. Estas son algunas de sus principales características:
Conversión de HTML a PDF:
Convierta contenido HTML, CSS y JavaScript en documentos PDF.
Conversión de imágenes y contenidos:
Convierte imágenes a y desde PDF.
Edición y manipulación:
Establezca las propiedades, la seguridad y los permisos de los archivos PDF.
Soporte multiplataforma:
Funciona con .NET Core(8, 7, 6, 5 y 3.1+.).NET Standard(2.0+)y .NET Framework(4.6.2+).
Para empezar, cree una aplicación de consola utilizando Visual Studio como se indica a continuación:
Proporcione el nombre del proyecto:
Proporcione la versión .NET:
Instale elIronPDF del gestor de paquetes NuGet:
Para acceder a la biblioteca Azure Tables utilizaremos la biblioteca cliente Azure Tables llamada Azure.Data.Tables que se puede encontrar en el gestor de paquetes NuGet, el cliente Azure Table Service proporciona funcionalidad para interactuar con Azure Table Storage.
Crea una cuenta de Azure Storage para empezar a utilizar Azure Tables:
Haga clic en revisar y crear.
Introduce el código siguiente en tu programa para utilizar Azure Tables para generar un documento 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
El código muestra cómo interactuar con Azure Table Storage y generar un PDF utilizando IronPDF:
Interacción con el almacenamiento de tablas Azure:
Utiliza el SDK de Azure para .NET(Azure.Data.Tables) para conectarse a Azure Table Storage.
A continuación, comprueba si existe una tabla denominada "IronDemo"; si no, lo crea.
Generación de PDF con IronPDF:
El paquete IronPDF requiere una licencia para funcionar. Añada el código siguiente al inicio de la aplicación antes de acceder al paquete
IronPdf.License.LicenseKey = "IRONPDF-KEY";
IronPdf.License.LicenseKey = "IRONPDF-KEY";
IRON VB CONVERTER ERROR developers@ironsoftware.com
Licencia de prueba disponibleaquí.
Azure Table Storage es un testimonio del compromiso de Microsoft de ofrecer a los desarrolladores soluciones de almacenamiento de datos en la nube escalables, flexibles y rentables. Gracias a su diseño sin esquemas, su escalabilidad horizontal y su perfecta integración con el ecosistema Azure, Azure Table Storage permite a los desarrolladores crear aplicaciones resistentes y ágiles que pueden adaptarse a las demandas dinámicas de los entornos empresariales modernos.
Ya se trate de gestionar flujos de datos IoT, almacenar metadatos de contenido u orquestar sistemas distribuidos, Azure Table Storage ofrece una plataforma versátil para liberar todo el potencial de las aplicaciones nativas de la nube. A medida que las organizaciones continúan adoptando iniciativas de transformación digital y migrando a la nube, Azure Table Storage sigue siendo una piedra angular de las arquitecturas modernas de almacenamiento de datos, impulsando la innovación y permitiendo a las empresas prosperar en un mundo cada vez más impulsado por los datos.
IronPDF es una biblioteca .NET que se utiliza para crear y manipular documentos PDF mediante programación. Permite a los desarrolladores convertir HTML, páginas ASPX, imágenes y texto en archivos PDF. Entre las principales características se incluyen la conversión de HTML a PDF, las funciones de edición de PDF y la compatibilidad con varios entornos .NET, lo que la convierte en una herramienta versátil para generar y manejar documentos PDF dentro de aplicaciones .NET.
9 productos API .NET para sus documentos de oficina