Puis-je exécuter IronXL for .NET sur Azure ?
Oui. IronXL peut être utilisé sur Azure pour générer des codes QR et des codes-barres dans des applications C# et VB .NET, ainsi que pour lire des codes-barres et des codes QR à partir d'images scannées.
IronXL a été testé de manière approfondie sur plusieurs plateformes Azure, notamment les sites web MVC, Azure Functions, et bien d'autres encore.
Étape 1
1. Installer IronXL pour commencer
Première installation avec NuGet :https://www.nuget.org/packages/IronXL.Excel
Install-Package IronXL.Excel
Comment faire Tutoriel
2. Performances et niveaux Azure
Nous recommandons que les niveaux d'hébergement Azure B1 conviennent parfaitement aux besoins des bibliothèques de nos utilisateurs finaux. S'il s'agit d'un système à haut débit, il peut être nécessaire de l'améliorer.
3. Choix du cadre
Nous avons constaté qu'IronXL for Core et for Framework fonctionnent tous deux sur Azure. les applications Standard .NET semblent avoir un petit avantage en termes de vitesse et de stabilité, mais utilisent plus de mémoire en cours de traitement.
L'hébergement Azure gratuit est lent
Les niveaux gratuits et partagés d'Azure, ainsi que le plan de consommation, ne sont pas adaptés à QR Processing. Nous recommandons l'hébergement Azure B1/Plan Premium, que nous utilisons nous-mêmes.
4. Docker sur Azure
L'un des moyens d'acquérir la capacité de contrôler les performances sur Azure consiste à utiliser des applications et des fonctions IronXL à partir de conteneurs Docker.
Nous disposons d'uneDidacticiel IronXL Azure Docker pour les instances Linux et Windows et sa lecture est recommandée.
5. Support officiel des fonctions Azure
IronXL Support Azure Function(Azure Functions V3). Il n'a pas été testé avec la V4 jusqu'à présent mais il est dans notre file d'attente.
Exemple de code de fonction Azure
Testé sur Azure Functions v3.3.1.0+. Voici un exemple de code
[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