IRONSOFTWAREHOME
VÍDEOS

Migração de Cloudmersive Barcode API para IronBarcode

Curtis Chau
Curtis Chau
Updated: 19 de maio de 2026

Esta é a migração mais simples na história dos códigos de barras em .NET . Remova o cliente HTTP. Adicionar um pacote NuGet . Exclua o gerenciamento de chaves de API. O resto é só localizar e substituir.

O SDK .NET da Cloudmersive é um cliente gerado de API REST — um invólucro fino em torno de chamadas HttpClient. Cada trecho de código específico do Cloudmersive em seu aplicativo é uma configuração para esse cliente, faz chamadas por meio desse cliente ou trata erros relacionados ao que acontece quando as solicitações de rede falham. Com o IronBarcode, nenhuma dessas infraestruturas é necessária, pois ele processa códigos de barras localmente, sem dependência de rede.


Início rápido: três etapas

Passo 1: Troque os pacotes

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

Etapa 2: Substituir Namespaces

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

// Add this
using IronBarCode;

Etapa 3: Substitua a configuração da chave de API pela chave de licença.

// 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";

Em uma aplicação ASP.NET Core, a chave de licença é colocada em Program.cs antes de builder.Build():

using IronBarCode;

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

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

Custo: O que você gastava antes versus o que você gastará agora.

Antes de migrar, vale a pena calcular quanto custará a integração com o Cloudmersive. A matemática é simples:

Seu volume diárioSolicitações mensaisNível CloudmersiveIronBarcode (uso único)
100/dia~3.000Básico $19,99/mês$999
1.000/dia~30.000Negócio Premier $99,99/mês$999
5.000/dia~150.000Médio Empreendimento $499,99/mês$999
10.000/dia~300.000Enterprise (personalizado)$999
25.000/dia~750.000Enterprise (personalizado)US$ 1.499 (Plus 3 desenvolvedores)

Se você está pagando mais de ~63/mês para Cloudmersive, a licença Lite do IronBarcode se paga dentro do primeiro ano. Após o ponto de equilíbrio, o IronBarcode é uma licença perpétua sem renovação e sem cobranças por solicitação.


Exemplos de migração de código

Geração de código QR

A chamada de geração Cloudmersive mais comum mapeia diretamente para o IronBarcode:

Antes (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);

Após (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");

Geração Code128

Antes (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);

Após (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();

Leitura de Código de Barras

Antes (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}");
    }
}

Após (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}");

Leitura assíncrona de código de barras

Se a sua integração com o Cloudmersive utiliza a API assíncrona:

Antes (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;
}

Após (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;

Leitura de códigos de barras em PDF

O Cloudmersive não possui suporte nativo para PDF. Se o seu código atual extrai imagens de PDFs antes da digitalização, substitua todo esse fluxo de trabalho por uma única chamada ao IronBarcode :

Antes (Cloudmersive — requer extração de PDF separada):

// 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}");
    }
}

Após (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}");
}

Detecção de múltiplos códigos de barras

Se você tiver um código que lê documentos com vários códigos de barras:

Antes (Cloudmersive — várias chamadas necessárias):

// 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);
}

Após (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();

Remover infraestrutura que não é mais necessária

Esta é a parte da migração em que você apaga mais código do que escreve.

Remover tratamento de exceções HTTP

As operações do Cloudmersive podem falhar devido a erros de rede, respostas HTTP 4xx/5xx e exceções de tempo limite. Normalmente, isso gera uma infraestrutura de try/catch que o IronBarcode não precisa:

// 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 não gera exceções de rede. Lança BarcodeException se um código de barras não puder ser decodificado a partir da entrada, o que é um problema de conteúdo em vez de um problema de infraestrutura. Tratamento de erros simplificado:

using IronBarCode;

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

Remover a lógica de repetição

Se a sua integração com o Cloudmersive incluir políticas de repetição — Polly, loops de repetição personalizados ou recuo exponencial — remova-as completamente:

// 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");

Remover o rastreamento de limite de taxa

Se o seu código monitora a contagem de chamadas à API para se manter dentro da cota mensal da Cloudmersive:

// 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");

Remover configuração de tempo limite de rede

Os clientes Cloudmersive geralmente incluem configuração de tempo limite. Remova-o:

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

// IronBarcode has no network timeout — no network

Remover rotação de chave de API

Se sua aplicação rotaciona chaves de API periodicamente ou as armazena em um sistema de gerenciamento de segredos:

// 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"

Problemas comuns de migração

Cloudmersive Retornou byte[] para Geração

Os métodos de geração da Cloudmersive retornam byte[] diretamente. IronBarcode retorna um objeto GeneratedBarcode que oferece mais opções:

// 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();

O Cloudmersive Reading retornou um modelo de resposta JSON.

O resultado da digitalização da Cloudmersive é um modelo de resposta com propriedades como Successful, RawText, e BarcodeType. IronBarcode retorna objetos de resultado tipados:

// 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();
}

Vários tipos de instâncias da API Cloudmersive

Cloudmersive separa geração e digitalização em instâncias GenerateBarcodeApi e BarcodeScanApi. IronBarcode usa classes estáticas — não são necessárias instâncias:

// 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

Lista de verificação para migração

Execute estas buscas em seu código-fonte antes e depois da migração para verificar se você identificou todas as referências ao Cloudmersive:

# 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

Após a migração, todas as pesquisas devem retornar zero resultados. Em seguida, verifique se o IronBarcode está referenciado corretamente:

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

Lista de verificação de configuração

  • Remova Cloudmersive.APIClient.NET.Barcode de todos os arquivos .csproj
  • Remova a chave de API da Cloudmersive de appsettings.json, variáveis ​​de ambiente e repositórios de segredos
  • Adicionar o pacote NuGet IronBarcode
  • Adicione a inicialização IronBarCode.License.LicenseKey na inicialização do aplicativo
  • Remover políticas de repetição e disjuntores para chamadas Cloudmersive
  • Remover código de rastreamento de limite de taxa
  • Remover configuração de tempo limite de rede

Lista de verificação de testes

Após a conclusão da migração:

  • Verificar se a geração do código QR produz um resultado válido e legível por scanner.
  • Verificar a geração de códigos de barras Code128 e outros códigos de barras lineares
  • Verificar a leitura de códigos de barras em formatos de imagem comuns (PNG, JPEG, BMP)
  • Teste a leitura de PDFs se você processa documentos em PDF.
  • Teste a detecção de múltiplos códigos de barras, se aplicável.
  • Confirme se não há chamadas à API Cloudmersive no tráfego de rede.
  • Confirme se o aplicativo funciona corretamente sem conexão com a internet.

O que você ganha após a migração

Além da redução de custos, a migração elimina toda uma série de preocupações operacionais:

Chega de processamento de código de barras dependente da rede. Seu fluxo de processamento de documentos funciona independentemente da disponibilidade do Cloudmersive, da qualidade da sua conexão com a internet ou de picos de latência na rede.

Chega de gestão de quotas. Os picos de volume de documentos no final do mês não geram mais custos adicionais inesperados nem falhas de processamento.

Não haverá mais saída de dados da sua rede. As imagens de código de barras contendo informações confidenciais de clientes, financeiras ou de saúde permanecem na sua infraestrutura.

Código mais simples. A infraestrutura de repetição, o tratamento de timeouts e o gerenciamento de exceções HTTP necessários para as integrações de produção do Cloudmersive foram removidos. O que o substitui é uma chamada de método direta.

A migração é mecânica. Os benefícios são estruturais — eliminando a dependência de um serviço de rede externo em um fluxo de trabalho que não precisa dele.

Curtis Chau
Redator Técnico

Curtis Chau é bacharel em Ciência da Computação (Universidade Carleton) e se especializa em desenvolvimento front-end, com experiência em Node.js, TypeScript, JavaScript e React. Apaixonado por criar interfaces de usuário intuitivas e esteticamente agradáveis, Curtis gosta de trabalhar com frameworks modernos e criar manuais bem estruturados e visualmente atraentes.

...
Leia mais

Artigos relacionados

Key in blue circle

Obtenha sua chave de avaliação gratuita de 30 dias instantaneamente.

Your trial license will be sent to your email address

Sem limitações. 100% desbloqueado. Sem cartão de crédito.

bullet_checkedNão é necessário cartão de crédito nem criação de conta.Sem limitações. 100% desbloqueado. Sem cartão de crédito.
  • Logo Aetna
  • Logo NASA
  • Logo GE
  • Logo Porsche
  • Logo USDA
  • Logo Qatar
Join Millions of Engineers who’ve tried IronPDF
Agende sua demonstração ao vivo gratuita.
Booking Badge

Aprovado por milhões de engenheiros em todo o mundo.

Logotipos dos clientes da Iron Software
Agende sua consulta sem compromisso.
Preencha o formulário abaixo ou envie um e-mail para sales@ironsoftware.com
Os seus dados serão sempre mantidos em sigilo.
Aprovado por milhões de engenheiros em todo o mundo.
Logotipos dos clientes da Iron Software
Obtenha sua chave de avaliação gratuita de 30 dias instantaneamente.
Não é necessário cartão de crédito nem criação de conta.