¿Puedo ejecutar IronXL con .NET en Azure?

Sí. IronXL puede ser usado en Azure para Generar QR & Códigos de Barras en Aplicaciones C# & VB .NET, y también Leer Códigos de Barras & Códigos QR desde Imágenes Escaneadas.

IronXL ha sido probado a fondo en múltiples plataformas Azure, incluyendo sitios web MVC, Azure Functions y muchos más.


Primer paso

1. Instale IronXL para empezar

Primera instalación con NuGet: https://www.nuget.org/packages/IronXL.Excel

Install-Package IronXL.Excel

Tutorial

2. Rendimiento y niveles de Azure

Recomendamos que los niveles de alojamiento Azure B1 son muy adecuados para las necesidades de biblioteca de nuestros usuarios finales. Si están creando un sistema de alto rendimiento, puede que sea necesario actualizarlo.

3. Elección del marco

Hemos comprobado que tanto IronXL para Core como para Framework funcionan en Azure. Las aplicaciones .NET Standard parecen tener una pequeña ventaja de rendimiento en cuanto a velocidad y estabilidad, pero utilizan más memoria en el proceso.

El alojamiento gratuito de Azure es lento

Los niveles gratuitos y compartidos de Azure, así como el plan de consumo, no son adecuados para el procesamiento de QR. Recomendamos Azure B1 hosting/Plan Premium, que es lo que utilizamos nosotros mismos.

4. Docker en Azure

Una forma de obtener la capacidad de controlar el rendimiento en Azure es utilizar aplicaciones y funciones IronXL desde contenedores Docker.

Disponemos de un IronXL Azure Docker tutorial para instancias Linux y Windows y es una lectura recomendada.

5. Soporte oficial de Azure Function

Función Azure compatible con IronXL (Funciones Azure V3). Hasta ahora no se ha probado con la V4, pero está en nuestra cola.

Ejemplo de código de función Azure

Probado en Azure Functions v3.3.1.0+. Código de ejemplo

    [FunctionName("barcode")]
    public static HttpResponseMessage Run(
            [HttpTrigger(AuthorizationLevel.Anonymous, "get", "post", Route = null)] HttpRequest req,
            ILogger log)
    {
        log.LogInformation("C# HTTP trigger function processed a request.");
        IronXL.License.LicenseKey = "Key";
        var MyBarCode = BarcodeWriter.CreateBarcode("IronXL Test", BarcodeEncoding.QRCode);
        var result = new HttpResponseMessage(HttpStatusCode.OK);
        result.Content = new ByteArrayContent(MyBarCode.ToJpegBinaryData());
        result.Content.Headers.ContentDisposition =
                new ContentDispositionHeaderValue("attachment") { FileName = $"{DateTime.Now.ToString("yyyyMMddmm")}.jpg" };
        result.Content.Headers.ContentType =
                new MediaTypeHeaderValue("image/jpeg");
        return result;
    }
    [FunctionName("barcode")]
    public static HttpResponseMessage Run(
            [HttpTrigger(AuthorizationLevel.Anonymous, "get", "post", Route = null)] HttpRequest req,
            ILogger log)
    {
        log.LogInformation("C# HTTP trigger function processed a request.");
        IronXL.License.LicenseKey = "Key";
        var MyBarCode = BarcodeWriter.CreateBarcode("IronXL Test", BarcodeEncoding.QRCode);
        var result = new HttpResponseMessage(HttpStatusCode.OK);
        result.Content = new ByteArrayContent(MyBarCode.ToJpegBinaryData());
        result.Content.Headers.ContentDisposition =
                new ContentDispositionHeaderValue("attachment") { FileName = $"{DateTime.Now.ToString("yyyyMMddmm")}.jpg" };
        result.Content.Headers.ContentType =
                new MediaTypeHeaderValue("image/jpeg");
        return result;
    }
<FunctionName("barcode")>
Public Shared Function Run(<HttpTrigger(AuthorizationLevel.Anonymous, "get", "post", Route := Nothing)> ByVal req As HttpRequest, ByVal log As ILogger) As HttpResponseMessage
		log.LogInformation("C# HTTP trigger function processed a request.")
		IronXL.License.LicenseKey = "Key"
		Dim MyBarCode = BarcodeWriter.CreateBarcode("IronXL Test", BarcodeEncoding.QRCode)
		Dim result = New HttpResponseMessage(HttpStatusCode.OK)
		result.Content = New ByteArrayContent(MyBarCode.ToJpegBinaryData())
		result.Content.Headers.ContentDisposition = New ContentDispositionHeaderValue("attachment") With {.FileName = $"{DateTime.Now.ToString("yyyyMMddmm")}.jpg"}
		result.Content.Headers.ContentType = New MediaTypeHeaderValue("image/jpeg")
		Return result
End Function
VB   C#