Saltar al pie de página
COMPARAR CON OTROS COMPONENTES

Infragistics Barcode vs IronBarcode: Comparación de bibliotecas de códigos de barras C#

Neodynamic Barcode vs IronBarcode: Comparación de Arquitectura SDK Dividida y Soporte de Formato

El SDK de lector de códigos de barras de Neodynamic no puede leer códigos QR. Puedes comprar ambos SDK de Neodynamic y aun así no poder leer los mismos códigos QR que genera el generador complementario. Esa única contradicción —un generador que admite códigos QR, DataMatrix, PDF417 y Aztec, junto con un lector que no admite ninguno de esos formatos— define la experiencia práctica de trabajar con las herramientas de códigos de barras de Neodynamic y enmarca la comparación con IronBarcode que se presenta a continuación.

Comprensión del código de barras neodinámico

Neodynamic ofrece funcionalidad de código de barras a través de dos productos comerciales completamente independientes: Barcode Professional SDK para la generación de códigos de barras y Barcode Reader SDK para la lectura de códigos de barras. Cada producto se distribuye como un paquete NuGet independiente, requiere su propia compra y cuenta con su propia clave de licencia. Un proyecto que requiere tanto generación como lectura debe integrar ambos paquetes de forma independiente, mantenerlos mediante ciclos de actualización separados y configurarlos al iniciar la aplicación.

Barcode Professional SDK es el componente de generación. Admite una amplia gama de simbologías, incluidos formatos lineales (Code 128, Code 39, EAN-13, UPC-A, Codabar, ITF) y formatos 2D (QR Code, DataMatrix, PDF417, Aztec). El SDK utiliza una API basada en instancias: se construye un objeto BarcodeProfessional, se le asignan sus propiedades Code y Symbology, y se llama a GetBarcodeImage() para producir un System.Drawing.Image que se guarda a través del proceso estándar System.Drawing.Imaging. La edición .NET Framework lleva una dependencia de System.Drawing; una edición separada .NET Standard se distribuye a través de ComponentSource.

El SDK del lector de códigos de barras es el componente de lectura. Acepta un System.Drawing.Bitmap y devuelve resultados solo para simbologías 1D. El lector no admite códigos QR, DataMatrix, PDF417, Aztec ni ningún otro formato 2D. Cuando se envía un código de barras 2D, el SDK no devuelve ningún resultado; no genera ninguna excepción, simplemente produce un conjunto de resultados vacío. El SDK Barcode Reader fue marcado como final de vida útil el 31 de diciembre de 2019, y su paquete NuGet (Neodynamic.SDK.BarcodeReader 1.0.2000) no se ha actualizado desde julio de 2012, con .NET Framework 2.0/3.x/4.x como sus únicos objetivos. Recuperar la capacidad de lectura 2D requiere por lo tanto agregar una tercera biblioteca fuera del ecosistema de Neodynamic.

Características arquitectónicas clave del código de barras neodinámico:

  • Productos separados para generación y lectura: Se requieren dos paquetes NuGet , dos compras y dos claves de licencia para un proyecto que utilice ambas funcionalidades.
  • Generación 2D sin lectura 2D: Barcode Professional SDK genera códigos QR, DataMatrix, PDF417 y Aztec, pero el Barcode Reader SDK complementario no puede leer ninguno de esos formatos.
  • API de generación basada en instancias: La generación requiere construir un objeto BarcodeProfessional y asignar propiedades antes de llamar a GetBarcodeImage().
  • Dependencia de System.Drawing en la mayoría de las ediciones: La edición Barcode Professional .NET Windows y el SDK Barcode Reader dependen de System.Drawing, lo que limita la implementación en Linux y contenedores para esas ediciones. La edición Barcode Professional .NET Standard usa SkiaSharp y evita esa dependencia.
  • Ámbito de lectura solo 1D: El SDK del lector de códigos de barras admite los formatos Code 128, EAN-13, UPC-A, Code 39, Codabar, Interleaved 2 of 5 y MSI/Plessey. No se incluye formato 2D.
  • Sin soporte nativo para PDF: Ninguno de los SDK lee códigos de barras directamente de documentos PDF; Se requiere un paso de extracción de imágenes por separado.
  • Sin detección automática de formato: El lector deduce el formato a partir de lo que admite, en lugar de a partir del contenido de la imagen.

La arquitectura del SDK dividido

Un proyecto que compra ambos SDKs de Neodynamic debe configurar dos bloques de licencia separados al inicio. Las asignaciones duales LicenseOwner y LicenseKey utilizan diferentes espacios de nombres y diferentes nombres de clases, y ninguno de los bloques es consciente del otro:

// Neodynamic: two products, two license configurations
using Neodynamic.SDK.Barcode;
using Neodynamic.SDK.BarcodeReader;

// Generation license (Barcode Professional SDK)
BarcodeProfessional.LicenseOwner = "Company";
BarcodeProfessional.LicenseKey = "GEN-KEY";

// Reader license — separate purchase, separate key
Neodynamic.SDK.BarcodeReader.BarcodeReader.LicenseOwner = "Company";
Neodynamic.SDK.BarcodeReader.BarcodeReader.LicenseKey = "READ-KEY";
// Neodynamic: two products, two license configurations
using Neodynamic.SDK.Barcode;
using Neodynamic.SDK.BarcodeReader;

// Generation license (Barcode Professional SDK)
BarcodeProfessional.LicenseOwner = "Company";
BarcodeProfessional.LicenseKey = "GEN-KEY";

// Reader license — separate purchase, separate key
Neodynamic.SDK.BarcodeReader.BarcodeReader.LicenseOwner = "Company";
Neodynamic.SDK.BarcodeReader.BarcodeReader.LicenseKey = "READ-KEY";
Imports Neodynamic.SDK.Barcode
Imports Neodynamic.SDK.BarcodeReader

' Neodynamic: two products, two license configurations

' Generation license (Barcode Professional SDK)
BarcodeProfessional.LicenseOwner = "Company"
BarcodeProfessional.LicenseKey = "GEN-KEY"

' Reader license — separate purchase, separate key
Neodynamic.SDK.BarcodeReader.BarcodeReader.LicenseOwner = "Company"
Neodynamic.SDK.BarcodeReader.BarcodeReader.LicenseKey = "READ-KEY"
$vbLabelText   $csharpLabel

Este patrón se repite en todos los entornos (desarrollo, pruebas y producción) y debe mantenerse siempre que se actualice o renueve cualquiera de los productos.

Entendiendo IronBarcode

IronBarcode es una biblioteca comercial de códigos de barras .NET desarrollada por Iron Software que proporciona generación y lectura de códigos de barras a través de un único paquete NuGet bajo una única licencia. La biblioteca utiliza un modelo de API estática: la generación se realiza a través de BarcodeWriter.CreateBarcode() y la lectura a través de BarcodeReader.Read(). Ambos métodos funcionan con todas las simbologías compatibles sin necesidad de rutas de código específicas para cada formato.

IronBarcode se construye sin una dependencia de System.Drawing, lo que lo hace desplegable en Linux, macOS y en contenedores Docker sin configuración específica de la plataforma. La biblioteca lee códigos de barras de archivos de imagen, secuencias de imágenes y documentos PDF de forma nativa, sin necesidad de un paso de extracción de imágenes independiente para las fuentes PDF.

Características clave de IronBarcode:

  • Paquete único para generación y lectura: Un paquete NuGet , una clave de licencia y un bloque de configuración cubren todas las operaciones con códigos de barras.
  • Soporte unificado 1D y 2D: La misma API lee y genera más de 50 simbologías, incluyendo Code 128, EAN-13, Código QR, DataMatrix, PDF417 y Aztec.
  • API fluida y estática: BarcodeWriter.CreateBarcode() devuelve un resultado encadenable; BarcodeReader.Read() acepta rutas de archivo, flujos y documentos PDF.
  • Detección automática de formato: El lector identifica la simbología a partir del contenido de la imagen sin necesidad de que el usuario especifique el formato esperado.
  • Sin dependencia de System.Drawing: la implementación multiplataforma en Linux y en contenedores funciona sin configuración adicional de bibliotecas nativas.
  • Lectura nativa de PDF: Los códigos de barras incrustados en los documentos PDF se leen directamente, devolviendo los metadatos del número de página junto con los valores del código de barras.
  • Procesamiento asincrónico y por lotes: BarcodeReader.ReadAsync() y las operaciones por lotes de varias páginas soportan cargas de trabajo de servidores de alto rendimiento.

Comparación de características

La siguiente tabla resume las principales diferencias entre los productos Neodynamic e IronBarcode:

Característica Neodynamic BarCode Professional Lector de códigos de barras neodinámico IronBarcode
Generación de BarCodes No
Lectura de códigos de barras 1D No
Lectura de códigos de barras 2D No No
Productos necesarios 1 (solo generación) 1 (solo lectura) 1 (ambos)
Se requieren claves de licencia 1 por cada producto comprado 1 por cada producto comprado 1 en total
Lectura nativa de códigos de barras PDF No No
Dependencia de System.Drawing Edición específica No

Comparación detallada de características

Característica Neodynamic BarCode Professional Lector de códigos de barras neodinámico IronBarcode
Generación
Generación del código 128 N/A
Generación EAN-13 / UPC-A N/A
Generación del código 39 N/A
Generación de código QR N/A
Generación de DataMatrix N/A
Generación PDF417 N/A
generación azteca N/A
Lectura
Lectura del código 128 N/A
Lectura EAN-13 / UPC-A N/A
Lectura del código 39 N/A
Lectura de Codabar N/A
Lectura de código QR N/A No
Lectura de DataMatrix N/A No
Lectura del PDF417 N/A No
Lectura azteca N/A No
Detección automática de formato N/A No
Fuentes de entrada
Entrada de archivo de imagen
Entrada de documento PDF No No
Entrada de flujo
Plataforma y licencias
Dependencia de System.Drawing Edición específica No
Soporte para Linux/Docker Sí (edición .NET Standard) No
.NET Standard 2.0 Sí (edición .NET Standard) No
.NET 8 / .NET 9 Sí (edición .NET Standard) No
Se requieren paquetes NuGet 1 por producto 1 por producto 1 en total
Se requieren claves de licencia 1 por producto 1 por producto 1 en total

Compatibilidad con formatos de lectura

La diferencia técnica más significativa en esta comparación radica en el formato de lectura que existe entre los dos SDK de Neodynamic e IronBarcode .

Enfoque neodinámico para lectores de códigos de barras

El lector de códigos de barras Neodynamic solo admite códigos de barras lineales. Cuando se introduce un código de barras 2D en el lector, el SDK devuelve un conjunto de resultados vacío o nulo. No se genera ninguna excepción ni aparece ningún mensaje de error que indique lo sucedido. Los equipos que trabajan con este SDK suelen descubrir la limitación después de implementar código que llama al lector en imágenes de códigos QR y observar que la colección de resultados siempre está vacía.

Un patrón defensivo común en las bases de código que utilizan Neodynamic Reader es una comprobación explícita que genera una excepción cuando se espera un formato 2D:

using Neodynamic.SDK.BarcodeReader;
using System.Drawing;

public string ReadQrCode(string imagePath)
{
    using var bitmap = new Bitmap(imagePath);
    var reader = new BarcodeReader();
    var results = reader.Read(bitmap);

    // Results will be null or empty — QR codes are not recognised by this SDK
    if (results == null || !results.Any())
    {
        throw new NotSupportedException(
            "Neodynamic Barcode Reader does not support QR codes");
    }

    return results.First().Value;
}
using Neodynamic.SDK.BarcodeReader;
using System.Drawing;

public string ReadQrCode(string imagePath)
{
    using var bitmap = new Bitmap(imagePath);
    var reader = new BarcodeReader();
    var results = reader.Read(bitmap);

    // Results will be null or empty — QR codes are not recognised by this SDK
    if (results == null || !results.Any())
    {
        throw new NotSupportedException(
            "Neodynamic Barcode Reader does not support QR codes");
    }

    return results.First().Value;
}
Imports Neodynamic.SDK.BarcodeReader
Imports System.Drawing

Public Function ReadQrCode(imagePath As String) As String
    Using bitmap As New Bitmap(imagePath)
        Dim reader As New BarcodeReader()
        Dim results = reader.Read(bitmap)

        ' Results will be null or empty — QR codes are not recognised by this SDK
        If results Is Nothing OrElse Not results.Any() Then
            Throw New NotSupportedException("Neodynamic Barcode Reader does not support QR codes")
        End If

        Return results.First().Value
    End Using
End Function
$vbLabelText   $csharpLabel

Este método no se puede completar únicamente con el SDK de Neodynamic Reader. El NotSupportedException no es una solución temporal: refleja el límite real de capacidad del lector para la entrada 2D.

Enfoque IronBarcode

IronBarcode lee todas las simbologías compatibles a través de la misma llamada BarcodeReader.Read(). El formato se detecta automáticamente a partir del contenido de la imagen. Un código QR, un código Code 128 y un código de barras DataMatrix utilizan el mismo código de llamada:

using IronBarCode;

public string ReadQrCode(string imagePath)
{
    // QR codes, DataMatrix, PDF417 — all handled automatically
    var result = BarcodeReader.Read(imagePath).FirstOrDefault();
    return result?.Value;
}
using IronBarCode;

public string ReadQrCode(string imagePath)
{
    // QR codes, DataMatrix, PDF417 — all handled automatically
    var result = BarcodeReader.Read(imagePath).FirstOrDefault();
    return result?.Value;
}
Imports IronBarCode

Public Function ReadQrCode(imagePath As String) As String
    ' QR codes, DataMatrix, PDF417 — all handled automatically
    Dim result = BarcodeReader.Read(imagePath).FirstOrDefault()
    Return If(result?.Value, Nothing)
End Function
$vbLabelText   $csharpLabel

La persona que realiza la llamada no especifica un formato esperado. IronBarcode identifica la simbología y devuelve el valor. Para obtener información completa sobre las opciones de lectura de imágenes, incluida la detección de múltiples códigos de barras y el preprocesamiento de imágenes, consulte la guía de lectura de códigos de barras a partir de imágenes .

Generación de códigos de barras

Tanto Neodynamic BarCode Professionalcomo IronBarcode son capaces de generar códigos de barras 1D y 2D. La diferencia radica en el estilo de la API y el número de dependencias, más que en la capacidad de salida.

Enfoque Professional del código de barras neodinámico

La API de generación de Neodynamic se basa en instancias. Se construye un objeto BarcodeProfessional, se asignan sus propiedades individualmente, y se llama a GetBarcodeImage() para devolver un System.Drawing.Image. La imagen se guarda entonces utilizando la enumeración System.Drawing.Imaging.ImageFormat:

using Neodynamic.SDK.Barcode;

// Configure license first
BarcodeProfessional.LicenseOwner = "Your Company";
BarcodeProfessional.LicenseKey = "YOUR-KEY";

// Build the barcode through property assignment
var barcode = new BarcodeProfessional();
barcode.Code = "12345678";
barcode.Symbology = Symbology.Code128;
barcode.BarcodeUnit = BarcodeUnit.Pixel;

// Get image and save via System.Drawing
System.Drawing.Image image = barcode.GetBarcodeImage();
image.Save("output.png", System.Drawing.Imaging.ImageFormat.Png);
using Neodynamic.SDK.Barcode;

// Configure license first
BarcodeProfessional.LicenseOwner = "Your Company";
BarcodeProfessional.LicenseKey = "YOUR-KEY";

// Build the barcode through property assignment
var barcode = new BarcodeProfessional();
barcode.Code = "12345678";
barcode.Symbology = Symbology.Code128;
barcode.BarcodeUnit = BarcodeUnit.Pixel;

// Get image and save via System.Drawing
System.Drawing.Image image = barcode.GetBarcodeImage();
image.Save("output.png", System.Drawing.Imaging.ImageFormat.Png);
Imports Neodynamic.SDK.Barcode
Imports System.Drawing

' Configure license first
BarcodeProfessional.LicenseOwner = "Your Company"
BarcodeProfessional.LicenseKey = "YOUR-KEY"

' Build the barcode through property assignment
Dim barcode As New BarcodeProfessional()
barcode.Code = "12345678"
barcode.Symbology = Symbology.Code128
barcode.BarcodeUnit = BarcodeUnit.Pixel

' Get image and save via System.Drawing
Dim image As Image = barcode.GetBarcodeImage()
image.Save("output.png", Imaging.ImageFormat.Png)
$vbLabelText   $csharpLabel

El SDK ofrece opciones de personalización legítimas, que incluyen control de DPI, alineación de texto, configuración de color y dimensionamiento de la zona silenciosa. Son útiles para flujos de trabajo de impresión donde las dimensiones físicas precisas son importantes. La capacidad de generación en sí misma está completa; Las limitaciones que impulsan la migración se encuentran en el lado de la lectura, no en el de la generación.

Enfoque IronBarcode

IronBarcode utiliza un enfoque estático fluido. La codificación y los datos se pasan como parámetros a BarcodeWriter.CreateBarcode(), y el formato de salida se expresa como un nombre de método en el objeto devuelto. No se requiere una importación de System.Drawing:

using IronBarCode;

BarcodeWriter.CreateBarcode("12345678", BarcodeEncoding.Code128)
    .SaveAsPng("output.png");
using IronBarCode;

BarcodeWriter.CreateBarcode("12345678", BarcodeEncoding.Code128)
    .SaveAsPng("output.png");
Imports IronBarCode

BarcodeWriter.CreateBarcode("12345678", BarcodeEncoding.Code128) _
    .SaveAsPng("output.png")
$vbLabelText   $csharpLabel

Para la generación de códigos de barras 2D, la clase dedicada QRCodeWriter proporciona opciones adicionales específicas para códigos QR:

using IronBarCode;

QRCodeWriter.CreateQrCode("https://example.com", 500, QRCodeWriter.QrErrorCorrectionLevel.Highest)
    .SaveAsPng("qrcode.png");
using IronBarCode;

QRCodeWriter.CreateQrCode("https://example.com", 500, QRCodeWriter.QrErrorCorrectionLevel.Highest)
    .SaveAsPng("qrcode.png");
Imports IronBarCode

QRCodeWriter.CreateQrCode("https://example.com", 500, QRCodeWriter.QrErrorCorrectionLevel.Highest) _
    .SaveAsPng("qrcode.png")
$vbLabelText   $csharpLabel

Para obtener orientación sobre cómo generar simbologías 1D con opciones de tamaño y anotación, consulte la guía para crear códigos de barras 1D . Para la creación de códigos de barras 2D, incluidos DataMatrix y PDF417, consulte la guía para la creación de códigos de barras 2D .

Estructura de licencias y productos

El modelo de licencias representa una de las diferencias más prácticas entre las dos opciones para los equipos que desarrollan sistemas que requieren tanto generación como lectura.

Enfoque neodinámico

La funcionalidad de código de barras de Neodynamic se reparte entre dos productos con licencia independiente. El SDK de Barcode Professional se encarga de la generación y el SDK de Barcode Reader se encarga de la lectura. Cada producto requiere una compra por separado y tiene una clave de licencia independiente. Un equipo que compra ambos productos debe mantener dos bloques de configuración LicenseOwner / LicenseKey, rastrear dos fechas de renovación separadas y tratar con dos canales de soporte separados cuando surjan problemas.

El SDK Barcode Professional tiene un precio de aproximadamente $352 para una licencia de un solo desarrollador en la edición Basic y de aproximadamente $705 en la edición Ultimate (licencias de desarrollador a través de ComponentSource). El SDK de Lector de Códigos de Barras tiene un costo separado y se suministra bajo precios heredados: el producto fue marcado fin de vida útil el 31 de diciembre de 2019. Un proyecto que requiere lectura 2D no puede cumplir con ese requisito con productos de Neodynamic, ya que a cualquier precio se debe agregar una tercera biblioteca. Consulte la página de formatos de código de barras compatibles con IronBarcode para obtener una lista completa de lo que cubre una única licencia unificada.

Enfoque IronBarcode

IronBarcode se vende como un único producto que abarca todas las operaciones de códigos de barras (generación y lectura en todas las simbologías compatibles) bajo una sola clave de licencia. No se requiere una licencia de lector independiente, ni una licencia de generador independiente, ni ningún costo adicional por la compatibilidad con formatos 2D. La clave de licencia se configura una sola vez al iniciar la aplicación y no requiere ninguna configuración adicional:

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

IronBarCode.License.LicenseKey = "YOUR-LICENSE-KEY"
$vbLabelText   $csharpLabel

IronBarcode Lite tiene un precio de 749 dólares para un solo desarrollador e incluye todas las funcionalidades. Para conocer los precios actuales y las opciones de volumen, consulte la página de licencias de IronBarcode .

Referencia de mapeo de API

API neodinámica Equivalente de IronBarcode Notas
BarcodeProfessional.LicenseOwner = "..." IronBarCode.License.LicenseKey = "key" Una sola llave reemplaza al propietario + par de llaves
BarcodeProfessional.LicenseKey = "..." (part of single key above) No hay un campo de propietario separado
Neodynamic.SDK.BarcodeReader.BarcodeReader.LicenseOwner (removed) No es necesario
Neodynamic.SDK.BarcodeReader.BarcodeReader.LicenseKey (removed) No es necesario
new BarcodeProfessional() BarcodeWriter.CreateBarcode(data, encoding) Método estático, sin instancia
barcode.Code = data Primer parámetro de CreateBarcode Aprobado en construcción
barcode.Symbology = Symbology.Code128 BarcodeEncoding.Code128 Segundo parámetro
barcode.Symbology = Symbology.QRCode BarcodeEncoding.QRCode Se ofrece apoyo para el viaje de ida y vuelta completo.
barcode.GetBarcodeImage().Save(path, ImageFormat.Png) .SaveAsPng(path) Fluido, sin enumeración ImageFormat
new BarcodeReader().Read(bitmap) BarcodeReader.Read(imagePath) Método estático, acepta ruta de archivo
result.Value result.Value Mismo nombre de propiedad
throw new NotSupportedException(...) para QR BarcodeReader.Read(imagePath) Reemplazar con llamada de lectura estándar

Cuando los equipos consideran pasar de Neodynamic Barcode a IronBarcode

Requisitos de lectura de códigos QR

El escenario más común que lleva a los equipos de Neodynamic a IronBarcode es el descubrimiento de que los códigos QR generados por el SDK de Barcode Professional no pueden ser leídos por el SDK de Barcode Reader. Los equipos que desarrollan sistemas de etiquetado de productos, herramientas de gestión de inventario o flujos de trabajo de seguimiento de documentos suelen implementar la generación y la lectura como fases separadas de un sistema más amplio. Cuando la generación se realiza primero con Barcode Professional, la limitación del lector solo se hace evidente cuando se intenta utilizar el componente de lectura. En ese momento, el proyecto ya se ha comprometido con Neodynamic para la generación, y agregar una tercera biblioteca para cubrir la lectura 2D introduce una complejidad en la gestión de versiones que no existiría con un SDK unificado.

Reducción de la complejidad del producto

Algunos equipos migran no por una brecha de formato específica, sino porque la sobrecarga de mantener dos productos separados para lo que conceptualmente es una sola funcionalidad se convierte en un punto de fricción recurrente. Dos paquetes en el archivo .csproj, dos ciclos de renovación de licencia, dos conjuntos de notas de lanzamiento para revisar y dos posibles fuentes de incompatibilidad cuando se aplican actualizaciones de .NET o Windows — ninguno de esos gastos generales proporciona funcionalidad más allá de lo que un único paquete unificado ofrecería. Los equipos que realizan una auditoría de dependencias como parte de una actualización de .NET a menudo identifican la disposición de doble paquete de Neodynamic como una oportunidad de simplificación.

Procesamiento de códigos de barras PDF

Las aplicaciones que procesan documentos PDF que contienen códigos de barras representan un escenario en el que ambos SDK de Neodynamic se quedan cortos simultáneamente. Ni el SDK de generación ni el SDK de lectura pueden abrir un archivo PDF y extraer los valores del código de barras de sus páginas. Los equipos que trabajan con manifiestos de envío, documentos de facturación, historiales médicos o cualquier flujo de trabajo de documentos en el que los códigos de barras estén incrustados en archivos PDF deben implementar un paso intermedio de extracción de imágenes antes de que se pueda realizar cualquier lectura. Ese paso de extracción requiere una biblioteca adicional, lo que significa que el proyecto ya incluye una tercera dependencia para solucionar una limitación que una sola instalación de IronBarcode eliminaría.

Coherencia de formato entre lectura y escritura

Los equipos que gestionan flujos de trabajo de códigos de barras a gran escala a veces descubren que las inconsistencias en la compatibilidad de formatos entre la generación y la lectura crean problemas de prueba y validación. Cuando un sistema genera códigos QR para un propósito y lee diferentes tipos de formato para otro, la divergencia entre lo que admite el generador y lo que admite el lector crea lagunas en las pruebas de ida y vuelta. Un sistema en el que la generación y la lectura comparten la misma biblioteca y la misma lista de formatos compatibles es más sencillo de validar. La verificación de que un código de barras generado se puede leer correctamente se convierte en una operación de una sola biblioteca en lugar de una prueba de integración de varias bibliotecas.

Consideraciones comunes sobre la migración

Extracción de paquete doble

Migrar desde Neodynamic requiere eliminar ambos paquetes NuGet: Neodynamic.SDK.Barcode y Neodynamic.SDK.BarcodeReader. Ambos deben ser eliminados del archivo .csproj y ambas directivas de using correspondientes deben ser eliminadas de los archivos fuente. Ejecutar dotnet remove package para cada uno es suficiente; No existen dependencias compartidas entre ambos que requieran una limpieza adicional.

Limpieza de la configuración de licencia dual

Los dos bloques de configuración de licencia — uno para BarcodeProfessional y uno para Neodynamic.SDK.BarcodeReader.BarcodeReader — son ambos reemplazados por una sola asignación IronBarCode.License.LicenseKey. Esta asignación se realiza una vez al inicio de la aplicación, típicamente en Program.cs o en la inyección de dependencias de la aplicación. Cualquier archivo de configuración o variable de entorno que almacene claves de licencia de Neodynamic puede dejar de utilizarse después de que se verifique la migración.

Eliminación de NotSupportedException

Bases de código que encontraron la limitación de lectura 2D durante el desarrollo a menudo contienen métodos de marcador de posición que lanzan NotSupportedException para la lectura de código QR o DataMatrix. Estos métodos no son soluciones temporales — son reconocimientos honestos de que la capacidad no existía. Después de migrar a IronBarcode, cada cuerpo de método de este tipo se reemplaza con una llamada BarcodeReader.Read(imagePath) estándar. No se requiere ningún tratamiento especial; El formato se detecta automáticamente.

Funcionalidades adicionales de IronBarcode

Más allá de los puntos de comparación básicos, IronBarcode ofrece funcionalidades que no están disponibles en ninguno de los productos de Neodynamic:

  • Lectura nativa de códigos de barras en PDF: BarcodeReader.Read("document.pdf") lee códigos de barras directamente de documentos PDF, devolviendo información de número de página junto con valores de códigos de barras, sin necesidad de extracción de imagen intermedia.
  • Procesamiento por lotes asincrónico: BarcodeReader.ReadAsync() soporta lecturas no bloqueantes adecuadas para cargas de trabajo del lado del servidor que procesan grandes volúmenes de imágenes o documentos concurrentemente.
  • Corrección de errores mediante aprendizaje automático: IronBarcode aplica una corrección de errores basada en aprendizaje automático para recuperar valores de imágenes de códigos de barras dañadas, parcialmente ocultas o de baja resolución que, con decodificadores estándar, arrojarían resultados vacíos.
  • Detección de múltiples códigos de barras: Una única llamada BarcodeReader.Read() devuelve todos los códigos de barras presentes en una imagen, incluyendo imágenes de formato mixto que contienen simultáneamente simbologías 1D y 2D.
  • Inserción de códigos de barras en archivos PDF: IronBarcode puede insertar imágenes de códigos de barras directamente en documentos PDF existentes sin necesidad de una biblioteca PDF independiente.
  • Opciones de preprocesamiento de imágenes: En el lector se pueden configurar la corrección de brillo, el manejo de la rotación y la reducción de ruido para mejorar las tasas de reconocimiento en imágenes capturadas en condiciones difíciles.

Compatibilidad con .NET y preparación para el futuro

IronBarcode soporta .NET Standard 2.0, .NET Framework 4.6.2 y superiores, .NET Core 3.1, y todas las versiones actuales de .NET incluyendo .NET 8 y .NET 9. La biblioteca no depende de System.Drawing, lo que significa que se ejecuta sin modificaciones en Linux y en contenedores Docker. El SDK de Lector de Códigos de Barra de Neodynamic solo tiene como objetivo .NET Framework 2.0/3.x/4.x, su paquete NuGet no ha sido actualizado desde julio de 2012, y el producto fue marcado fin de vida útil el 31 de diciembre de 2019, por lo que no soporta .NET Core, .NET 5+, Linux o Docker. El SDK Barcode Professional se envía en múltiples ediciones; la edición .NET Standard utiliza SkiaSharp y se ejecuta en .NET Core / .NET 5+, mientras que la edición .NET Windows mantiene la dependencia de System.Drawing. IronBarcode recibe actualizaciones alineadas con el ritmo de lanzamiento de .NET.

Conclusión

El SDK Neodynamic BarCode Professionaly el SDK Lector de códigos de barras neodinámico representan conjuntamente un modelo de producto dividido en el que la generación y la lectura son ofertas comerciales separadas con límites de capacidad independientes. El generador admite códigos QR, DataMatrix, PDF417 y Aztec. El lector no. Esa asimetría no es una omisión menor: significa que los dos productos no pueden conformar un flujo de trabajo completo de códigos de barras para ninguna aplicación que requiera la lectura de códigos de barras 2D, y significa que los formatos más utilizados en pagos móviles, seguimiento farmacéutico, logística de envíos y procesamiento de documentos no están incluidos en el conjunto de capacidades del lector.

Neodynamic Barcode Professional es una opción válida cuando el requisito es únicamente la generación de códigos de barras. El SDK produce resultados de alta calidad en una amplia gama de simbologías, admite el control de DPI y la personalización específica de la impresión, y se integra con el ecosistema más amplio de Neodynamic ThermalLabel. Los equipos con implementaciones exclusivas de Windows que solo necesitan lectura 1D también pueden usar el SDK del lector de códigos de barras sin encontrar sus limitaciones de formato. Dentro de ese estrecho ámbito operativo —solo generación o solo lectura 1D en Windows— los productos de Neodynamic ofrecen lo que prometen.

IronBarcode es la opción adecuada cuando un proyecto necesita tanto generación como lectura, cuando alguna parte del flujo de trabajo involucra formatos 2D, cuando los documentos PDF son una fuente de entrada de códigos de barras o cuando se prefiere una arquitectura de paquete único para la gestión de dependencias. El modelo de licencia unificado, la ausencia de una dependencia de System.Drawing, y la detección automática de formatos en todas las simbologías compatibles lo hacen adecuado para aplicaciones multiplataforma, implementaciones en la nube y sistemas que procesan una mezcla de formatos de códigos de barras de diversas fuentes.

En última instancia, la elección entre ambos se reduce a la cuestión de si el límite de formato en el lector de Neodynamic afecta al proyecto en cuestión. Para los equipos cuyos flujos de trabajo se limitan a la generación y lectura de códigos de barras 1D en Windows, es posible que nunca se encuentren con ese límite. Para los equipos que necesitan códigos QR tanto para la generación como para la lectura del mismo sistema, la limitación dentro de la familia de productos Neodynamic es insuperable, y se requiere una biblioteca diferente independientemente de la que se elija.

Preguntas Frecuentes

¿Qué es Neodynamic BarCode Professional?

Neodynamic Barcode Professional 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 Neodynamic Barcode Professional e IronBarcode?

IronBarcode utiliza una API estática y sin estado que no requiere gestión de instancias, mientras que Neodynamic Barcode Professional 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 Neodynamic Barcode Professional?

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 soporta Neodynamic Barcode Professional?

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 Neodynamic Barcode Professional?

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

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 Neodynamic Barcode Professional 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 Neodynamic Barcode Professional a IronBarcode?

La migración de Neodynamic Barcode Professional 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().

Curtis Chau
Escritor Técnico

Curtis Chau tiene una licenciatura en Ciencias de la Computación (Carleton University) y se especializa en el desarrollo front-end con experiencia en Node.js, TypeScript, JavaScript y React. Apasionado por crear interfaces de usuario intuitivas y estéticamente agradables, disfruta trabajando con frameworks modernos y creando manuales bien ...

Leer más

Equipo de soporte de Iron

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