Saltar al pie de página
COMPARAR CON OTROS COMPONENTES

Barkoder SDK vs IronBarcode: Comparación de bibliotecas de códigos de barras C#

El SDK de Barkoder aparece en casi todas las comparativas de "mejores SDK de códigos de barras de 2026", junto con ZXing, Dynamsoft, Scandit e IronBarcode en las matrices comparativas. Los desarrolladores que evalúan soluciones de códigos de barras para proyectos .NET se topan con esto al principio de su investigación: leen sobre MatrixSight, el modo DeBlur, la detección de múltiples códigos de barras y la compatibilidad con DPM, y lo encuentran realmente convincente. Luego buscan NuGet. Cero resultados. El SDK de Barkoder no tiene paquete .NET , ni API de C#, ni una vía oficial para integrarse en un proyecto .NET . Esta comparación explica qué es Barkoder, qué lo hace fuerte en su ámbito nativo y cómo IronBarcode cubre los mismos requisitos para los desarrolladores .NET .

Comprensión del SDK de Barkoder

Barkoder es un SDK comercial para el escaneo de códigos de barras, basado en un núcleo de procesamiento C/C++ y envuelto en SDKs nativos para iOS y Android. Está dirigido a desarrolladores de aplicaciones móviles que necesitan escaneo de cámara en tiempo real, el tipo de escaneo que realiza un trabajador de almacén en un teléfono o un técnico de campo en una tableta. El modelo de distribución refleja ese objetivo en su totalidad.

El SDK se distribuye para iOS a través de CocoaPods con API de Swift y Objective-C, para Android a través de Maven con API de Kotlin y Java, y para dispositivos móviles híbridos a través de complementos oficiales para React Native, Flutter, Cordova y Capacitor. No existe ningún paquete NuGet . No hay enlaces para C#. No existe una ruta de acceso compatible a un proyecto .NET .

La empresa ofrece proyectos de integración con Xamarin y MAUI mantenidos por la comunidad, pero estos no son productos oficiales, no cuentan con el soporte de producción de Barkoder y no se actualizan junto con el SDK principal. Depender de una biblioteca de enlace de la comunidad para un flujo de trabajo crítico de códigos de barras en una aplicación .NET de producción representa un riesgo técnico significativo. Para cualquier implementación seria de .NET , no son una opción realista.

Características arquitectónicas clave del SDK de Barkoder:

  • Arquitectura Mobile-First: Diseñada exclusivamente para los sistemas de cámara de iOS y Android; Todo el procesamiento se realiza en el dispositivo a través de un núcleo C/C++.
  • No hay SDK de .NET : No existe ningún paquete NuGet ; La búsqueda de "barkoder" en NuGet no arroja resultados.
  • Sin generación de códigos de barras: Barkoder es un SDK de solo lectura; no tiene capacidad para producir o codificar códigos de barras
  • Sin procesamiento de PDF: El SDK no tiene capacidad para leer códigos de barras de documentos PDF, imágenes de sistemas de archivos ni flujos de trabajo de documentos del lado del servidor.
  • Sin implementación en servidor: El SDK no se puede ejecutar en ASP.NET Core, Azure Functions, contenedores Docker ni en ningún entorno de ejecución .NET del lado del servidor.
  • Enlace .NET exclusivo para la comunidad: El proyecto de enlace MAUI es experimental, expone solo un subconjunto del SDK y no cuenta con soporte para producción.

¿Cómo luce la arquitectura de Barkoder?

El núcleo C/C++ del SDK se encarga del procesamiento de imágenes. Las envolturas de iOS y Android exponen ese núcleo a través de API nativas de la plataforma. Ninguno de los siguientes se ejecuta en un contexto .NET - no hay using Barkoder; declaración en cualquier proyecto de C#:

// iOS — Swift only, no C# equivalent
let barkoderView = BarkoderView(frame: frame)
barkoderView.config = BarkoderConfig(licenseKey: "LICENSE_KEY") { config in
    config.decoder.decoderType = .code128
    config.decoder.deblurEnabled = true
}
barkoderView.startScanning { result in
    print(result.textualData ?? "No result")
}
// Android — Kotlin only, no C# equivalent
val barkoderView = BarkoderView(context)
barkoderView.config = BarkoderConfig("LICENSE_KEY")
barkoderView.config.decoder.decoderType = DecoderType.Code128
barkoderView.config.decoder.deblurEnabled = true
barkoderView.startScanning { result ->
    println(result.textualData)
}

Antes de descartar por completo a Barkoder, conviene reconocer sus puntos fuertes. Las características que le otorgan un lugar en las comparativas son sus capacidades reales. MatrixSight y el modo DeBlur ofrecen una tecnología patentada de recuperación de daños que permite leer códigos de barras que están físicamente dañados, mal impresos o capturados con poca luz. La detección de múltiples códigos de barras decodifica varios códigos de barras simultáneamente en un solo fotograma de la cámara, lo que permite a los trabajadores del almacén escanear estantes enteros a la vez. El escaneo DPM (Marcado Directo de Piezas) admite DataMatrix y otros formatos en configuraciones grabadas con láser y marcadas con micropuntos que la mayoría de las bibliotecas de propósito general no manejan bien. La compatibilidad con formatos de alta densidad incluye PDF417, azteca y otros formatos 2D con gran precisión en cámaras de dispositivos móviles.

Entendiendo IronBarcode

IronBarcode es una biblioteca nativa de .NET que cubre todo el flujo de trabajo de códigos de barras (lectura y generación) en cualquier entorno .NET . Es el equivalente funcional de las capacidades de Barkoder para la plataforma .NET , con características adicionales que solo tienen sentido en contextos de servidor y escritorio.

IronBarcode se instala a través de NuGet y se ejecuta completamente de forma local. Durante las operaciones con códigos de barras no se realizan llamadas de red. Funciona en entornos aislados, en Azure Functions, en contenedores Docker, en AWS Lambday en todos los entornos de ejecución de .NET, desde .NET Framework 4.6.2 hasta .NET 9. El modelo de API estática significa que no hay que administrar ninguna instancia de escáner, ni realizar un seguimiento del ciclo de vida, ni preocuparse por la seguridad de los subprocesos en caso de llamadas simultáneas.

Características clave de IronBarcode:

  • Cobertura completa de .NET : Admite .NET Framework 4.6.2+, .NET 6, 7, 8 y 9; Funciona en Windows, Linux, macOS, Docker, Azure y AWS.
  • Lectura y generación: Cubre tanto la lectura de códigos de barras desde archivos, flujos de datos y PDF como la generación de códigos de barras en más de 50 formatos.
  • Diseño estático de la API: BarcodeReader.Read() y BarcodeWriter.CreateBarcode() son llamadas estáticas sin instancias de estado que gestionar
  • Corrección de errores mediante aprendizaje automático: El sistema de preprocesamiento de imágenes basado en aprendizaje automático gestiona códigos de barras dañados, degradados y de baja calidad.
  • Compatibilidad nativa con PDF: lee códigos de barras directamente de documentos PDF sin extracción de imágenes intermedia.
  • Integración completa con el ecosistema .NET : compatible con la inyección de dependencias, async/await, middleware y patrones de alojamiento de ASP.NET Core.

Comparación de características

La siguiente tabla destaca las diferencias fundamentales entre SDK de Barkoder e IronBarcode:

Característica SDK de Barkoder IronBarcode
Soporte .NET / C# Ninguno Completo: todos los entornos de ejecución de .NET
Paquete NuGet Ninguno Sí - IronBarcode
Lectura de códigos de barras Sí, cámara del móvil Sí, archivos, transmisiones, PDF.
Generación de códigos de barras Ninguno Completo: más de 50 formatos
Procesamiento de PDF Ninguno Nativo
Implementación del lado del servidor Ninguno Completo: ASP.NET Core, Azure, Lambda, Docker
Precios Licencias del SDK móvil Desde $749 pago único perpetuo

Comparación detallada de características

Característica SDK de Barkoder IronBarcode
Lectura
Recuperación de códigos de barras dañados MatrixSight / DeBlur Corrección de errores ML, ReadingSpeed.ExtremeDetail
Detección de múltiples códigos de barras Sí, encuadre de la cámara ExpectMultipleBarcodes = true
Soporte para DataMatrix / DPM Sí - BarcodeEncoding.DataMatrix
Lectura de código QR
PDF417
azteca
Código128, Código39, EAN Sí, más de 50 formatos
Detección de formato automático
Generación
Generación de códigos de barras Ninguno Completo — todos los formatos
Generación de código QR Ninguno QRCodeWriter.CreateQrCode()
Logotipo/marca en el código QR Ninguno AddBrandLogo()
Plataforma
.NET / C# Ninguno Completo
iOS (nativo) Sí (principal) A través de .NET MAUI
Android (nativo) Sí (principal) A través de .NET MAUI
Windows / Linux / macOS Ninguno Completo
Docker / contenedores Ninguno Completo
Funciones Azure Ninguno Completo
AWS Lambda Ninguno Completo
Aislado de la red / sin conexión Sí (en el dispositivo) Sí (totalmente local)
Diseño de API
Compatibilidad con Async/await N/A Completo
Inyección de dependencias Ninguno Integración completa de .NET DI
Entrada de documento PDF Ninguno BarcodeReader.Read("doc.pdf")
Licencias
Modelo de licencia Licencias del SDK móvil Compra única y perpetua
Precio (de entrada) Contacto de ventas Desde $749 (Lite)

Modelo de implementación de .NET

La diferencia fundamental entre SDK de Barkoder e IronBarcode no radica en una característica, sino en la disponibilidad. El SDK de Barkoder no existe en el ecosistema .NET .

Enfoque del SDK de Barkoder

La lista de plataformas de Barkoder es explícita: iOS Nativo(Swift / Objective-C), Android Nativo(Kotlin / Java), React Native, Flutter, Cordova, Capacitor. No se incluyen .NET, C#, .NET MAUI, Xamarin, Windows, Linux ni ASP.NET Core . La arquitectura del SDK se basa en un sistema de transmisión de vídeo en directo desde un dispositivo móvil. No incluye modo de entrada basado en archivos, API de transmisión, procesamiento por lotes ni modelo de ejecución en el servidor.

La ausencia de un SDK .NET no es un inconveniente menor, sino un obstáculo insalvable. No hay ningún paquete NuGet para instalar, ni una interfaz API asíncrona, ni integración de inyección de dependencias, ni compatibilidad con Azure o AWS Lambda, ni capacidad de procesamiento de PDF. La interfaz MAUI de la comunidad expone solo un subconjunto del SDK y no cuenta con soporte para entornos de producción.

Enfoque IronBarcode

IronBarcode se instala desde NuGet con un solo comando y se inicializa con una clave de licencia al arrancar:

// NuGet: dotnet add package IronBarcode
using IronBarCode;

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

// Read a barcode from an image
var results = BarcodeReader.Read("scan.png");
foreach (var result in results)
{
    Console.WriteLine($"Format: {result.Format}");
    Console.WriteLine($"Value: {result.Value}");
}
// NuGet: dotnet add package IronBarcode
using IronBarCode;

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

// Read a barcode from an image
var results = BarcodeReader.Read("scan.png");
foreach (var result in results)
{
    Console.WriteLine($"Format: {result.Format}");
    Console.WriteLine($"Value: {result.Value}");
}
Imports IronBarCode

IronBarCode.License.LicenseKey = "YOUR-KEY"

' Read a barcode from an image
Dim results = BarcodeReader.Read("scan.png")
For Each result In results
    Console.WriteLine($"Format: {result.Format}")
    Console.WriteLine($"Value: {result.Value}")
Next
$vbLabelText   $csharpLabel

La biblioteca se ejecuta completamente de forma local: sin llamadas de red, sin transmisión de datos, sin dependencias externas. Se integra con la inyección de dependencias de ASP.NET Core , admite async/await y se implementa en Docker, Funciones Azurey AWS Lambdasin modificaciones. Para una integración de ASP.NET Core de nivel de producción, consulte la documentación de IronBarcode .

Recuperación de códigos de barras dañados

La recuperación de códigos de barras dañados es la capacidad que con mayor frecuencia lleva a los desarrolladores a investigar Barkoder en primer lugar. Las funciones MatrixSight y el modo DeBlur de Barkoder se promocionan para escenarios de logística y fabricación donde las etiquetas físicas se desgastan, se mojan o se oscurecen parcialmente.

Enfoque del SDK de Barkoder

El modo DeBlur de Barkoder aplica un preprocesamiento de la imagen (mejora del contraste, nitidez, corrección de la rotación) antes del intento de decodificación. Esto funciona exclusivamente dentro del flujo de procesamiento de la cámara móvil. El modo se configura a nivel del SDK antes de que comience el escaneo, y la señal de la cámara se procesa de forma continua. No existe una ruta equivalente basada en archivos.

// iOS Swift — not usable from C#
barkoderView.config = BarkoderConfig(licenseKey: "LICENSE_KEY") { config in
    config.decoder.deblurEnabled = true
    config.decoder.decoderType = .code128
}
barkoderView.startScanning { result in
    print(result.textualData ?? "No result")
}

Enfoque IronBarcode

IronBarcode aborda el mismo problema mediante ReadingSpeed.ExtremeDetail, que activa un proceso de análisis de imágenes de varias pasadas -aplicando la recuperación de daños basada en ML, la mejora del contraste, la nitidez y la corrección de la rotación- antes de intentar la descodificación. Esto funciona con cualquier archivo, flujo o matriz de bytes de entrada:

using IronBarCode;

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

var options = new BarcodeReaderOptions
{
    Speed = ReadingSpeed.ExtremeDetail,
    ExpectMultipleBarcodes = false,
};

var results = BarcodeReader.Read("worn-shipping-label.png", options);

if (results.Any())
{
    Console.WriteLine($"Recovered: {results.First().Value}");
}
else
{
    Console.WriteLine("Could not decode — image quality too low");
}
using IronBarCode;

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

var options = new BarcodeReaderOptions
{
    Speed = ReadingSpeed.ExtremeDetail,
    ExpectMultipleBarcodes = false,
};

var results = BarcodeReader.Read("worn-shipping-label.png", options);

if (results.Any())
{
    Console.WriteLine($"Recovered: {results.First().Value}");
}
else
{
    Console.WriteLine("Could not decode — image quality too low");
}
Imports IronBarCode

IronBarCode.License.LicenseKey = "YOUR-KEY"

Dim options As New BarcodeReaderOptions With {
    .Speed = ReadingSpeed.ExtremeDetail,
    .ExpectMultipleBarcodes = False
}

Dim results = BarcodeReader.Read("worn-shipping-label.png", options)

If results.Any() Then
    Console.WriteLine($"Recovered: {results.First().Value}")
Else
    Console.WriteLine("Could not decode — image quality too low")
End If
$vbLabelText   $csharpLabel

ReadingSpeed.Balanced maneja la mayoría de los códigos de barras limpios o ligeramente dañados y es más rápido. Reserve ExtremeDetail para los casos en los que Balanced no funcione, ya que es más completo pero mucho más lento. Para obtener más información sobre cómo leer códigos de barras difíciles, consulte la documentación de lectura de IronBarcode .

Detección de múltiples códigos de barras

La detección de múltiples códigos de barras se realiza directamente entre las dos plataformas: Barkoder gestiona varios códigos en un fotograma de la cámara; IronBarcode admite múltiples códigos en un documento o archivo de imagen.

Enfoque del SDK de Barkoder

El modo multi-código de barras de Barkoder detecta y decodifica varios códigos de barras simultáneamente a partir de un único fotograma de la cámara. En un almacén, un trabajador sostiene un teléfono sobre un estante y recibe todos los valores de los códigos de barras a la vez. Esto se configura a nivel del SDK antes de que comience el escaneo:

// Android Kotlin — not usable from C#
barkoderView.config.decoder.multicodingEnabled = true
barkoderView.startScanning { results ->
    results.forEach { result ->
        println("${result.barcodeType}: ${result.textualData}")
    }
}

Enfoque IronBarcode

En las aplicaciones del lado del servidor .NET , el escenario de múltiples códigos de barras normalmente implica un documento: una factura con un código de barras de seguimiento de envío y un código de barras de producto, o un manifiesto de envío con varios artículos por página. IronBarcode se encarga de esto con ExpectMultipleBarcodes = true, y la misma opción funciona de forma idéntica en imágenes y PDF:

using IronBarCode;

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

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

// Works on images and PDFs — single method call
var results = BarcodeReader.Read("shipping-manifest.pdf", options);

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

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

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

// Works on images and PDFs — single method call
var results = BarcodeReader.Read("shipping-manifest.pdf", options);

foreach (var barcode in results)
{
    Console.WriteLine($"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
}

' Works on images and PDFs — single method call
Dim results = BarcodeReader.Read("shipping-manifest.pdf", options)

For Each barcode In results
    Console.WriteLine($"Page {barcode.PageNumber} | {barcode.Format} | {barcode.Value}")
Next
$vbLabelText   $csharpLabel

Sin extracción de páginas, sin múltiples solicitudes, sin sobrecarga de red por código de barras. El PDF se lee de forma nativa en una sola llamada. Para obtener más información sobre la lectura de múltiples códigos de barras y archivos PDF, consulte la documentación de IronBarcode .

Compatibilidad con formatos DataMatrix y de alta densidad

DataMatrix es fundamental para los casos de uso industriales y de DPM (Gestión de Datos Digitales), los formatos que Barkoder destaca para los sectores verticales de fabricación, atención médica y automoción.

Enfoque del SDK de Barkoder

Barkoder admite la lectura de DataMatrix con configuraciones DPM para marcas grabadas con láser y por micropuntos. El SDK también es compatible con PDF417, azteca y otros formatos 2D de alta densidad con gran precisión en cámaras móviles. Todo esto funciona dentro del sistema de procesamiento de la cámara en iOS o Android:

// iOS Swift — not usable from C#
barkoderView.config = BarkoderConfig(licenseKey: "LICENSE_KEY") { config in
    config.decoder.decoderType = .dataMatrix
}
barkoderView.startScanning { result in
    print(result.textualData ?? "No result")
}

Barkoder no genera códigos de barras DataMatrix ni ningún otro formato de código de barras. Es un SDK de solo lectura.

Enfoque IronBarcode

IronBarcode lee y genera DataMatrix de forma nativa. En cuanto a la lectura, ReadingSpeed.ExtremeDetail se encarga del bajo contraste y los bordes rugosos típicos de las marcas DPM grabadas con láser. En cuanto a la generación, BarcodeWriter.CreateBarcode() produce DataMatrix para la creación de etiquetas de piezas:

using IronBarCode;

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

// Generate a DataMatrix barcode for a part label
BarcodeWriter.CreateBarcode("PART-ID-20240315-A42", BarcodeEncoding.DataMatrix)
    .SaveAsPng("part-label.png");

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

// Read auto-detects format — DataMatrix, QR, Code128, PDF417, etc.
var results = BarcodeReader.Read("etched-part.png");
using IronBarCode;

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

// Generate a DataMatrix barcode for a part label
BarcodeWriter.CreateBarcode("PART-ID-20240315-A42", BarcodeEncoding.DataMatrix)
    .SaveAsPng("part-label.png");

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

// Read auto-detects format — DataMatrix, QR, Code128, PDF417, etc.
var results = BarcodeReader.Read("etched-part.png");
Imports IronBarCode

IronBarCode.License.LicenseKey = "YOUR-KEY"

' Generate a DataMatrix barcode for a part label
BarcodeWriter.CreateBarcode("PART-ID-20240315-A42", BarcodeEncoding.DataMatrix) _
    .SaveAsPng("part-label.png")

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

' Read auto-detects format — DataMatrix, QR, Code128, PDF417, etc.
Dim results = BarcodeReader.Read("etched-part.png")
$vbLabelText   $csharpLabel

Para obtener una lista completa de los formatos compatibles y las opciones de generación, consulte la guía de generación de códigos de barras de IronBarcode .

Referencia de mapeo de API

Dado que no existe código C# de Barkoder del que tomar como referencia, esta tabla establece las equivalencias conceptuales entre lo que Barkoder hace en dispositivos móviles y cómo IronBarcode logra el mismo resultado en .NET:

Concepto Barkoder Equivalente de IronBarcode
Inicialización del SDK con clave de licencia IronBarCode.License.LicenseKey = "YOUR-KEY"
DeblurEnabled = true Speed = ReadingSpeed.ExtremeDetail
MultipleScanningEnabled = true ExpectMultipleBarcodes = true
DecoderType = .dataMatrix BarcodeEncoding.DataMatrix (autodetectado en lectura)
startScanning(callback) BarcodeReader.Read("image.png") - resultado síncrono
result.textualData result.Value
result.symbology result.Format
Recuperación de daños de MatrixSight ReadingSpeed.ExtremeDetail con preprocesamiento ML
Análisis del encuadre de la cámara Entrada de archivo/flujo/matriz de bytes
Procesamiento en el dispositivo Totalmente local: sin llamadas de red.
Sin soporte para la generación BarcodeWriter.CreateBarcode() / QRCodeWriter.CreateQrCode()
Sin soporte para PDF BarcodeReader.Read("document.pdf") - nativo
Sin despliegue de servidor Funciona en ASP.NET Core, Docker, Azure Functions, Lambda

Cuando los equipos consideran migrar del SDK de Barkoder a IronBarcode

Requisitos del proyecto .NET

El escenario más común es sencillo: un desarrollador o un equipo está creando una aplicación .NET ( ASP.NET Core, un servicio de Windows, una herramienta de consola, una aplicación de escritorio) y se encuentra con Barkoder durante su investigación. Leen sobre MatrixSight, DeBlur y la detección de múltiples códigos de barras, encuentran las características atractivas y luego descubren que ninguna de ellas es accesible desde C#. La evaluación finaliza en NuGet. Los equipos que se encuentran en esta situación no están abandonando Barkoder; Están identificando la herramienta adecuada para su plataforma desde el principio. IronBarcode es la respuesta en .NET a los requisitos que Barkoder satisface en dispositivos móviles.

Flujos de trabajo de procesamiento de códigos de barras del lado del servidor

Algunos equipos crean inicialmente un prototipo de flujo de trabajo para el procesamiento de códigos de barras mediante una aplicación de escaneo móvil (como Barkoder u otro SDK móvil) y, posteriormente, necesitan replicar o ampliar dicho flujo de trabajo en el servidor. Algunos ejemplos comunes incluyen el procesamiento de imágenes de códigos de barras cargadas a través de una API, la lectura de códigos de barras de documentos PDF en un sistema de gestión documental o el procesamiento por lotes de archivos de etiquetas escaneadas. Ninguno de estos flujos de trabajo es posible con Barkoder, que no tiene un modelo de implementación del lado del servidor. IronBarcode gestiona todas estas funcionalidades con la misma API estática en ASP.NET Core, Azure Functions, Docker y AWS Lambda.

Requisitos para la generación de códigos de barras

Los equipos que desarrollan aplicaciones .NET para logística, inventario o cumplimiento normativo suelen descubrir que leer códigos de barras es solo la mitad del proceso. La generación de códigos de barras —imprimir etiquetas, insertar códigos QR en documentos, producir manifiestos de envío— es igualmente importante. Barkoder está diseñado para ser de solo lectura; No tiene capacidad de generación. Cuando el alcance de un proyecto se amplía más allá de la mera lectura, una biblioteca que cubra ambos lados del flujo de trabajo elimina la necesidad de integrar una segunda dependencia. IronBarcode ofrece funciones de lectura y generación en más de 50 formatos a través de una API consistente.

Procesamiento de documentos PDF

En las aplicaciones Enterprise .NET , los códigos de barras aparecen con frecuencia incrustados en documentos PDF: facturas, manifiestos de envío, historiales médicos, documentos de cumplimiento normativo. Barkoder no tiene ni idea de este flujo de trabajo; Está diseñado para la entrada de cámara en un dispositivo móvil. Los equipos que necesitan leer códigos de barras de documentos PDF entrantes, extraer datos de códigos de barras para la lógica empresarial o verificar la presencia de códigos de barras en archivos de documentos requieren una biblioteca con soporte nativo para PDF. IronBarcode lee los códigos de barras directamente de los archivos PDF sin necesidad de extraer imágenes intermedias.

Previsibilidad de precios y despliegue

El modelo de precios del SDK móvil de Barkoder se estructura en torno a la aplicación móvil y el modelo de distribución. Para los equipos que evalúan herramientas para un entorno .NET , ese modelo de precios es irrelevante, ya que el SDK no se ejecuta en .NET en absoluto. Cuando los equipos identifican IronBarcode como la herramienta adecuada para su plataforma, el modelo de precios es sencillo: una licencia perpetua de un solo pago sin cargos por solicitud ni límites de volumen, independientemente de la cantidad de códigos de barras que se procesen.

Consideraciones comunes sobre la migración

De la entrada de cámara móvil a la entrada basada en archivos

Los equipos que hayan implementado un prototipo de escaneo móvil basado en Barkoder y necesiten replicar esa funcionalidad en .NET descubrirán que el modelo de entrada cambia de fotogramas de la cámara a archivo, flujo de datos o matriz de bytes. IronBarcode acepta los mismos datos en múltiples formas: una cadena de ruta de archivo, un Stream, un byte[] o un System.Drawing.Image. Por lo demás, la lógica de procesamiento del código de barras es idéntica:

// All of these call the same underlying pipeline
var results1 = BarcodeReader.Read("scan.png");
var results2 = BarcodeReader.Read(imageStream);
var results3 = BarcodeReader.Read(imageBytes);
// All of these call the same underlying pipeline
var results1 = BarcodeReader.Read("scan.png");
var results2 = BarcodeReader.Read(imageStream);
var results3 = BarcodeReader.Read(imageBytes);
' All of these call the same underlying pipeline
Dim results1 = BarcodeReader.Read("scan.png")
Dim results2 = BarcodeReader.Read(imageStream)
Dim results3 = BarcodeReader.Read(imageBytes)
$vbLabelText   $csharpLabel

Compromiso entre velocidad y precisión

El modo DeBlur de Barkoder está siempre activo cuando se configura y se ejecuta dentro del bucle de la cámara del móvil. IronBarcode expone explícitamente la relación precisión-velocidad a través de ReadingSpeed. Para la mayoría de los archivos, ReadingSpeed.Balanced es apropiado. Para la entrada dañada o degradada que Balanced no puede decodificar, ReadingSpeed.ExtremeDetail aplica la tubería completa de ML multipase. Estructurar el procesamiento por lotes para utilizar Balanced por defecto y volver a ExtremeDetail sólo en caso de fallo es el enfoque recomendado para los flujos de trabajo sensibles al rendimiento.

Integración asíncrona en ASP.NET Core

El método BarcodeReader.Read() de IronBarcode es síncrono. En los puntos finales de ASP.NET Core que gestionan solicitudes concurrentes, envuelva la llamada en Task.Run() para evitar el bloqueo del hilo de solicitud:

var results = await Task.Run(() => BarcodeReader.Read(imageBytes, options));
var results = await Task.Run(() => BarcodeReader.Read(imageBytes, options));
Dim results = Await Task.Run(Function() BarcodeReader.Read(imageBytes, options))
$vbLabelText   $csharpLabel

Especificación de formato para rendimiento

IronBarcode detecta automáticamente los formatos de código de barras por defecto. En escenarios de alto rendimiento donde se conoce el formato esperado, especificar dicho formato reduce el tiempo de procesamiento al eliminar las pruebas de formato que no coincidirán. Utilice BarcodeReaderOptions.ExpectedBarcodeFormats para restringir la búsqueda cuando el formato se conozca de antemano.

Funcionalidades adicionales de IronBarcode

Más allá de las funcionalidades equivalentes a las de Barkoder para dispositivos móviles, IronBarcode ofrece capacidades que son relevantes específicamente para entornos de servidor y escritorio .NET :

  • Incorporación del logotipo del código QR: QRCodeWriter.CreateQrCode().AddBrandLogo() añade una imagen de marca en el centro de un código QR generado, un requisito común para los flujos de trabajo de marketing y empaquetado
  • Lectura de códigos de barras PDF : La entrada de PDF nativo significa que no se requiere extracción de imágenes intermedias; Los archivos PDF de varias páginas se escanean en una sola llamada.
  • Impresión de códigos de barras en PDF : IronBarcode puede generar códigos de barras e imprimirlos en documentos PDF existentes, lo que permite flujos de trabajo automatizados para el etiquetado y la gestión de documentos.
  • Lectura de imágenes a granel: BarcodeReader.ReadBulk() procesa múltiples imágenes simultáneamente para operaciones por lotes de alto rendimiento
  • Generación de códigos QR con estilo : colores, márgenes y niveles de corrección de errores personalizados para códigos QR.
  • Formatos GS1 y HIBC : Compatibilidad con estándares de códigos de barras para el sector sanitario y la cadena de suministro, más allá de los formatos estándar 1D y 2D.

Compatibilidad con .NET y preparación para el futuro

IronBarcode es compatible con .NET Framework 4.6.2 y todas las versiones modernas de .NET hasta .NET 9, y su desarrollo activo garantiza la compatibilidad con .NET 10, prevista para 2026. La biblioteca se ejecuta en Windows, Linux y macOS, y se ha probado con Docker, Funciones Azurey AWS Lambda. A medida que el ecosistema .NET continúa evolucionando hacia patrones multiplataforma y nativos de la nube, el modelo de ejecución totalmente local de IronBarcode, sin dependencia de la nube, sin gestión de claves API y sin latencia de red, se alinea con la dirección de la arquitectura de aplicaciones .NET moderna.

Conclusión

Barkoder SDK e IronBarcode operan en ámbitos fundamentalmente diferentes. Barkoder es un SDK de escaneo de cámara móvil diseñado para iOS y Android, con un núcleo de procesamiento en C/C++ y distribución a través de CocoaPods, Maven y marcos de trabajo móviles híbridos. IronBarcode es una biblioteca nativa de .NET diseñada para implementaciones en servidores, equipos de escritorio y la nube, distribuida a través de NuGet e integrada en el ecosistema .NET mediante patrones estándar. Las dos bibliotecas no compiten en la misma plataforma: satisfacen los mismos requisitos de procesamiento de códigos de barras en entornos de ejecución completamente diferentes.

Barkoder es la opción correcta a la hora de crear aplicaciones móviles para iOS o Android que necesiten escaneo de cámara en tiempo real. Sus funciones MatrixSight y DeBlur son realmente potentes para escenarios de escaneo de campo donde no se puede controlar la calidad de la imagen. Su detección de múltiples códigos de barras y su compatibilidad con DPM son ideales para los flujos de trabajo móviles de fabricación y logística. Si tu equipo está desarrollando con React Nativoo Flutter para que los trabajadores móviles escaneen objetos físicos con la cámara de un dispositivo, Barkoder debería estar en la evaluación.

IronBarcode es la opción correcta al crear aplicaciones .NET (API de ASP.NET Core , servicios de Windows, canalizaciones de procesamiento de documentos, herramientas de escritorio o funciones en la nube) que necesitan lectura de códigos de barras, generación de códigos de barras o ambas cosas. Cubre todo el flujo de trabajo de códigos de barras desde un único paquete NuGet , se ejecuta completamente de forma local sin dependencias de red y se integra con patrones .NET estándar, incluyendo la inyección de dependencias, async/await y el alojamiento en la nube. Para los desarrolladores .NET que llegaron a Barkoder tras realizar comparativas, IronBarcode ofrece las mismas funcionalidades básicas (lectura tolerante a daños, detección de múltiples códigos de barras, DataMatrix y compatibilidad con formatos de alta densidad) implementadas de forma nativa para la plataforma .NET .

La conclusión práctica es sencilla: si estás programando en C#, Barkoder nunca fue una opción. El tiempo dedicado a evaluar su lista de características es útil, ya que aclara qué capacidades se necesitan, e IronBarcode las cubre todas en el entorno donde se ejecuta realmente la aplicación.

Preguntas Frecuentes

¿Qué es Barkoder SDK?

Barkoder SDK 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 Barkoder SDK e IronBarcode?

IronBarcode utiliza una API estática y sin estado que no requiere gestión de instancias, mientras que el SDK de Barkoder 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 más fácil licenciar IronBarcode que Barkoder SDK?

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 Barkoder SDK?

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 Barkoder SDK?

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 Barkoder?

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 Barkoder SDK 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 Barkoder SDK a IronBarcode?

La migración de Barkoder SDK 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