IRONSOFTWAREHOME
VIDEOS

Migrating from Cloudmersive Barcode API to IronBarcode

Curtis Chau
Curtis Chau
Updated: 19. Mai 2026

Dies ist die einfachste Migration in der Geschichte von .NET -Barcodes. Entfernen Sie den HTTP-Client. Fügen Sie ein NuGet-Paket hinzu. Die API-Schlüsselverwaltung wird gelöscht. Der Rest ist eine Suche-und-Ersetzungs-Maßnahme.

Das .NET SDK von Cloudmersive ist ein generierter REST API-Client – ein dünner Wrapper um HttpClient Aufrufe. Jeder Cloudmersive-spezifische Code in Ihrer Anwendung ist entweder eine Konfiguration für diesen Client, ein Aufruf über diesen Client oder eine Fehlerbehandlung für den Fall, dass Netzwerkanfragen fehlschlagen. Für IronBarcode wird keine dieser Infrastrukturen benötigt, da Barcodes lokal und ohne Netzwerkabhängigkeit verarbeitet werden.


Schnellstart: Drei Schritte

Schritt 1: Pakete tauschen

dotnet remove package Cloudmersive.APIClient.NET.Barcode
dotnet add package BarCode
SHELL

Schritt 2: Namensräume ersetzen

// Remove these
using Cloudmersive.APIClient.NET.Barcode.Api;
using Cloudmersive.APIClient.NET.Barcode.Client;

// Add this
using IronBarCode;

Schritt 3: API-Schlüssel-Einrichtung durch Lizenzschlüssel ersetzen

// Remove this
Configuration.Default.ApiKey.Add("Apikey", "YOUR-CLOUDMERSIVE-API-KEY");

// Replace with this — set once at application startup
IronBarCode.License.LicenseKey = "YOUR-LICENSE-KEY";

In einer ASP.NET Core-Anwendung wird der Lizenzschlüssel in Program.cs vor builder.Build() platziert:

using IronBarCode;

IronBarCode.License.LicenseKey = "YOUR-LICENSE-KEY";

var builder = WebApplication.CreateBuilder(args);
// ... rest of startup

Kosten: Ihre bisherigen Ausgaben vs. Ihre zukünftigen Ausgaben

Vor der Migration ist es ratsam, die tatsächlichen Kosten der Cloudmersive-Integration zu berechnen. Die Rechnung ist einfach:

Ihr tägliches VolumenMonatliche AnfragenCloudmersive StufeIronBarcode (einmalig)
100/Tag~3.000Basis $19,99/Monat$999
1.000/Tag~30.000Business Premier $99,99/Monat$999
5.000/Tag~150.000Mittleres Unternehmen $499,99/Monat$999
10.000/Tag~300.000Enterprise (kundenspezifisch)$999
25.000/Tag~750.000Enterprise (kundenspezifisch)1.499 $ (Plus, 3 Entwickler)

Wenn Sie mehr als ~63$/Monat für Cloudmersive bezahlen, amortisiert sich die Lite-Lizenz von IronBarcode innerhalb des ersten Jahres. Nach dem Break-even ist IronBarcode eine unbefristete Lizenz ohne Erneuerung und ohne Gebühren pro Anfrage.


Beispiele für die Code-Migration

QR-Code-Generierung

Der am häufigsten verwendete Cloudmersive-Generierungsaufruf ist direkt IronBarcode zugeordnet:

Vorher (Cloudmersive):

using Cloudmersive.APIClient.NET.Barcode.Api;
using Cloudmersive.APIClient.NET.Barcode.Client;

Configuration.Default.ApiKey.Add("Apikey", "YOUR-CLOUDMERSIVE-API-KEY");

var apiInstance = new GenerateBarcodeApi();

byte[] result = apiInstance.GenerateBarcodeQRCode("https://example.com");
File.WriteAllBytes("qr.png", result);

Nach (IronBarcode):

using IronBarCode;

IronBarCode.License.LicenseKey = "YOUR-LICENSE-KEY";

byte[] result = QRCodeWriter.CreateQrCode("https://example.com", 500)
    .ToPngBinaryData();
File.WriteAllBytes("qr.png", result);

// Or save directly
QRCodeWriter.CreateQrCode("https://example.com", 500)
    .SaveAsPng("qr.png");

Code-128-Generierung

Vorher (Cloudmersive):

using Cloudmersive.APIClient.NET.Barcode.Api;
using Cloudmersive.APIClient.NET.Barcode.Client;

Configuration.Default.ApiKey.Add("Apikey", "YOUR-CLOUDMERSIVE-API-KEY");
var apiInstance = new GenerateBarcodeApi();

byte[] result = apiInstance.GenerateBarcodeCode128("SHIP-2024031500428");
File.WriteAllBytes("barcode.png", result);

Nach (IronBarcode):

using IronBarCode;

IronBarCode.License.LicenseKey = "YOUR-LICENSE-KEY";

BarcodeWriter.CreateBarcode("SHIP-2024031500428", BarcodeEncoding.Code128)
    .SaveAsPng("barcode.png");

// Or get bytes directly
byte[] result = BarcodeWriter.CreateBarcode("SHIP-2024031500428", BarcodeEncoding.Code128)
    .ToPngBinaryData();

BarCode lesen

Vorher (Cloudmersive):

using Cloudmersive.APIClient.NET.Barcode.Api;
using Cloudmersive.APIClient.NET.Barcode.Client;

Configuration.Default.ApiKey.Add("Apikey", "YOUR-CLOUDMERSIVE-API-KEY");
var scanApi = new BarcodeScanApi();

using (var stream = File.OpenRead("barcode.png"))
{
    var result = scanApi.BarcodeScanImage(stream);
    if (result.Successful == true)
    {
        Console.WriteLine($"Value: {result.RawText}");
        Console.WriteLine($"Type: {result.BarcodeType}");
    }
}

Nach (IronBarcode):

using IronBarCode;

IronBarCode.License.LicenseKey = "YOUR-LICENSE-KEY";

var results = BarcodeReader.Read("barcode.png");
var result = results.First();
Console.WriteLine($"Value: {result.Value}");
Console.WriteLine($"Type: {result.Format}");

Asynchrones Barcode-Lesen

Wenn Ihre Cloudmersive-Integration die asynchrone API verwendet:

Vorher (Cloudmersive):

using Cloudmersive.APIClient.NET.Barcode.Api;
using Cloudmersive.APIClient.NET.Barcode.Client;

Configuration.Default.ApiKey.Add("Apikey", "YOUR-CLOUDMERSIVE-API-KEY");
var scanApi = new BarcodeScanApi();

using (var stream = File.OpenRead("barcode.png"))
{
    var result = await scanApi.BarcodeScanImageAsync(stream);
    return result.Successful == true ? result.RawText : null;
}

Nach (IronBarcode):

using IronBarCode;

IronBarCode.License.LicenseKey = "YOUR-LICENSE-KEY";

// IronBarcode is synchronous; wrap in Task.Run to free the calling thread for CPU-bound work
var results = await Task.Run(() => BarcodeReader.Read("barcode.png"));
return results.FirstOrDefault()?.Value;

Barcodes aus PDFs lesen

Cloudmersive bietet keine native PDF-Unterstützung. Falls Ihr bestehender Code Bilder aus PDFs extrahiert, bevor er sie scannt, ersetzen Sie diese gesamte Pipeline durch einen einzigen IronBarcode -Aufruf:

Vorher (Cloudmersive – erfordert separate PDF-Extraktion):

// Requires a separate PDF library to extract pages as images,
// then one Cloudmersive API call per extracted page image.
var scanApi = new BarcodeScanApi();
foreach (var pageImagePath in ExtractPdfPages("document.pdf"))
{
    using var stream = File.OpenRead(pageImagePath);
    var result = await scanApi.BarcodeScanImageAsync(stream);
    if (result.Successful == true)
    {
        Console.WriteLine($"Found: {result.RawText}");
    }
}

Nach (IronBarcode):

using IronBarCode;

IronBarCode.License.LicenseKey = "YOUR-LICENSE-KEY";

// One call — all pages, all barcodes, no image extraction step
var results = BarcodeReader.Read("document.pdf");
foreach (var result in results)
{
    Console.WriteLine($"Page {result.PageNumber}: {result.Value}");
}

Erkennung mehrerer Barcodes

Wenn Sie Code besitzen, der Dokumente mit mehreren Barcodes scannt:

Vorher (Cloudmersive – mehrere Anrufe erforderlich):

// Cloudmersive returns one barcode per scan — multiple calls for multiple barcodes
var scanApi = new BarcodeScanApi();
var barcodeValues = new List<string>();

foreach (var croppedRegion in CropBarcodeRegions("invoice.png"))
{
    using var stream = new MemoryStream(croppedRegion);
    var result = await scanApi.BarcodeScanImageAsync(stream);
    if (result.Successful == true)
        barcodeValues.Add(result.RawText);
}

Nach (IronBarcode):

using IronBarCode;

IronBarCode.License.LicenseKey = "YOUR-LICENSE-KEY";

var options = new BarcodeReaderOptions
{
    Speed = ReadingSpeed.Balanced,
    ExpectMultipleBarcodes = true,
};

// One call — returns all barcodes in the image
var results = BarcodeReader.Read("invoice.png", options);
var barcodeValues = results.Select(r => r.Value).ToList();

Entfernung nicht mehr benötigter Infrastruktur

Dies ist der Teil der Migration, bei dem man mehr Code löscht als neu schreibt.

HTTP-Ausnahmebehandlung entfernen

Bei Cloudmersive-Operationen kann es zu Netzwerkfehlern, HTTP 4xx/5xx-Antworten und Timeout-Ausnahmen kommen. Dies erzeugt typischerweise eine try/catch-Infrastruktur, die IronBarcode nicht benötigt:

// Remove all of this
try
{
    var result = await scanApi.BarcodeScanImageAsync(stream);
    // ...
}
catch (ApiException ex) when (ex.ErrorCode == 429)
{
    // Rate limited — wait and retry
    await Task.Delay(TimeSpan.FromSeconds(2));
    // retry logic...
}
catch (ApiException ex) when (ex.ErrorCode == 503)
{
    // Service unavailable — Cloudmersive is down
    _logger.LogError("Cloudmersive unavailable: {Message}", ex.Message);
    throw;
}
catch (HttpRequestException ex)
{
    // Network error
    _logger.LogError("Network failure: {Message}", ex.Message);
    throw;
}
catch (TaskCanceledException)
{
    // Timeout
    _logger.LogError("Cloudmersive request timed out");
    throw;
}

IronBarcode löst keine Netzwerk-Ausnahmen aus. Es wirft BarcodeException, wenn ein Barcode aus der Eingabe nicht dekodiert werden kann, was ein Inhaltsproblem und kein Infrastrukturproblem ist. Die vereinfachte Fehlerbehandlung:

using IronBarCode;

var results = BarcodeReader.Read("barcode.png");
if (!results.Any())
{
    _logger.LogWarning("No barcode detected in image");
}

Wiederholungslogik entfernen

Falls Ihre Cloudmersive-Integration Wiederholungsrichtlinien enthält – Polly, benutzerdefinierte Wiederholungsschleifen oder exponentielles Backoff –, entfernen Sie diese vollständig:

// Remove retry infrastructure
// var retryPolicy = Policy
//     .Handle<ApiException>()
//     .WaitAndRetryAsync(3, retryAttempt =>
//         TimeSpan.FromSeconds(Math.Pow(2, retryAttempt)));

// IronBarcode — no retry needed
var results = BarcodeReader.Read("barcode.png");

Ratenbegrenzungs-Tracking entfernen

Wenn Ihr Code die Anzahl der API-Aufrufe erfasst, um das monatliche Kontingent von Cloudmersive einzuhalten:

// Remove quota tracking
// private static int _monthlyCallCount = 0;
// private const int MonthlyLimit = 30000;
//
// if (Interlocked.Increment(ref _monthlyCallCount) > MonthlyLimit)
//     throw new InvalidOperationException("Monthly Cloudmersive quota exceeded");

// IronBarcode — no quota
var results = BarcodeReader.Read("barcode.png");

Netzwerk-Timeout-Konfiguration entfernen

Cloudmersive-Clients beinhalten häufig eine Timeout-Konfiguration. Entfernen Sie es:

// Remove timeout configuration
// Configuration.Default.Timeout = 30000; // 30 second timeout
// Configuration.Default.ConnectionTimeout = 5000;

// IronBarcode has no network timeout — no network

API-Schlüsselrotation entfernen

Wenn Ihre Anwendung API-Schlüssel nach einem Zeitplan rotiert oder sie in der Geheimnisverwaltung speichert:

// Simplify this pattern
// private string GetCloudmersiveApiKey() =>
//     _secretManager.GetSecret("cloudmersive-api-key-current");
//
// Configuration.Default.ApiKey["Apikey"] = GetCloudmersiveApiKey();

// IronBarcode — set once at startup
IronBarCode.License.LicenseKey = _configuration["IronBarcode:LicenseKey"];
// or literal: "YOUR-LICENSE-KEY"

Gängige Probleme bei der Migration

Cloudmersive gab byte[] für die Generierung zurück

Die Generierungsmethoden von Cloudmersive geben byte[] direkt zurück. IronBarcode gibt ein GeneratedBarcode Objekt zurück, das Ihnen mehr Optionen bietet:

// Cloudmersive returned byte[] directly
byte[] cloudmersiveResult = apiInstance.GenerateBarcodeQRCode("data");

// IronBarcode — call ToPngBinaryData() for the equivalent byte[]
byte[] ironBarcodeResult = BarcodeWriter.CreateBarcode("data", BarcodeEncoding.QRCode)
    .ToPngBinaryData();

// Or save directly (often simpler)
BarcodeWriter.CreateBarcode("data", BarcodeEncoding.QRCode)
    .SaveAsPng("output.png");

// Or get other formats
byte[] jpegBytes = BarcodeWriter.CreateBarcode("data", BarcodeEncoding.QRCode)
    .ToJpegBinaryData();

Cloudmersive Reading lieferte ein JSON-Antwortmodell zurück.

Das Scan-Ergebnis von Cloudmersive ist ein Response-Modell mit Eigenschaften wie Successful, RawText und BarcodeType. IronBarcode gibt typisierte Ergebnisobjekte zurück:

// Cloudmersive result model
if (cloudmersiveResult.Successful == true)
{
    string value = cloudmersiveResult.RawText;
    string type = cloudmersiveResult.BarcodeType;
}

// IronBarcode result — use .Value and .Format directly
var results = BarcodeReader.Read("barcode.png");
if (results.Any())
{
    string value = results.First().Value;
    string format = results.First().Format.ToString();
}

Mehrere Cloudmersive API-Instanztypen

Cloudmersive trennt die Generierung und das Scannen in GenerateBarcodeApi und BarcodeScanApi Instanzen. IronBarcode verwendet statische Klassen – es werden keine Instanzen benötigt:

// Cloudmersive — two separate API instances
var generateApi = new GenerateBarcodeApi();
var scanApi = new BarcodeScanApi();

// IronBarcode — static, no instances
// BarcodeWriter for generation
// BarcodeReader for reading
// QRCodeWriter for QR codes specifically

Migrations-Checkliste

Führen Sie diese Suchvorgänge in Ihrer Codebasis vor und nach der Migration durch, um sicherzustellen, dass Sie jede Cloudmersive-Referenz erfasst haben:

# Find all Cloudmersive references
grep -r "Cloudmersive" --include="*.cs" .
grep -r "GenerateBarcodeApi" --include="*.cs" .
grep -r "BarcodeScanApi" --include="*.cs" .
grep -r "Configuration.Default.ApiKey" --include="*.cs" .
grep -r '"Apikey"' --include="*.cs" .
grep -r "GenerateBarcodeQRCode" --include="*.cs" .
grep -r "GenerateBarcodeCode128" --include="*.cs" .
grep -r "BarcodeScanImage" --include="*.cs" .
grep -r "cloudmersive" --include="*.csproj" .
grep -r "cloudmersive" --include="*.json" .
SHELL

Nach der Migration sollten alle Suchvorgänge keine Ergebnisse mehr liefern. Überprüfen Sie anschließend, ob IronBarcode korrekt referenziert wird:

grep -r "IronBarCode" --include="*.cs" .
grep -r "BarcodeReader" --include="*.cs" .
grep -r "BarcodeWriter" --include="*.cs" .
SHELL

Konfigurationscheckliste

  • Entfernen Sie Cloudmersive.APIClient.NET.Barcode aus allen .csproj Dateien
  • Entfernen Sie den Cloudmersive API-Schlüssel aus appsettings.json, Umgebungsvariablen und Geheimnisspeichern
  • Fügen Sie das IronBarcode NuGet -Paket hinzu
  • Fügen Sie IronBarCode.License.LicenseKey Initialisierung beim Anwendungsstart hinzu
  • Entfernen von Wiederholungsrichtlinien und Schutzschaltern für Cloudmersive-Anrufe
  • Ratenbegrenzungs-Tracking-Code entfernen
  • Netzwerk-Timeout-Konfiguration entfernen

Checkliste für Tests

Nach Abschluss der Migration:

  • Überprüfen Sie, ob die QR-Code-Generierung gültige, scannbare Ergebnisse liefert.
  • Überprüfung der Code128- und anderer linearer Barcode-Generierungen
  • Überprüfung der Barcode-Lesbarkeit gängiger Bildformate (PNG, JPEG, BMP)
  • Testen Sie das Lesen von PDFs, wenn Sie PDF-Dokumente verarbeiten.
  • Testen Sie gegebenenfalls die Erkennung mehrerer Barcodes.
  • Sicherstellen, dass keine Cloudmersive-API-Aufrufe im Netzwerkverkehr auftreten
  • Prüfen Sie, ob die Anwendung auch ohne Internetverbindung korrekt funktioniert.

Was Sie nach der Migration gewinnen

Neben den Kosteneinsparungen beseitigt die Migration eine ganze Kategorie von betrieblichen Problemen:

Die Barcodeverarbeitung ist nicht mehr netzwerkabhängig. Ihre Dokumentenverarbeitungspipeline läuft unabhängig von der Verfügbarkeit von Cloudmersive, der Qualität Ihrer Internetverbindung oder Spitzenwerten der Netzwerklatenz.

Keine Quotenverwaltung mehr. Dokumentmengenspitzen zum Monatsende führen nicht mehr zu unerwarteten Überschreitungen oder Verarbeitungsfehlern.

Es verlassen keine Daten mehr Ihr Netzwerk. Barcode-Bilder, die sensible Kunden-, Finanz- oder Gesundheitsinformationen enthalten, verbleiben auf Ihrer Infrastruktur.

Einfacherer Code. Die für Cloudmersive-Produktionsintegrationen erforderliche Infrastruktur für Wiederholungsversuche, Timeout-Behandlung und HTTP-Ausnahmemanagement entfällt. Anstelle dessen erfolgt ein direkter Methodenaufruf.

Die Migration ist mechanisch. Die Vorteile liegen in der Struktur – die Abhängigkeit eines Arbeitsablaufs von einem externen Netzwerkdienst wird beseitigt, da dieser keinen solchen benötigt.

Curtis Chau
Technischer Autor

Curtis Chau hat einen Bachelor-Abschluss in Informatik von der Carleton University und ist spezialisiert auf Frontend-Entwicklung mit Expertise in Node.js, TypeScript, JavaScript und React. Leidenschaftlich widmet er sich der Erstellung intuitiver und ästhetisch ansprechender Benutzerschnittstellen und arbeitet gerne mit modernen Frameworks sowie der Erstellung gut strukturierter, optisch ansprechender Handbücher.

...
Weiterlesen

Verwandte Artikel

Key in blue circle

Holen Sie sich sofort Ihren kostenlosen 30-Tage-Testschlüssel.

Your trial license will be sent to your email address

Keine Einschränkungen. 100 % freigeschaltet. Keine Kreditkarte.

bullet_checkedIhr Testlizenzschlüssel wurde Ihnen per E-Mail gesendet.Keine Einschränkungen. 100 % freigeschaltet. Keine Kreditkarte.
  • Logo Aetna
  • Logo NASA
  • Logo GE
  • Logo Porsche
  • Logo USDA
  • Logo Qatar
Join Millions of Engineers who’ve tried IronPDF
AWS-Logo
Booking Badge

Von Millionen von Ingenieur*innen weltweit vertraut

Azure (WebApps, Funktionen v3)
Erhalten Sie Ihre unverbindliche Beratung
Füllen Sie das Formular unten aus oder senden Sie eine E-Mail an sales@ironsoftware.com
Ihre Daten werden immer vertraulich behandelt.
Von Millionen von Ingenieur*innen weltweit vertraut
Azure (WebApps, Funktionen v3)
Erhalten Sie sofort Ihren kostenlosen 30-Tage-Testschlüssel.
Ihr Testlizenzschlüssel wurde Ihnen per E-Mail gesendet.