Saltar al pie de página
COMPARAR CON OTROS COMPONENTES

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

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 BarcodeInfo, se asignan sus propiedades y se llama a GetImage() para producir un System.Drawing.Image que se guarda a través del canal estándar System.Drawing.Imaging. El SDK tiene una dependencia de System.Drawing, lo que limita el despliegue multiplataforma.

El SDK del lector de códigos de barras es el componente de lectura. Acepta un System.Drawing.Bitmap y devuelve resultados sólo 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. Los equipos que trabajan con productos Neodynamic y descubren esta limitación tras crear un flujo de trabajo de generación, se dan cuenta de que para recuperar la capacidad de lectura 2D es necesario añadir una tercera biblioteca fuera del ecosistema 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 BarcodeInfo y asignarle propiedades antes de llamar a GetImage().
  • Dependencia de System.Drawing: Ambos SDK dependen de System.Drawing, lo que limita el despliegue en entornos Linux y contenedores sin configuración adicional.
  • Á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 adquiere 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 clase, 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)
BarcodeInfo.LicenseOwner = "Company";
BarcodeInfo.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)
BarcodeInfo.LicenseOwner = "Company";
BarcodeInfo.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)
BarcodeInfo.LicenseOwner = "Company"
BarcodeInfo.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ático: 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 no depende de System.Drawing, por lo que se puede implementar en Linux, macOS y en contenedores Docker sin configuración específica de 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.
  • Compatibilidad unificada con 1D y 2D: La misma API lee y genera códigos Code 128, EAN-13, QR Code, DataMatrix, PDF417, Aztec y más de 50 simbologías adicionales.
  • API fluida estática: BarcodeWriter.CreateBarcode() devuelve un resultado encadenable; BarcodeReader.Read() acepta rutas de archivos, secuencias 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 asíncrono y por lotes: BarcodeReader.ReadAsync() y las operaciones por lotes multipágina soportan cargas de trabajo de servidor 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 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 No
Soporte para Linux/Docker Limitado Limitado
.NET Standard 2.0
.NET 8 / .NET 9 Limitado
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:

// Lector de códigos de barras neodinámico SDK: QR code reading is not supported
using Neodynamic.SDK.BarcodeReader;
using System.Drawing;

public string ReadQrCode(string imagePath)
{
    using var bitmap = new Bitmap(imagePath);
    var results = BarcodeReader.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;
}
// Lector de códigos de barras neodinámico SDK: QR code reading is not supported
using Neodynamic.SDK.BarcodeReader;
using System.Drawing;

public string ReadQrCode(string imagePath)
{
    using var bitmap = new Bitmap(imagePath);
    var results = BarcodeReader.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 results = BarcodeReader.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 - es la única respuesta honesta que el lector puede proporcionar 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 BarcodeInfo, se asignan sus propiedades individualmente y se llama a GetImage() para que devuelva un System.Drawing.Image. La imagen se guarda utilizando la enumeración System.Drawing.Imaging.ImageFormat:

using Neodynamic.SDK.Barcode;

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

// Build the barcode through property assignment
var barcode = new BarcodeInfo();
barcode.Value = "12345678";
barcode.Symbology = Symbology.Code128;
barcode.TextAlign = BarcodeTextAlignment.BelowCenter;
barcode.Dpi = 300;

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

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

// Build the barcode through property assignment
var barcode = new BarcodeInfo();
barcode.Value = "12345678";
barcode.Symbology = Symbology.Code128;
barcode.TextAlign = BarcodeTextAlignment.BelowCenter;
barcode.Dpi = 300;

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

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

' Build the barcode through property assignment
Dim barcode As New BarcodeInfo()
barcode.Value = "12345678"
barcode.Symbology = Symbology.Code128
barcode.TextAlign = BarcodeTextAlignment.BelowCenter
barcode.Dpi = 300

' Get image and save via System.Drawing
Dim image As Image = barcode.GetImage()
image.Save("output.png", 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 es necesario importar 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 QRCodeWriter ofrece opciones adicionales específicas para los códigos QR:

using IronBarCode;

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

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

QRCodeWriter.CreateQrCode("https://example.com", 500, QRCodeWriter.QrErrorCorrectionLevel.High) _
    .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 adquiere ambos productos debe mantener dos bloques de configuración LicenseOwner / LicenseKey, hacer un seguimiento de dos fechas de renovación distintas y tratar con dos canales de soporte distintos cuando surgen problemas.

El precio del SDK Barcode Professional es de aproximadamente 245 dólares por una licencia de desarrollador individual. El SDK para lectores de códigos de barras tiene un costo adicional. Por lo tanto, un proyecto que requiera tanto la generación como la lectura de códigos 1D implica un gasto total que se acerca o supera los $500 para un solo desarrollador. Un proyecto que requiere lectura 2D no puede cumplir ese requisito con los productos Neodynamic a ningún precio; es necesario añadir 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-KEY";
IronBarCode.License.LicenseKey = "YOUR-KEY";
Imports IronBarCode

IronBarCode.License.LicenseKey = "YOUR-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
BarcodeInfo.LicenseOwner = "..." IronBarCode.License.LicenseKey = "key" Una sola llave reemplaza al propietario + par de llaves
BarcodeInfo.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 BarcodeInfo() BarcodeWriter.CreateBarcode(data, encoding) Método estático, sin instancia
barcode.Value = 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.GetImage().Save(path, ImageFormat.Png) .SaveAsPng(path) Fluido, sin enumeración ImageFormat
BarcodeReader.Read(bitmap) BarcodeReader.Read(imagePath) La ruta del archivo reemplaza al objeto Bitmap.
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 que revisar y dos fuentes potenciales de incompatibilidad cuando se aplican actualizaciones de .NET o Windows: ninguno de esos gastos generales ofrece una funcionalidad superior a la que proporcionaría un único paquete unificado. Los equipos que realizan una auditoría de dependencias como parte de una actualización de .NET suelen identificar 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

La migración desde Neodynamic requiere la eliminación de ambos paquetes NuGet: Neodynamic.SDK.Barcode y Neodynamic.SDK.BarcodeReader. Ambos deben ser removidos del archivo .csproj y ambas directivas using correspondientes deben ser removidas de los archivos fuente. Es suficiente con ejecutar dotnet remove package para cada una de ellas; 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 BarcodeInfo y otro para Neodynamic.SDK.BarcodeReader.BarcodeReader, se sustituyen por una única asignación de IronBarCode.License.LicenseKey. Esta asignación se realiza una vez al iniciar la aplicación, normalmente en Program.cs o en el bootstrap de inyección de dependencias de la aplicación. Cualquier archivo de configuración o variable de entorno que almacene claves de licencia de Neodynamic se puede retirar una vez verificada la migración.

Eliminación de NotSupportedException

Las bases de código que se encontraron con la limitación de lectura 2D durante el desarrollo a menudo contienen métodos de marcadores de posición que lanzan NotSupportedException para la lectura de códigos QR o DataMatrix. Estos métodos no son soluciones provisionales, sino reconocimientos honestos de que la capacidad no existía. Tras la migración a IronBarcode, el cuerpo de cada método se sustituye por una llamada estándar BarcodeReader.Read(imagePath). 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 sobre el número de página junto con los valores del código de barras, sin necesidad de extracción intermedia de imágenes.
  • Procesamiento asíncrono por lotes: BarcodeReader.ReadAsync() admite lecturas sin bloqueo adecuadas para cargas de trabajo del lado del servidor que procesan grandes volúmenes de imágenes o documentos de forma simultánea.
  • 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 códigos de barras múltiples: Una sola llamada BarcodeReader.Read() devuelve todos los códigos de barras presentes en una imagen, incluidas las imágenes de formato mixto que contienen simbologías 1D y 2D simultáneamente.
  • 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 for .NET es compatible con .NET Standard 2.0, .NET Framework 4.6.2 y superiores, .NET Core 3.1 y todas las versiones actuales de .NET, incluidas .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. La compatibilidad de Lector de códigos de barras neodinámico SDK con .NET 8 y .NET 9 es limitada debido a su dependencia System.Drawing y a la configuración adicional de bibliotecas nativas que dicha dependencia requiere en entornos que no sean Windows. IronBarcode recibe actualizaciones periódicas que se ajustan al ciclo de lanzamiento de .NET , y la compatibilidad con .NET 10, prevista para finales de 2026, se mantiene como parte de un desarrollo activo.

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 System.Drawing y la detección automática de formatos en todas las simbologías compatibles lo hacen adecuado para aplicaciones multiplataforma, despliegues 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().

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