Saltar al pie de página
COMPARAR CON OTROS COMPONENTES

API de código de barras de Cloudmersive frente a IronBarcode: Comparación de bibliotecas de códigos de barras C#

Con 10.000 códigos de barras al día —una cifra realista para el procesamiento de facturas, la validación de etiquetas de envío o la recepción de documentos—, la API de códigos de barras de Inmersivo en las nubes cuesta aproximadamente 3.650 dólares al año. Con ese mismo volumen, cada código de barras añade entre 100 y 500 ms al tiempo de ida y vuelta de la red. Y cada documento, cada imagen, cada dato del código de barras sale de su red y viaja a los servidores de Cloudmersive.

Ese es el modelo de Inmersivo en las nubes explicado claramente. Para los equipos que se topan con este problema a mitad de un proyecto —después de que la integración esté lista y la clave API configurada—, estos tres hechos suelen presentarse juntos como una sorpresa desagradable. Esta comparación tiene como objetivo aclararlos antes de que se complete la integración.

Comprensión de la API de códigos de barras de Cloudmersive

Cloudmersive ofrece una colección de API REST que abarcan la conversión de documentos, el reconocimiento óptico de caracteres (OCR), el procesamiento de imágenes y las operaciones con códigos de barras. La funcionalidad de código de barras es solo una parte de una cartera de API más amplia. Para los desarrolladores .NET , Inmersivo en las nubes proporciona un paquete cliente NuGet que encapsula sus puntos finales REST:

// Cloudmersive: HTTP client, per-request billing, data leaves your network
using Cloudmersive.APIClient.NETCore.Barcode.Api;
using Cloudmersive.APIClient.NETCore.Barcode.Client;

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

// Each call = HTTPS request to Inmersivo en las nubes servers
byte[] result = apiInstance.GenerateBarcodeQRCode("https://example.com");
// Cloudmersive: HTTP client, per-request billing, data leaves your network
using Cloudmersive.APIClient.NETCore.Barcode.Api;
using Cloudmersive.APIClient.NETCore.Barcode.Client;

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

// Each call = HTTPS request to Inmersivo en las nubes servers
byte[] result = apiInstance.GenerateBarcodeQRCode("https://example.com");
Imports Cloudmersive.APIClient.NETCore.Barcode.Api
Imports Cloudmersive.APIClient.NETCore.Barcode.Client

Configuration.Default.ApiKey.Add("Apikey", "YOUR-CLOUDMERSIVE-API-KEY")
Dim apiInstance As New GenerateBarcodeApi()

' Each call = HTTPS request to Inmersivo en las nubes servers
Dim result As Byte() = apiInstance.GenerateBarcodeQRCode("https://example.com")
$vbLabelText   $csharpLabel

Lo importante que hay que entender de este código es lo que hace realmente: envía una solicitud HTTPS a la infraestructura de Cloudmersive, espera una respuesta y devuelve el resultado. Cada línea de trabajo de códigos de barras en una integración de Inmersivo en las nubes sigue este patrón. No hay procesamiento local. No existe una ruta sin conexión. Cada operación depende de una conexión a internet activa y de un servidor Inmersivo en las nubes disponible.

El patrón de cliente HTTP

El SDK .NET de Inmersivo en las nubes es un cliente API generado automáticamente. Debajo, es un HttpClient haciendo llamadas REST. Las implicaciones se derivan en cascada de ese hecho:

  • La latencia de la red es inevitable y no trivial (100–500 ms por llamada).
  • Tus datos viajan hacia y desde servidores externos en cada operación.
  • Los límites de velocidad se aplican en el nivel de API.
  • Las claves API caducan y deben rotarse.
  • Las interrupciones de Inmersivo en las nubes detienen por completo el procesamiento de códigos de barras.
  • La robustez en producción requiere lógica de reintento, manejo de tiempos de espera y disyuntores.

En el caso del escaneo de códigos de barras en un flujo de procesamiento de documentos, donde se pueden procesar cientos de documentos por hora, estas no son preocupaciones teóricas.

Costo a escala

Cloudmersive utiliza un modelo de precios por solicitud. El coste exacto por solicitud depende de su nivel de suscripción, pero el modelo fundamental es el mismo en todos los niveles: cada operación de código de barras consume una solicitud de su cuota mensual.

Los cálculos para volúmenes de producción comunes:

Volumen diario Volumen mensual Costo anual (estimado) IronBarcode
100/día ~3.000/mes ~$240/año 749 $ una sola vez
1.000/día ~30.000/mes ~$1.200/año 749 $ una sola vez
10.000/día ~300.000/mes ~$3.650/año 749 $ una sola vez
50.000/día ~1.500.000/mes ~$18.000+/año 749 $ una sola vez
100.000/día ~3.000.000/mes ~$36.500/año 749 $ una sola vez

La licencia perpetua de IronBarcode , con un precio de 749 dólares (Lite, para un solo desarrollador), cubre un número ilimitado de operaciones con códigos de barras. No se cobra ninguna tarifa por solicitud, independientemente del volumen. Un equipo que procesa 10.000 códigos de barras al día recupera el coste de la licencia en menos de diez días, en comparación con lo que pagaría anualmente a Cloudmersive.

Para un equipo de 3 desarrolladores, la licencia Plus , con un precio de 1499 dólares por pago único, se compara con los 3650 dólares anuales para 10 000 códigos de barras diarios. La licencia de IronBarcode se amortiza con los ahorros que se generan en Inmersivo en las nubes durante los cinco meses que se utilizan.

El acantilado de escalada

El modelo de precios por solicitud crea un problema específico a medida que aumenta el uso: el coste aumenta linealmente con el volumen. Si su flujo de procesamiento de documentos aumenta de 2.000 a 20.000 documentos al mes, su factura de Inmersivo en las nubes se multiplica por diez. Sus costes de ingeniería no aumentan —el mismo código procesa más documentos—, pero su factura de API sí.

IronBarcode no tiene esta propiedad. Procesar diez veces más códigos de barras no supone ningún coste adicional.

Impacto de la latencia

Cada operación de código de barras de Inmersivo en las nubes implica:

  1. Serialización de la solicitud (bytes de imagen o datos de código de barras)
  2. Establecer o reutilizar una conexión HTTPS
  3. Transmisión de los datos a los servidores de Cloudmersive
  4. Esperando el procesamiento del servidor
  5. Recibir la respuesta
  6. Deserialización del resultado

La latencia medida para las operaciones de códigos de barras de Inmersivo en las nubes suele ser de 100 a 500 ms por llamada, dependiendo de la carga del servidor, la proximidad geográfica y el tamaño de la imagen. A 250 ms por llamada:

Volumen Gastos generales totales de la red
10 códigos de barras 2,5 segundos
100 códigos de barras 25 segundos
1.000 códigos de barras 4,2 minutos
10.000 códigos de barras 41,7 minutos
100.000 códigos de barras ~7 horas

Para los puntos finales orientados al usuario —un formulario web donde un usuario sube una imagen y espera un resultado— una latencia de 250 ms en un único escaneo de código de barras puede ser aceptable. En las tareas de procesamiento de documentos en segundo plano, la latencia acumulada se convierte en el coste dominante del flujo de trabajo.

El procesamiento local de IronBarcode tarda entre 10 y 50 ms por código de barras en un hardware típico. Con 10.000 códigos de barras, eso supone aproximadamente 8 minutos en total, frente a los 41 minutos de sobrecarga de red que supone el modelo Cloudmersive.

Latencia en ASP.NET Core

Para los puntos finales de la API web que deben cumplir con los acuerdos de nivel de servicio (SLA) de tiempo de respuesta, la latencia de Inmersivo en las nubes es un valor mínimo fijo. Un punto final que lee un código de barras y devuelve el valor no puede responder en menos de 100 ms, independientemente del hardware del servidor, porque el tiempo mínimo de ida y vuelta a una API externa está determinado por la física de la red.

IronBarcode se procesa localmente. El nivel mínimo de latencia viene determinado por el hardware y la complejidad de la imagen.

Soberanía de datos

Cada operación de escaneo de códigos de barras de Inmersivo en las nubes transmite datos a los servidores de Cloudmersive. En el caso de la lectura de códigos de barras, esto significa que sus imágenes, que potencialmente contienen identificadores de pacientes, números de cuentas financieras, direcciones de envío, identificaciones de empleados o datos de inventario confidenciales, salen de su red.

Las implicaciones en materia de cumplimiento normativo dependen de su entorno regulatorio:

Regulación Modelo Inmersivo en las nubes IronBarcode
HIPAA La información de salud protegida (PHI) en imágenes de códigos de barras requiere BAA con Cloudmersive; los datos salen de la red. Todo el procesamiento es local; no se requiere BAA.
RGPD Datos personales transmitidos a servidores de EE. UU.; evaluación de idoneidad requerida No se transmiten datos: RGPD simplificado
ITAR Los datos técnicos relacionados con la defensa no pueden transmitirse a servicios externos. Totalmente local: diseño que cumple con la normativa ITAR.
CMMC La información no clasificada controlada no puede atravesar redes externas. No se permiten llamadas a redes externas.
FedRAMP Los datos del gobierno de EE. UU. requieren servicios en la nube autorizados por FedRAMP. No aplica: procesamiento local
PCI DSS Los datos del titular de la tarjeta en códigos de barras requieren un tratamiento específico para su transmisión externa. Los datos nunca salen de su entorno
Redes aisladas Imposible: requiere conexión a internet. Soporte completo: funciona sin acceso a la red.
Política de datos internos Muchas organizaciones prohíben el envío de datos operativos a API de terceros. No se permite la transmisión a terceros.

Para cargas de trabajo en los sectores de salud, defensa, servicios financieros o gobierno, el modelo de nube de Inmersivo en las nubes suele descartarlo incluso antes de evaluar sus características o costos. El hecho de que los datos salgan de su red es determinante.

IronBarcode procesa todo localmente. Las imágenes de los códigos de barras nunca salen del equipo anfitrión. No hay transmisión de datos de ningún tipo.

Fiabilidad

Cloudmersive es una dependencia externa. La fiabilidad del procesamiento de códigos de barras de su aplicación está limitada por el tiempo de actividad de Cloudmersive.

¿Qué sucede durante un apagón?

Cuando Inmersivo en las nubes sufre una interrupción del servicio:

  • Las operaciones de lectura de códigos de barras fallan o se agota el tiempo de espera.
  • Las solicitudes de generación de códigos de barras devuelven errores.
  • Se detienen los procesos de procesamiento de documentos.
  • Cualquier lógica de reintento que hayas implementado comienza a consumir recursos computacionales mientras espera la recuperación.

Si el procesamiento de códigos de barras se encuentra en la ruta crítica (un sistema de recepción de pedidos, un flujo de trabajo de recepción, un formulario de registro de pacientes), una interrupción de Inmersivo en las nubes representa una interrupción en su aplicación.

Limitación de velocidad

Cloudmersive impone límites de solicitudes simultáneas en cada nivel de precios. En los niveles inferiores, este límite es de tan solo 1 solicitud simultánea, lo que significa que el procesamiento paralelo de documentos se serializa mediante la API. Si superas tu cuota mensual, las operaciones fallarán o quedarán en cola indefinidamente.

El código de producción que utiliza Inmersivo en las nubes debe manejar lo siguiente:

// Production Inmersivo en las nubes code requires significant infrastructure
using Cloudmersive.APIClient.NETCore.Barcode.Api;
using Cloudmersive.APIClient.NETCore.Barcode.Client;
using System;
using System.Threading;
using System.Threading.Tasks;

public class CloudmersiveBarcodeService
{
    private readonly BarcodeScanApi _scanApi;
    private static int _requestCount = 0;

    public CloudmersiveBarcodeService()
    {
        Configuration.Default.ApiKey.Add("Apikey", "YOUR-CLOUDMERSIVE-API-KEY");
        _scanApi = new BarcodeScanApi();
    }

    public async Task<string> ScanWithRetry(byte[] imageBytes, int maxRetries = 3)
    {
        for (int attempt = 1; attempt <= maxRetries; attempt++)
        {
            try
            {
                // Track quota consumption
                Interlocked.Increment(ref _requestCount);

                using var stream = new System.IO.MemoryStream(imageBytes);
                var result = await _scanApi.BarcodeScanImageAsync(stream);

                if (result.Successful == true)
                    return result.RawText;

                throw new InvalidOperationException("Scan unsuccessful");
            }
            catch (ApiException ex) when (ex.ErrorCode == 429)
            {
                // Rate limited — exponential backoff
                if (attempt < maxRetries)
                    await Task.Delay(TimeSpan.FromSeconds(Math.Pow(2, attempt)));
                else
                    throw;
            }
            catch (Exception) when (attempt < maxRetries)
            {
                // Network error — retry
                await Task.Delay(TimeSpan.FromMilliseconds(500 * attempt));
            }
        }
        throw new InvalidOperationException("All retry attempts failed");
    }
}
// Production Inmersivo en las nubes code requires significant infrastructure
using Cloudmersive.APIClient.NETCore.Barcode.Api;
using Cloudmersive.APIClient.NETCore.Barcode.Client;
using System;
using System.Threading;
using System.Threading.Tasks;

public class CloudmersiveBarcodeService
{
    private readonly BarcodeScanApi _scanApi;
    private static int _requestCount = 0;

    public CloudmersiveBarcodeService()
    {
        Configuration.Default.ApiKey.Add("Apikey", "YOUR-CLOUDMERSIVE-API-KEY");
        _scanApi = new BarcodeScanApi();
    }

    public async Task<string> ScanWithRetry(byte[] imageBytes, int maxRetries = 3)
    {
        for (int attempt = 1; attempt <= maxRetries; attempt++)
        {
            try
            {
                // Track quota consumption
                Interlocked.Increment(ref _requestCount);

                using var stream = new System.IO.MemoryStream(imageBytes);
                var result = await _scanApi.BarcodeScanImageAsync(stream);

                if (result.Successful == true)
                    return result.RawText;

                throw new InvalidOperationException("Scan unsuccessful");
            }
            catch (ApiException ex) when (ex.ErrorCode == 429)
            {
                // Rate limited — exponential backoff
                if (attempt < maxRetries)
                    await Task.Delay(TimeSpan.FromSeconds(Math.Pow(2, attempt)));
                else
                    throw;
            }
            catch (Exception) when (attempt < maxRetries)
            {
                // Network error — retry
                await Task.Delay(TimeSpan.FromMilliseconds(500 * attempt));
            }
        }
        throw new InvalidOperationException("All retry attempts failed");
    }
}
Imports Cloudmersive.APIClient.NETCore.Barcode.Api
Imports Cloudmersive.APIClient.NETCore.Barcode.Client
Imports System
Imports System.Threading
Imports System.Threading.Tasks

Public Class CloudmersiveBarcodeService
    Private ReadOnly _scanApi As BarcodeScanApi
    Private Shared _requestCount As Integer = 0

    Public Sub New()
        Configuration.Default.ApiKey.Add("Apikey", "YOUR-CLOUDMERSIVE-API-KEY")
        _scanApi = New BarcodeScanApi()
    End Sub

    Public Async Function ScanWithRetry(imageBytes As Byte(), Optional maxRetries As Integer = 3) As Task(Of String)
        For attempt As Integer = 1 To maxRetries
            Try
                ' Track quota consumption
                Interlocked.Increment(_requestCount)

                Using stream As New System.IO.MemoryStream(imageBytes)
                    Dim result = Await _scanApi.BarcodeScanImageAsync(stream)

                    If result.Successful = True Then
                        Return result.RawText
                    End If

                    Throw New InvalidOperationException("Scan unsuccessful")
                End Using
            Catch ex As ApiException When ex.ErrorCode = 429
                ' Rate limited — exponential backoff
                If attempt < maxRetries Then
                    Await Task.Delay(TimeSpan.FromSeconds(Math.Pow(2, attempt)))
                Else
                    Throw
                End If
            Catch ex As Exception When attempt < maxRetries
                ' Network error — retry
                Await Task.Delay(TimeSpan.FromMilliseconds(500 * attempt))
            End Try
        Next
        Throw New InvalidOperationException("All retry attempts failed")
    End Function
End Class
$vbLabelText   $csharpLabel

IronBarcode no requiere nada de esto. No hay límites de velocidad, ni claves API, ni infraestructura de reintentos, ni seguimiento de cuotas:

// IronBarcode: local, instant, no cost per call
// NuGet: dotnet add package IronBarcode
using IronBarCode;

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

// Generate — no network call
BarcodeWriter.CreateBarcode("https://example.com", BarcodeEncoding.QRCode)
    .SaveAsPng("qr.png");

// Read — no network call
var result = BarcodeReader.Read("barcode.png").First();
Console.WriteLine(result.Value);
// IronBarcode: local, instant, no cost per call
// NuGet: dotnet add package IronBarcode
using IronBarCode;

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

// Generate — no network call
BarcodeWriter.CreateBarcode("https://example.com", BarcodeEncoding.QRCode)
    .SaveAsPng("qr.png");

// Read — no network call
var result = BarcodeReader.Read("barcode.png").First();
Console.WriteLine(result.Value);
Imports IronBarCode

' IronBarcode: local, instant, no cost per call
' NuGet: dotnet add package IronBarcode

IronBarCode.License.LicenseKey = "YOUR-KEY"

' Generate — no network call
BarcodeWriter.CreateBarcode("https://example.com", BarcodeEncoding.QRCode) _
    .SaveAsPng("qr.png")

' Read — no network call
Dim result = BarcodeReader.Read("barcode.png").First()
Console.WriteLine(result.Value)
$vbLabelText   $csharpLabel

Sin lógica de reintento. Sin límite de velocidad de procesamiento. No se gestionan las excepciones HTTP. Sin gestión de cuotas.

Entendiendo IronBarcode

IronBarcode es una biblioteca nativa de .NET que procesa códigos de barras completamente en la máquina anfitriona. Admite la lectura y generación de más de 50 formatos de códigos de barras, procesa archivos PDF de forma nativa y se ejecuta en todas las plataformas .NET , desde .NET Framework 4.6.2 hasta .NET 9.

Características clave:

  • Procesamiento totalmente local: No se realizan llamadas a la red durante ninguna operación de código de barras.
  • Sin coste por solicitud: Una licencia cubre operaciones ilimitadas con códigos de barras.
  • Sin límites de velocidad: procese tantos códigos de barras como admita su hardware.
  • Sin dependencias externas en tiempo de ejecución: No se requiere conexión a internet.
  • Compatibilidad nativa con PDF: Lea códigos de barras de archivos PDF sin extraer primero las imágenes.
  • Lectura y escritura completas: Genera códigos de barras en todos los formatos principales, lee imágenes, archivos PDF y flujos de datos.
// NuGet: dotnet add package IronBarcode
using IronBarCode;

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

// QR code generation
QRCodeWriter.CreateQrCode("https://example.com", 500)
    .SaveAsPng("qr.png");

// QR code with brand logo
QRCodeWriter.CreateQrCode("https://example.com", 500)
    .AddBrandLogo("logo.png")
    .SaveAsPng("branded-qr.png");

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

// Get bytes for embedding in document or API response
byte[] bytes = BarcodeWriter.CreateBarcode("data", BarcodeEncoding.Code128)
    .ToPngBinaryData();

// Read from image
var results = BarcodeReader.Read("barcode.png");
foreach (var r in results)
{
    Console.WriteLine($"{r.Format}: {r.Value}");
}

// Read from PDF — native, no image extraction step
var pdfResults = BarcodeReader.Read("invoices.pdf");
foreach (var r in pdfResults)
{
    Console.WriteLine($"Page {r.PageNumber}: {r.Value}");
}

// Multi-barcode detection
var options = new BarcodeReaderOptions
{
    Speed = ReadingSpeed.Balanced,
    ExpectMultipleBarcodes = true,
};
var multiResults = BarcodeReader.Read("manifest.png", options);
// NuGet: dotnet add package IronBarcode
using IronBarCode;

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

// QR code generation
QRCodeWriter.CreateQrCode("https://example.com", 500)
    .SaveAsPng("qr.png");

// QR code with brand logo
QRCodeWriter.CreateQrCode("https://example.com", 500)
    .AddBrandLogo("logo.png")
    .SaveAsPng("branded-qr.png");

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

// Get bytes for embedding in document or API response
byte[] bytes = BarcodeWriter.CreateBarcode("data", BarcodeEncoding.Code128)
    .ToPngBinaryData();

// Read from image
var results = BarcodeReader.Read("barcode.png");
foreach (var r in results)
{
    Console.WriteLine($"{r.Format}: {r.Value}");
}

// Read from PDF — native, no image extraction step
var pdfResults = BarcodeReader.Read("invoices.pdf");
foreach (var r in pdfResults)
{
    Console.WriteLine($"Page {r.PageNumber}: {r.Value}");
}

// Multi-barcode detection
var options = new BarcodeReaderOptions
{
    Speed = ReadingSpeed.Balanced,
    ExpectMultipleBarcodes = true,
};
var multiResults = BarcodeReader.Read("manifest.png", options);
Imports IronBarCode

IronBarCode.License.LicenseKey = "YOUR-KEY"

' QR code generation
QRCodeWriter.CreateQrCode("https://example.com", 500) _
    .SaveAsPng("qr.png")

' QR code with brand logo
QRCodeWriter.CreateQrCode("https://example.com", 500) _
    .AddBrandLogo("logo.png") _
    .SaveAsPng("branded-qr.png")

' Code128 generation
BarcodeWriter.CreateBarcode("SHIP-2024031500428", BarcodeEncoding.Code128) _
    .SaveAsPng("barcode.png")

' Get bytes for embedding in document or API response
Dim bytes As Byte() = BarcodeWriter.CreateBarcode("data", BarcodeEncoding.Code128) _
    .ToPngBinaryData()

' Read from image
Dim results = BarcodeReader.Read("barcode.png")
For Each r In results
    Console.WriteLine($"{r.Format}: {r.Value}")
Next

' Read from PDF — native, no image extraction step
Dim pdfResults = BarcodeReader.Read("invoices.pdf")
For Each r In pdfResults
    Console.WriteLine($"Page {r.PageNumber}: {r.Value}")
Next

' Multi-barcode detection
Dim options As New BarcodeReaderOptions With {
    .Speed = ReadingSpeed.Balanced,
    .ExpectMultipleBarcodes = True
}
Dim multiResults = BarcodeReader.Read("manifest.png", options)
$vbLabelText   $csharpLabel

Comparación de características

Característica API de códigos de barras de Inmersivo en las nubes IronBarcode
Lugar de procesamiento Servidores Inmersivo en las nubes Local: solo tu máquina
Se requiere Internet Sí, cada operación No
Transmisión de datos Todas las imágenes/datos se envían a Cloudmersive. Ninguno
Latencia por operación 100–500 ms (red) 10–50 ms (local)
Modelo de costes Cuota mensual por solicitud Licencia perpetua única
Coste de 10.000 códigos de barras al día ~$3.650/año $749 una vez
Límites de tarifa Sí, concurrente y mensual. Ninguno
Sin conexión / Aislado de la red No es posible Soporte completo
HIPAA Requiere BAA; datos deja red Solo para residentes locales; no se requiere BAA.
RGPD Datos transferidos a servidores de EE. UU. No hay transferencia de datos
ITAR / CMMC Transmisión externa prohibida Conforme por diseño
Impacto de la interrupción Su procesamiento se detiene Sin dependencias externas
Generación de códigos de barras
Lectura de códigos de barras
Compatibilidad nativa con PDF No, extraiga las imágenes por separado. Sí, lectura directa de PDF
Detección de múltiples códigos de barras Limitado Sí - ExpectMultipleBarcodes = true
Recuperación de códigos de barras dañados Básico ML-powered, ReadingSpeed.ExtremeDetail
Formatos admitidos Formatos comunes Más de 50 formatos
Reintentos/Gestión de errores Requerido en el código de producción No es necesario
Compatibilidad con .NET Framework Solo .NET Core .NET Framework 4.6.2+ hasta .NET 9
Docker / Linux A través del cliente HTTP Nativo
Funciones Azure A través del cliente HTTP Nativo

Referencia de mapeo de API

Inmersivo en las nubes IronBarcode
Configuration.Default.ApiKey.Add("Apikey", "key") IronBarCode.License.LicenseKey = "key"
new GenerateBarcodeApi() Estático: no se necesita instancia
new BarcodeScanApi() Estático: no se necesita instancia
apiInstance.GenerateBarcodeQRCode(value) BarcodeWriter.CreateBarcode(value, BarcodeEncoding.QRCode).ToPngBinaryData()
apiInstance.GenerateBarcodeCode128By(value) BarcodeWriter.CreateBarcode(value, BarcodeEncoding.Code128).ToPngBinaryData()
apiInstance.GenerateBarcodeEAN13(value) BarcodeWriter.CreateBarcode(value, BarcodeEncoding.EAN13).ToPngBinaryData()
scanApi.BarcodeScanImage(imageFile) BarcodeReader.Read(imageBytes)
result.RawText result.Value
result.Type result.Format
result.Successful == true La colección de resultados no está vacía.
HTTPS a servidores Inmersivo en las nubes Procesamiento local: sin red.
latencia de 100 a 500 ms 10–50 ms local
Consumo de cuota mensual Ilimitado: sin cuota
Se requiere rotación de clave API Clave de licencia única
Se requiere lógica de reintento No es necesario

Cuando los equipos cambian

El detonante para cambiar de Inmersivo en las nubes a IronBarcode es casi siempre una de estas cuatro situaciones:

Requisito de cumplimiento: Una revisión de seguridad, un contrato con un cliente o una auditoría regulatoria identifican que las imágenes de códigos de barras que contienen datos confidenciales están saliendo de la red. El cumplimiento de HIPAA, GDPR o ITAR requiere el procesamiento local. La integración con Inmersivo en las nubes debe reemplazarse independientemente del costo o la conveniencia.

Sorpresa en los costes a gran escala: El proyecto comienza con un volumen bajo, donde los niveles gratuitos o de bajo coste de Inmersivo en las nubes cubren el uso. A medida que la aplicación gana usuarios o crece el flujo de procesamiento de documentos, la factura mensual aumenta proporcionalmente. En algún momento —normalmente entre 100 y 200 dólares al mes— el equipo calcula el punto de equilibrio frente a la licencia perpetua de IronBarcode y decide migrar.

Entorno aislado: La aplicación debe ejecutarse en un entorno sin acceso a Internet, como una planta de producción, una instalación gubernamental o un centro sanitario con restricciones de red. Inmersivo en las nubes es imposible en estos entornos. IronBarcode funciona sin conexión a la red.

Latencia en un SLA: Un acuerdo de nivel de servicio requiere tiempos de respuesta que, debido a la sobrecarga de la red de Cloudmersive, resulta imposible garantizar. El procesamiento local con IronBarcode permite que las operaciones de códigos de barras se ajusten al nivel de servicio establecido en el acuerdo.

Ejemplo de canalización de procesamiento de documentos

Un escenario Enterprise realista: un equipo de cuentas por pagar procesa 2.000 facturas al día. Cada factura es un archivo PDF con uno o más códigos de barras para el número de pedido, el código del proveedor y las referencias de los artículos.

Enfoque inmersivo en la nube:

  • 2000 facturas × 3 códigos de barras de promedio = 6000 llamadas a la API por día
  • A 250 ms por llamada: 25 minutos de tiempo de espera en la red por día.
  • Mensual: ~180.000 solicitudes → nivel de suscripción significativo
  • Coste anual: aproximadamente entre 2.000 y 4.000 dólares.
  • Riesgo: El procesamiento se detiene si Inmersivo en las nubes no está disponible.
  • Cumplimiento: Las facturas de proveedores pueden contener números de cuenta transmitidos externamente.

Enfoque de IronBarcode :

using IronBarCode;

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

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

string[] invoicePaths = Directory.GetFiles("invoices", "*.pdf");

foreach (var invoicePath in invoicePaths)
{
    // One call per invoice — processes all pages and all barcodes
    var barcodes = BarcodeReader.Read(invoicePath, options);

    foreach (var barcode in barcodes)
    {
        Console.WriteLine($"Invoice: {invoicePath} | Page: {barcode.PageNumber} | {barcode.Format}: {barcode.Value}");
    }
}
using IronBarCode;

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

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

string[] invoicePaths = Directory.GetFiles("invoices", "*.pdf");

foreach (var invoicePath in invoicePaths)
{
    // One call per invoice — processes all pages and all barcodes
    var barcodes = BarcodeReader.Read(invoicePath, options);

    foreach (var barcode in barcodes)
    {
        Console.WriteLine($"Invoice: {invoicePath} | Page: {barcode.PageNumber} | {barcode.Format}: {barcode.Value}");
    }
}
Imports IronBarCode

IronBarCode.License.LicenseKey = "YOUR-KEY"

Dim options As New BarcodeReaderOptions With {
    .Speed = ReadingSpeed.Balanced,
    .ExpectMultipleBarcodes = True
}

Dim invoicePaths As String() = Directory.GetFiles("invoices", "*.pdf")

For Each invoicePath As String In invoicePaths
    ' One call per invoice — processes all pages and all barcodes
    Dim barcodes = BarcodeReader.Read(invoicePath, options)

    For Each barcode In barcodes
        Console.WriteLine($"Invoice: {invoicePath} | Page: {barcode.PageNumber} | {barcode.Format}: {barcode.Value}")
    Next
Next
$vbLabelText   $csharpLabel
  • 2000 facturas procesadas localmente en minutos, no en 25 minutos de sobrecarga de red.
  • Coste anual: 749 dólares (pago único, por desarrollador)
  • Riesgo: Sin dependencia externa
  • Cumplimiento: Los datos de facturación nunca salen de la red.

Conclusión

La API de códigos de barras de Inmersivo en las nubes es un servicio REST en la nube. Su precio se ajusta según su uso. Su latencia está determinada por Internet. Su disponibilidad depende de la infraestructura de Cloudmersive. Sus datos se transmiten a servidores externos en cada operación de escaneo de códigos de barras.

Se trata de propiedades estructurales del modelo de API en la nube, no de quejas específicas sobre Cloudmersive. El modelo funciona bien para la creación de prototipos de bajo volumen o para aplicaciones en las que ninguna de esas propiedades importa. Se vuelve costoso, lento y potencialmente incumplidor a medida que aumenta el volumen y se endurecen los requisitos.

La licencia única de IronBarcode, con un precio de 749 dólares, cubre operaciones ilimitadas con códigos de barras, se ejecuta localmente sin transmisión de datos, procesa archivos PDF de forma nativa y no requiere la infraestructura de reintentos que exigen las integraciones de Inmersivo en las nubes en entornos de producción. Con 10.000 códigos de barras al día, los cálculos dan la razón a IronBarcode en las dos primeras semanas.

Preguntas Frecuentes

¿Qué es Cloudmersive BarCode API?

Cloudmersive Barcode API es una biblioteca de códigos de barras .NET para generar y leer códigos de barras en aplicaciones C#. Es una de las varias alternativas que los desarrolladores evalúan cuando seleccionan una solución de código de barras para proyectos .NET.

¿Cuáles son las principales diferencias entre Cloudmersive Barcode API e IronBarcode?

IronBarcode utiliza una API estática y sin estado que no requiere gestión de instancias, mientras que Cloudmersive Barcode API suele requerir la creación y configuración de instancias antes de su uso. IronBarcode también ofrece compatibilidad nativa con PDF, detección automática de formatos y licencia de clave única en todos los entornos.

¿Es IronBarcode más fácil de licenciar que Cloudmersive Barcode API?

IronBarcode utiliza una única clave de licencia que cubre tanto el desarrollo como los despliegues de producción. Esto simplifica las canalizaciones de CI/CD y las configuraciones de Docker en comparación con los sistemas de licencias que separan las claves de SDK de las claves de tiempo de ejecución.

¿Es IronBarcode compatible con todos los formatos de código de barras que admite Cloudmersive Barcode API?

IronBarcode es compatible con más de 30 simbologías de códigos de barras, incluidos QR Code, Code 128, Code 39, DataMatrix, PDF417, Aztec, EAN-13, UPC-A, GS1 y muchos más. La autodetección de formatos significa que no se requiere una enumeración explícita de formatos.

¿Es IronBarcode compatible con la lectura nativa de códigos de barras en PDF?

Sí. IronBarcode lee códigos de barras directamente desde archivos PDF utilizando BarcodeReader.Read("document.pdf") sin necesidad de una biblioteca de renderizado de PDF independiente. Los resultados por página incluyen el número de página, el formato del código de barras, el valor y la puntuación de confianza.

¿Cómo gestiona IronBarcode el procesamiento por lotes en comparación con Cloudmersive Barcode API?

Los métodos estáticos de IronBarcode no tienen estado y son naturalmente seguros para subprocesos, lo que permite el uso directo de Parallel.ForEach sin gestión de instancias por subproceso. No hay límite de rendimiento en ningún nivel de precios.

¿Qué versiones de .NET admite IronBarcode ?

IronBarcode es compatible con .NET Framework 4.6.2+, .NET Core 3.1 y .NET 5, 6, 7, 8 y 9 en un único paquete NuGet. Las plataformas de destino incluyen Windows x64/x86, Linux x64 y macOS x64/ARM.

¿Cómo instalo IronBarcode en un proyecto .NET?

Instale IronBarcode a través de NuGet: ejecute 'Install-Package IronBarCode' en la consola del gestor de paquetes, o 'dotnet add package IronBarCode' en la CLI. No se necesitan instaladores SDK ni archivos de ejecución adicionales.

¿Puedo evaluar IronBarcode antes de comprarlo, a diferencia de Cloudmersive?

Sí. El modo de prueba de IronBarcode devuelve los valores completos de los códigos de barras descodificados; sólo las imágenes de salida generadas reciben una marca de agua. Puede comprobar la precisión de la lectura en sus propios documentos antes de comprometerse con la compra.

¿Cuál es la diferencia de precio entre Cloudmersive Barcode API e IronBarcode?

IronBarcode cuesta a partir de 749 dólares por una licencia perpetua de desarrollador único que cubre el desarrollo y la producción. Los detalles de precios y opciones de volumen están disponibles en la página de licencias de IronBarcode. No se requiere una licencia de ejecución por separado.

¿Es fácil migrar de Cloudmersive Barcode API a IronBarcode?

La migración de Cloudmersive Barcode API a IronBarcode implica principalmente la sustitución de las llamadas a la API basadas en instancias por los métodos estáticos de IronBarcode, la eliminación de la repetición de licencias y la actualización de los nombres de las propiedades de los resultados. La mayoría de las migraciones implican reducir código en lugar de añadirlo.

¿IronBarcode genera códigos QR con logotipos?

Sí. QRCodeWriter.CreateQrCode().AddBrandLogo("logo.png") incrusta una imagen de marca en un código QR de forma nativa con corrección de errores configurable. Los códigos QR coloreados también son compatibles con ChangeBarCodeColor().

Jordi Bardia
Ingeniero de Software
Jordi es más competente en Python, C# y C++. Cuando no está aprovechando sus habilidades en Iron Software, está programando juegos. Compartiendo responsabilidades para pruebas de productos, desarrollo de productos e investigación, Jordi agrega un valor inmenso a la mejora continua del producto. La experiencia variada lo mantiene ...
Leer más

Equipo de soporte de Iron

Estamos disponibles online las 24 horas, 5 días a la semana.
Chat
Email
Llámame