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 das Azure B1 Hosting-Niveau sehr gut für die Bibliotheksbedürfnisse unserer Endnutzer geeignet ist. 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 umfassendes IronXL Azure Docker-Tutorial für Linux- und Windows-Instanzen, das zur Lektüre empfohlen wird.
5. Offizielle Azure-Funktionsunterstützung
IronXL unterstützt Azure Function (Azure Functions 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("excel")]
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 workBook = WorkBook.Load("test-wb.xlsx");
var result = new HttpResponseMessage(HttpStatusCode.OK);
result.Content = new ByteArrayContent(workBook.ToByteArray());
result.Content.Headers.ContentDisposition = new ContentDispositionHeaderValue("attachment"){ FileName = $"{DateTime.Now:yyyyMMddmm}.xlsx" };
result.Content.Headers.ContentType = new MediaTypeHeaderValue("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
return result;
}
[FunctionName("excel")]
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 workBook = WorkBook.Load("test-wb.xlsx");
var result = new HttpResponseMessage(HttpStatusCode.OK);
result.Content = new ByteArrayContent(workBook.ToByteArray());
result.Content.Headers.ContentDisposition = new ContentDispositionHeaderValue("attachment"){ FileName = $"{DateTime.Now:yyyyMMddmm}.xlsx" };
result.Content.Headers.ContentType = new MediaTypeHeaderValue("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
return result;
}
<FunctionName("excel")>
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 workBook = WorkBook.Load("test-wb.xlsx")
Dim result = New HttpResponseMessage(HttpStatusCode.OK)
result.Content = New ByteArrayContent(workBook.ToByteArray())
result.Content.Headers.ContentDisposition = New ContentDispositionHeaderValue("attachment") With {.FileName = $"{DateTime.Now:yyyyMMddmm}.xlsx"}
result.Content.Headers.ContentType = New MediaTypeHeaderValue("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet")
Return result
End Function