Barcode4.NET vs IronBarcode: Comparación de bibliotecas de códigos de barras C#
Barcode4NET llegó al final de su vida útil sin un anuncio oficial. Ya no se venden nuevas licencias a través de ComponentSource, nunca se publicó ningún paquete NuGet y la biblioteca está destinada exclusivamente a .NET Framework. Para los equipos que heredaron una dependencia de Barcode4NET, este artículo compara lo que ofrecía esa biblioteca Código de barras4NETcon lo que IronBarcode ofrece hoy en día, abarcando el alcance de la plataforma, el diseño de la API, la capacidad de lectura de códigos de barras y la realidad de las licencias, lo que hace que una evaluación comparativa sea algo inusual.
Comprender Barcode4NET
BarCode4NET era una biblioteca comercial de generación de códigos de barras distribuida a través de ComponentSource y distribuidores de software similares. Se diseñó para aplicaciones .NET Frameworkbasadas en Windows —principalmente Windows Forms y ASP.NET Web Forms— y ofrecía una salida de mapa de bits nítida para las simbologías 1D principales de su época.
La biblioteca nunca estuvo disponible como paquete NuGet. Se distribuía como un archivo DLL que los desarrolladores incorporaban al control de código fuente o colocaban en una ubicación de artefactos compartida. Cada proyecto que lo utilizó requirió un elemento <Reference> manual en el archivo .csproj apuntando a la DLL en el disco. Esta era la práctica habitual cuando Código de barras4NETestaba activo, pero genera una fricción significativa en los flujos de trabajo modernos de CI/CD.
Características arquitectónicas clave de Barcode4NET:
- Property-setter API: Los desarrolladores crearon un objeto
Barcode, le asignaronSymbology,Data,Width, yHeightcomo propiedades, y luego llamaron aGenerateBarcode()para recibir unSystem.Drawing.Bitmap - Enfoque en simbología 1D: Compatible con Code128, Code39, EAN-13 y UPC-A; La compatibilidad con códigos QR era limitada dependiendo de la versión
- Solo generación: el producto nunca ha incluido ninguna función de lectura o escaneo de BarCodes.
- Solo Windows y .NET Framework: no es compatible con .NET Core, .NET 5+, Linux, macOS, Dockerni entornos de ejecución en la nube
- Sin distribución NuGet: se requiere una referencia DLL manual en cada archivo de proyecto y canal de compilación
- Fin de vida útil: No hay nuevas licencias disponibles, ni parches de seguridad, ni correcciones de errores, ni ruta de migración por parte del proveedor
API de generación de códigos de barras Barcode4NET
El flujo de trabajo completo de generación en Código de barras4NETutilizaba un patrón de establecimiento de propiedades:
// Código de barras4NET— manual DLL, .NET Frameworkonly
// No Paquete NuGet— requires ThirdParty/Barcode4NET/Barcode4NET.dll in source control
using Barcode4NET;
using System.Drawing;
using System.Drawing.Imaging;
var barcode = new Barcode4NET.Barcode();
barcode.Symbology = Symbology.Code128;
barcode.Data = "ITEM-12345";
barcode.Width = 300;
barcode.Height = 100;
Bitmap barcodeImage = barcode.GenerateBarcode();
barcodeImage.Save(outputPath, ImageFormat.Png);
// Código de barras4NET— manual DLL, .NET Frameworkonly
// No Paquete NuGet— requires ThirdParty/Barcode4NET/Barcode4NET.dll in source control
using Barcode4NET;
using System.Drawing;
using System.Drawing.Imaging;
var barcode = new Barcode4NET.Barcode();
barcode.Symbology = Symbology.Code128;
barcode.Data = "ITEM-12345";
barcode.Width = 300;
barcode.Height = 100;
Bitmap barcodeImage = barcode.GenerateBarcode();
barcodeImage.Save(outputPath, ImageFormat.Png);
Imports Barcode4NET
Imports System.Drawing
Imports System.Drawing.Imaging
Dim barcode As New Barcode4NET.Barcode()
barcode.Symbology = Symbology.Code128
barcode.Data = "ITEM-12345"
barcode.Width = 300
barcode.Height = 100
Dim barcodeImage As Bitmap = barcode.GenerateBarcode()
barcodeImage.Save(outputPath, ImageFormat.Png)
Esto representa la totalidad de la superficie de la API de Barcode4NET. La biblioteca no ofrecía encadenamiento fluido, ni capacidad de lectura, ni salida en PDF, ni opciones avanzadas de QR, como la incrustación de logotipos o el control de corrección de errores.
Entendiendo IronBarcode
IronBarcode es una biblioteca comercial de códigos de barras para .NET de Iron Software que abarca tanto la generación como la lectura de códigos de barras en un único paquete. Se distribuye exclusivamente a través de NuGet, es compatible con .NET Framework4.6.2 hasta .NET 9, y se ejecuta en Windows, Linux, macOS, Docker, Azure y AWS Lambda.
La biblioteca se basa en una API estática fluida. La generación utiliza BarcodeWriter.CreateBarcode() con una cadena de datos y un tipo de codificación, seguidos de opciones encadenables de tamaño, color y formato. La lectura utiliza BarcodeReader.Read() que acepta rutas de archivos de imagen, secuencias y documentos PDF sin necesidad de una biblioteca PDF independiente.
Características clave de IronBarcode:
- Fluent static generation API:
BarcodeWriter.CreateBarcode()encadena.ResizeTo(),.AddAnnotationTextAboveBarcode(), y guarda métodos en una única expresión - Lectura de códigos de barras:
BarcodeReader.Read()Descodifica códigos de barras de imágenes y PDF de forma nativa - Amplia compatibilidad con formatos: Code128, Code39, EAN-13, UPC-A, QR, Data Matrix, PDF417, Aztec y más
- Especialización en código QR:
QRCodeWriter.CreateQrCode()proporciona opciones específicas para QR, como la incrustación de logotipos y el nivel de corrección de errores - Distribución de NuGet: Instalación estándar
dotnet add package IronBarcode;dotnet restoremaneja todas las dependencias - Multiplataforma: Funciona en .NET 5, 6, 7, 8 y 9 en Windows, Linux y macOS, incluyendo contenedores Dockery entornos de ejecución en la nube sin servidor
- Producto comercial activo: actualizaciones periódicas, parches de seguridad, actualizaciones de compatibilidad con Versiones .NET y licencias adquiribles a precios definidos
Comparación de características
La siguiente tabla destaca las diferencias más significativas entre Código de barras4NETe IronBarcode:
| Característica | Código de barras4NET | IronBarcode |
|---|---|---|
| Paquete NuGet | No — solo DLL manual | Sí (IronBarcode) |
| Generación de BarCodes | Sí | Sí |
| Lectura de BarCodes | No | Sí |
| Compatibilidad multiplataforma | No — Solo Windows | Sí — Windows, Linux, macOS |
| Mantenimiento activo | No (fin de vida útil) | Sí |
| Nuevas licencias disponibles | No | Sí |
Comparación detallada de características
| Característica | Código de barras4NET | IronBarcode |
|---|---|---|
| Generación | ||
| Generación de Code128 | Sí | Sí |
| Generación de códigos 39 | Sí | Sí |
| Generación EAN-13 / UPC-A | Sí | Sí |
| Generación de código QR | Limitado | Sí - QRCodeWriter.CreateQrCode() |
| Código QR con logotipo | No | Sí - .AddBrandLogo() |
| Matriz de datos / PDF417 / Azteca | No | Sí |
| API fluida y encadenable | No | Sí |
| Lectura | ||
| Lectura de códigos de barras a partir de imágenes | No | Sí - BarcodeReader.Read() |
| Lectura de códigos de barras desde archivos PDF | No | Sí, es nativo, no requiere biblioteca adicional. |
| Detección de múltiples códigos de barras | No | Sí - ExpectMultipleBarcodes |
| Configuración de velocidad de lectura | No | Sí - ReadingSpeed enum |
| Plataforma | ||
| .NET Framework | Sí | Sí (.NET Framework 4.6.2+) |
| .NET 5 / 6 / 7 / 8 / 9 | No | Sí |
| Linux / macOS | No | Sí |
| Docker | No | Sí |
| Azure / AWS Lambda | No | Sí |
| Distribución | ||
| Paquete NuGet | No | Sí |
dotnet restore compatible |
No | Sí |
| Integración de CI/CD | Pasos para la DLL manual | Restauración estándar |
| Mantenimiento | ||
| Desarrollo activo | No (fin de vida útil) | Sí |
| parches de seguridad | No | Sí |
| Corrección de errores | No | Sí |
| Nuevas licencias | No | Sí — Lite $749, Plus $1,499, Professional $2,999, Ilimitado $5,999 |
Diseño de API de generación
La API de generación representa el punto de comparación más directo entre estas dos bibliotecas, ya que la generación era la única funcionalidad que ofrecía Barcode4NET.
Enfoque Barcode4NET
Barcode4NET utilizó un patrón imperativo de asignación de propiedades. Los desarrolladores instancian un objeto Barcode, le asignan propiedades individuales y llaman a GenerateBarcode() para recibir un System.Drawing.Bitmap:
using Barcode4NET;
using System.Drawing;
using System.Drawing.Imaging;
public Bitmap GenerateLabel(string sku)
{
var barcode = new Barcode4NET.Barcode();
barcode.Symbology = Symbology.Code128;
barcode.Data = sku;
barcode.Width = 400;
barcode.Height = 120;
return barcode.GenerateBarcode();
}
using Barcode4NET;
using System.Drawing;
using System.Drawing.Imaging;
public Bitmap GenerateLabel(string sku)
{
var barcode = new Barcode4NET.Barcode();
barcode.Symbology = Symbology.Code128;
barcode.Data = sku;
barcode.Width = 400;
barcode.Height = 120;
return barcode.GenerateBarcode();
}
Imports Barcode4NET
Imports System.Drawing
Imports System.Drawing.Imaging
Public Function GenerateLabel(sku As String) As Bitmap
Dim barcode As New Barcode4NET.Barcode()
barcode.Symbology = Symbology.Code128
barcode.Data = sku
barcode.Width = 400
barcode.Height = 120
Return barcode.GenerateBarcode()
End Function
El tipo de retorno - System.Drawing.Bitmap - significaba que el código de llamada era responsable de guardar, mostrar o transmitir la imagen. Esto era apropiado para aplicaciones WinForms en las que un Bitmap podía asignarse directamente a un PictureBox, pero requería pasos de conversión adicionales para cualquier otro destino de salida.
Enfoque IronBarcode
IronBarcode utiliza una API estática fluida. Una única llamada a un método inicia la generación, y los métodos encadenables configuran el resultado antes de un método de guardado o conversión en la terminal:
// NuGet: dotnet add package IronBarcode
using IronBarCode;
public byte[] GenerateLabel(string sku)
{
return BarcodeWriter.CreateBarcode(sku, BarcodeEncoding.Code128)
.ResizeTo(400, 120)
.ToPngBinaryData();
}
// NuGet: dotnet add package IronBarcode
using IronBarCode;
public byte[] GenerateLabel(string sku)
{
return BarcodeWriter.CreateBarcode(sku, BarcodeEncoding.Code128)
.ResizeTo(400, 120)
.ToPngBinaryData();
}
Imports IronBarCode
Public Function GenerateLabel(sku As String) As Byte()
Return BarcodeWriter.CreateBarcode(sku, BarcodeEncoding.Code128) _
.ResizeTo(400, 120) _
.ToPngBinaryData()
End Function
El BarcodeEncoding enum corresponde directamente al Symbology enum. .ResizeTo() sustituye a las asignaciones de propiedades Width y Height. Los métodos de terminal - .SaveAsPng(), .SaveAsJpeg(), .ToPngBinaryData() - sustituyen a las llamadas separadas GenerateBarcode() y bitmap-save. Para escenarios de generación más avanzados, consulte la documentación de generación de códigos de barras de IronBarcode .
Capacidad de lectura de códigos de barras
La capacidad de lectura es la principal diferencia entre estas dos bibliotecas. Código de barras4NETnunca ofreció lectura de códigos de barras en ninguna de sus versiones. IronBarcode incluye la capacidad de lectura completa en el mismo paquete que la generación.
Enfoque Barcode4NET
Barcode4NET no tenía una API de lectura. Los equipos que necesitaban decodificar códigos de barras a partir de imágenes o documentos escaneados tenían que integrar una biblioteca completamente independiente: ya fuera ZXing .NET, una alternativa de código abierto, o un SDK de escáner comercial. El resultado fueron dos cadenas de dependencias separadas: Código de barras4NETpara la generación y una segunda biblioteca para la lectura.
Enfoque IronBarcode
IronBarcode proporciona BarcodeReader.Read() como método estático que acepta rutas de archivos de imagen, objetos de flujo y documentos PDF:
using IronBarCode;
// Read from an image file
var results = BarcodeReader.Read("barcode.png");
foreach (var result in results)
{
Console.WriteLine($"Value: {result.Value}");
Console.WriteLine($"Format: {result.Format}");
}
// Read all barcodes from a multi-page PDF — no extra PDF library required
var pdfResults = BarcodeReader.Read("invoice-batch.pdf");
foreach (var result in pdfResults)
{
Console.WriteLine($"Page {result.PageNumber}: {result.Value}");
}
using IronBarCode;
// Read from an image file
var results = BarcodeReader.Read("barcode.png");
foreach (var result in results)
{
Console.WriteLine($"Value: {result.Value}");
Console.WriteLine($"Format: {result.Format}");
}
// Read all barcodes from a multi-page PDF — no extra PDF library required
var pdfResults = BarcodeReader.Read("invoice-batch.pdf");
foreach (var result in pdfResults)
{
Console.WriteLine($"Page {result.PageNumber}: {result.Value}");
}
Imports IronBarCode
' Read from an image file
Dim results = BarcodeReader.Read("barcode.png")
For Each result In results
Console.WriteLine($"Value: {result.Value}")
Console.WriteLine($"Format: {result.Format}")
Next
' Read all barcodes from a multi-page PDF — no extra PDF library required
Dim pdfResults = BarcodeReader.Read("invoice-batch.pdf")
For Each result In pdfResults
Console.WriteLine($"Page {result.PageNumber}: {result.Value}")
Next
Para escenarios de gran volumen o imágenes ruidosas, la clase BarcodeReaderOptions proporciona control sobre la velocidad de lectura y la detección de múltiples códigos de barras. Consulte la documentación de lectura de códigos de barras para conocer las opciones de configuración.
Cobertura de plataforma e implementación
La compatibilidad con la plataforma representa la diferencia más importante para los equipos que emprenden proyectos de modernización de .NET .
Enfoque Barcode4NET
Barcode4NET se compiló utilizando ensamblados de .NET Framework. Funcionaba en Windows, en aplicaciones .NET Framework, en proyectos de formularios web y formularios de Windows alojados en IIS. No había compilaciones para Linux, ni compilaciones .NET Core , ni soporte para entornos de ejecución en la nube. Cuando Microsoft presentó .NET Core y posteriormente unificó la plataforma como .NET 5+, Código de barras4NETno recibió actualizaciones correspondientes. Cualquier proyecto que tenga como objetivo net5.0 o posterior no podrá hacer referencia alguna a la biblioteca.
El modelo de distribución de DLL complicó aún más la limitación de la plataforma. Cada entorno de compilación (estación de trabajo del desarrollador, agente de compilación, contenedor Docker) requería que la DLL estuviera presente en una ruta conocida. En los despliegues basados en contenedores, esto significaba o bien incluir la DLL en una imagen base personalizada o copiarla durante la compilación del contenedor, ninguna de las cuales es compatible con los flujos de trabajo estándar dotnet restore.
Enfoque IronBarcode
IronBarcode es compatible con múltiples frameworks desde un único paquete NuGet : .NET Framework4.6.2 hasta .NET 9, y todas las versiones actuales de .NET en Windows, Linux y macOS. El despliegue en contenedores Dockerutiliza las imágenes de tiempo de ejecución estándar de .NET sin modificaciones. Azure Functions, AWS Lambda y otros entornos de ejecución sin servidor son compatibles a través del mismo paquete NuGet . El comando dotnet restore resuelve todas las dependencias sin ninguna gestión manual de DLL.
Arquitectura de licencias y estado del proveedor
La situación de las licencias de Código de barras4NETno es un factor competitivo, sino una limitación práctica que condiciona cada decisión sobre si continuar o no utilizando la biblioteca.
Enfoque Barcode4NET
Barcode4NET ha llegado al final de su ciclo de vida. No se pueden adquirir nuevas licencias a través de ComponentSource ni de ningún otro canal. Si un desarrollador se une a un equipo que utiliza Barcode4NET, no existe ningún mecanismo para comprarle una licencia. Dependiendo de cómo estén estructuradas las licencias existentes, es posible que un nuevo desarrollador no tenga autorización legal para ejecutar o depurar código relacionado con códigos de barras durante el desarrollo. No existe un sistema de seguimiento de incidencias, ni un canal de soporte, ni un proveedor al que contactar en caso de defectos. Las vulnerabilidades de seguridad descubiertas tras la última versión permanecen sin solucionarse.
Enfoque IronBarcode
IronBarcode es un producto comercial con mantenimiento activo y licencia perpetua. Los planes comienzan en $749 para una licencia Lite de un solo desarrollador, con los planes Plus ($1,499, 3 desarrolladores), Professional ($2,999, 10 desarrolladores) e Unlimited ($5,999) disponibles. Todos los planes incluyen la implementación sin pago de regalías. Los parches de seguridad, las correcciones de errores y las actualizaciones de compatibilidad de la versión .NET se publican con una periodicidad de lanzamiento regular. Se ofrece una prueba gratuita de 30 días para su evaluación, sin necesidad de clave de licencia.
Referencia de mapeo de API
| Código de barras4NET | IronBarcode |
|---|---|
new Barcode4NET.Barcode() |
BarcodeWriter.CreateBarcode(data, encoding) |
barcode.Symbology = Symbology.Code128 |
BarcodeEncoding.Code128 (parámetro para CreateBarcode) |
barcode.Data = "ITEM-12345" |
Primer parámetro de CreateBarcode() |
barcode.Width = 300; código de barras.Altura = 100|.ResizeTo(300, 100)` |
|
barcode.GenerateBarcode() devuelve Bitmap |
.SaveAsPng(path) / .ToPngBinaryData() |
Symbology.QRCode |
BarcodeEncoding.QRCode |
Symbology.Code39 |
BarcodeEncoding.Code39 |
Symbology.EAN13 |
BarcodeEncoding.EAN13 |
Symbology.UPCA |
BarcodeEncoding.UPCA |
Manual DLL <Reference Include="Barcode4NET"> |
<PackageReference Include="IronBarcode" /> |
| No se puede leer la API | BarcodeReader.Read(path) |
| Sin soporte para PDF | BarcodeReader.Read("doc.pdf") nativo |
| Solo para .NET Framework | .NET Framework4.6.2 a .NET 9 |
Cuando los equipos consideran migrar de Código de barras4NETa IronBarcode
Actualización de .NET bloqueada
El factor desencadenante más común es un proyecto de modernización de .NET . Un equipo selecciona net8.0 en su .csproj, ejecuta la compilación y encuentra un error de compilación porque Código de barras4NETse compiló con ensamblados de .NET Frameworka los que ya no se hace referencia. El error es inequívoco: la biblioteca no se cargará bajo el nuevo marco de destino. En este punto, el equipo se enfrenta a una elección binaria: revertir el cambio de marco de trabajo de destino y permanecer en .NET Framework, o reemplazar Barcode4NET. La migración no puede posponerse sin obstaculizar el esfuerzo de modernización en general.
Fallos en la canalización de CI/CD tras cambios en la infraestructura
El modelo de distribución de DLL de Código de barras4NETcrea una fragilidad latente en los procesos de compilación. Cuando se vuelve a aprovisionar un agente de compilación, se actualiza una imagen de contenedor o se configura un nuevo entorno de CI, la DLL de Código de barras4NETdebe colocarse manualmente en la ruta que espera el archivo del proyecto. Los equipos que no han documentado este paso cuidadosamente solo descubren el problema cuando el proceso falla. La transición a IronBarcode significa que dotnet restore se encarga de todo: el problema de la localización de DLL deja de existir.
Los nuevos miembros del equipo no pueden obtener la licencia.
Cuando un contratista se une al proyecto o un segundo desarrollador necesita trabajar en las funciones de código de barras, no es necesario comprar ninguna licencia. El equipo debe sortear esta limitación: o bien el nuevo desarrollador evita por completo el código de barras, o alguien transfiere una licencia que puede no ser legalmente transferible según los términos originales. Ninguna de las dos situaciones es sostenible para un equipo que está desarrollando activamente el producto.
Auditorías de seguridad y cumplimiento
Las organizaciones que generan listas de materiales de software o que comprueban las dependencias con bases de datos obsoletas se encuentran con Código de barras4NETcomo un hallazgo. Se trata de un producto comercial sin proveedor activo, sin seguimiento de vulnerabilidades (CVE) y sin disponibilidad de parches. Los auditores de seguridad tratan las dependencias comerciales que han llegado al final de su ciclo de vida de manera diferente a las bibliotecas de código abierto consolidadas: la ausencia de un proceso de respuesta del proveedor significa que cualquier vulnerabilidad queda permanentemente sin mitigar. Normalmente, esto se convierte en un elemento de remediación formal en lugar de un riesgo diferido.
Capacidad de lectura añadida a un flujo de trabajo existente
Los equipos que inicialmente usaban Código de barras4NETsolo para flujos de trabajo de generación, descubren más tarde que necesitan verificar códigos de barras de documentos escaneados, procesar imágenes cargadas por los usuarios o extraer datos de facturas en formato PDF. Con Barcode4NET, esto requiere la integración de una segunda biblioteca. El BarcodeReader.Read() de IronBarcode gestiona tanto imágenes como PDF de forma nativa, consolidando la dependencia en un único paquete mantenido.
Consideraciones comunes sobre la migración
Eliminando la referencia a la DLL
Barcode4NET nunca se distribuyó como paquete NuGet, por lo que no existe el comando dotnet remove package. Cada archivo .csproj que hace referencia a la biblioteca contiene un elemento <Reference Include="Barcode4NET"> con un <HintPath> que apunta a la DLL en el disco. Cada uno de estos elementos debe ser localizado y eliminado manualmente. Una búsqueda con grep en la solución los localiza:
grep -rl "Barcode4NET" --include="*.csproj" .
grep -rl "Barcode4NET" --include="*.csproj" .
El directorio DLL en el control de código fuente - normalmente ThirdParty/Barcode4NET/ o lib/ - también debe ser preparado para su eliminación con git rm.
Cambio de tipo de retorno: de mapa de bits a matriz de bytes.
El GenerateBarcode() de Código de barras4NETdevuelve un System.Drawing.Bitmap. La cadena fluida de IronBarcode termina en .ToPngBinaryData() devolviendo byte[], o .SaveAsPng() escribiendo directamente en disco. El código que asigna el valor de retorno a una variable Bitmap o lo pasa a un método que espera un Bitmap - como un WinForms PictureBox - requiere un ajuste de una línea en el sitio de llamada: envuelva la matriz de bytes en un MemoryStream y llame a Image.FromStream().
Simbología Enumeración Renombrar
El Symbology enum de Código de barras4NETcorresponde directamente al BarcodeEncoding enum de IronBarcode. Todos los valores comunes - Code128, Code39, EAN13, UPCA, QRCode - conservan sus nombres. Una búsqueda y sustitución de Symbology. por BarcodeEncoding. cubre la mayoría de los casos, aunque cada sustitución debe revisarse para confirmar el contexto.
Limpieza del script de compilación
Los scripts de compilación y los archivos de configuración de CI/CD que copian la DLL de Código de barras4NETa los directorios de salida o a los agentes de compilación deben actualizarse. Estos pasos no tienen equivalente después de la migración NuGet - dotnet restore reemplaza toda la gestión manual de DLL. Dejar pasos de copia de DLL obsoletos después de la migración no provocará fallos de compilación, pero representan una configuración muerta que genera confusión para los futuros responsables del mantenimiento.
Funcionalidades adicionales de IronBarcode
Funcionalidades disponibles en IronBarcode que no formaban parte de Código de barras4NETen ningún momento de su ciclo de vida:
- Lectura de códigos de barras a partir de imágenes:
BarcodeReader.Read()descodifica las principales simbologías 1D y 2D a partir de PNG, JPEG, TIFF y otros formatos de imagen - Lectura de códigos de barras PDF : Compatibilidad nativa con entrada PDF; no se requiere ninguna biblioteca de extracción de PDF independiente.
- Incorporación del logotipo del código QR:
QRCodeWriter.CreateQrCode()con.AddBrandLogo()para códigos QR de marca - Generación de formatos 2D : Data Matrix, PDF417 y Aztec, además de código QR.
- Detección de múltiples códigos de barras:
BarcodeReaderOptions.ExpectMultipleBarcodesencuentra todos los códigos de barras en una sola imagen - Ajuste de la velocidad de lectura:
ReadingSpeedenum equilibra el rendimiento con la precisión para el procesamiento de grandes volúmenes - Integración con ASP.NET Core: Devuelve
byte[]directamente desde.ToPngBinaryData()para respuestas de acción de controlador limpias
Compatibilidad con .NET y preparación para el futuro
IronBarcode es compatible con .NET Frameworkdesde la versión 4.6.2 hasta la 9, y recibe actualizaciones de compatibilidad a medida que se lanzan nuevas versiones de .NET .NET Dado que se espera que .NET 10 se lance a finales de 2026, Iron Software publica versiones preliminares compatibles antes de su disponibilidad general. Código de barras4NETno tiene ninguna versión .NET más allá de .NET Frameworky no recibirá ninguna actualización futura. Los equipos que utilizan .NET Framework4.x pueden migrar a IronBarcode y, a continuación, actualizar libremente su framework de destino a cualquier versión actual o futura de .NET sin restricciones de la biblioteca de códigos de barras.
Conclusión
Barcode4NET e IronBarcode representan diferentes etapas en la historia del desarrollo de códigos de barras .NET . Código de barras4NETera una biblioteca funcional y bien diseñada para su época: una API para establecer propiedades que generaba una salida de mapa de bits limpia para aplicaciones de Windows Forms y Web Forms en .NET Framework. IronBarcode es un producto comercial actual con una API estática fluida, compatibilidad total con la lectura de códigos de barras, cobertura de tiempo de ejecución multiplataforma y distribución NuGet estándar.
La comparación resulta inusual porque Código de barras4NETya no es un producto en funcionamiento. No recibe actualizaciones, parches de seguridad ni se venden nuevas licencias. Los equipos que evalúan qué biblioteca adoptar para un nuevo proyecto no se encontrarían con Código de barras4NETen esa evaluación; solo es relevante para los equipos que ya la tienen en producción y están decidiendo cuándo y cómo migrar.
Para los equipos que ya utilizan Código de barras4NETen producción, IronBarcode es la alternativa natural. La asignación de la API es directa, los cambios en el código son superficiales y la semántica de generación es equivalente. La ventaja reside en una dependencia que se mantiene activamente, que pueden instalar los nuevos miembros del equipo y que es compatible con las versiones modernas de .NET y los entornos de implementación.
La valoración honesta es que no se trata de una elección competitiva entre dos opciones viables. Código de barras4NETno se puede extender a nuevos miembros del equipo, no se puede ejecutar en .NET moderno y no se puede actualizar para solucionar problemas de seguridad. Lata de IronBarcode . La decisión de migrar se basa en esas limitaciones prácticas, más que en la preferencia por la API o la comparación de características.
Preguntas Frecuentes
¿Qué es Barcode4.NET?
Barcode4.NET 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 Barcode4.NET e IronBarcode?
IronBarcode utiliza una API estática y sin estado que no requiere gestión de instancias, mientras que Barcode4.NET 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 Barcode4.NET?
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.
¿Soporta IronBarcode todos los formatos de código de barras que soporta Barcode4.NET?
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 Barcode4.NET?
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 Barcode4.NET?
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 Barcode4.NET 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 Barcode4.NET a IronBarcode?
La migración de Barcode4.NET 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().

