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
BarcodeInfoy asignarle propiedades antes de llamar aGetImage(). - 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"
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 | Sí | No | Sí |
| Lectura de códigos de barras 1D | No | Sí | Sí |
| Lectura de códigos de barras 2D | No | No | Sí |
| 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 | Sí |
| Dependencia de System.Drawing | Sí | Sí | 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 | Sí | N/A | Sí |
| Generación EAN-13 / UPC-A | Sí | N/A | Sí |
| Generación del código 39 | Sí | N/A | Sí |
| Generación de código QR | Sí | N/A | Sí |
| Generación de DataMatrix | Sí | N/A | Sí |
| Generación PDF417 | Sí | N/A | Sí |
| generación azteca | Sí | N/A | Sí |
| Lectura | |||
| Lectura del código 128 | N/A | Sí | Sí |
| Lectura EAN-13 / UPC-A | N/A | Sí | Sí |
| Lectura del código 39 | N/A | Sí | Sí |
| Lectura de Codabar | N/A | Sí | Sí |
| Lectura de código QR | N/A | No | Sí |
| Lectura de DataMatrix | N/A | No | Sí |
| Lectura del PDF417 | N/A | No | Sí |
| Lectura azteca | N/A | No | Sí |
| Detección automática de formato | N/A | No | Sí |
| Fuentes de entrada | |||
| Entrada de archivo de imagen | Sí | Sí | Sí |
| Entrada de documento PDF | No | No | Sí |
| Entrada de flujo | Sí | Sí | Sí |
| Plataforma y licencias | |||
| Dependencia de System.Drawing | Sí | Sí | No |
| Soporte para Linux/Docker | Limitado | Limitado | Sí |
| .NET Standard 2.0 | Sí | Sí | Sí |
| .NET 8 / .NET 9 | Sí | Limitado | Sí |
| 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
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
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)
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")
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")
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"
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().

