Kann ich IronXL mit .NET auf Azure ausführen?
Ja. IronXL kann auf Azure verwendet werden, um QR & Barcodes in C# & VB .NET Anwendungen zu generieren, und auch Barcodes & QR Codes aus gescannten Bildern zu lesen.
IronXL wurde gründlich auf mehreren Azure-Plattformen getestet, darunter MVC-Websites, Azure Functions und viele mehr.
Schritt 1
1. Installieren Sie IronXL, um loszulegen
Erste Installation mit NuGet:https://www.nuget.org/packages/IronXL.Excel
Install-Package IronXL.Excel
Anleitung zum Tutorial
2. Leistung und Azure-Tiers
Wir empfehlen, dass Azure B1-Hosting-Levels sehr gut für die Bibliotheksanforderungen unserer Endbenutzer geeignet sind. Wenn sie ein System mit hohem Durchsatz schaffen, muss dieses möglicherweise aufgerüstet werden.
3. Rahmenwahl
Wir haben festgestellt, dass IronXL for Core und for Framework beide auf Azure funktionieren. .NET-Standard-Anwendungen scheinen einen kleinen Leistungsvorteil in Bezug auf Geschwindigkeit und Stabilität zu haben, verbrauchen dabei aber mehr Speicher.
Azure Free Tier Hosting ist langsam
Azure Free und Shared Tiers sowie der Consumption Plan sind für QR Processing nicht geeignet. Wir empfehlen Azure B1 Hosting/Premium Plan, den wir selbst nutzen.
4. Docker auf Azure
Eine Möglichkeit, die Leistung auf Azure zu kontrollieren, ist die Verwendung von IronXL-Anwendungen und -Funktionen innerhalb von Docker-Containern.
Wir haben ein umfassendesIronXL Azure Docker-Anleitung für Linux- und Windows-Instanzen und ist eine empfehlenswerte Lektüre.
5. Offizielle Azure-Funktionsunterstützung
IronXL Unterstützung Azure Funktion(Azure-Funktionen V3). Es wurde bis jetzt noch nicht mit V4 getestet, aber es ist in unserer Warteschlange.
Beispiel für funktionierenden Azure-Funktionscode
Getestet mit Azure Functions v3.3.1.0+. Hier ein Beispielcode
[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