IRONSOFTWAREHOME
COMPARAR COM OUTROS COMPONENTES

Aspose BarCode for .NET : Exemplo vs. IronBarcode- Uma comparação lado a lado com exemplos de código

Curtis Chau
Curtis Chau
Updated: 26 de abril de 2026

#Barcode4NETvs IronBarcode: Comparando um Gerador Descontinuado com uma Biblioteca de Códigos de Barras .NET Moderna

Barcode4NET está efetivamente em seu fim de vida. A última versão —Barcode4NET2.0 da O2 Solutions — foi lançada em 25 de junho de 2007. Novas licenças não são mais vendidas através do ComponentSource (clientes existentes ainda podem renovar Suporte e Atualizações de Software), nenhum pacote NuGet foi publicado, e a biblioteca é direcionada ao.NET Framework1.1 / 2.0 / 3.x e .NET Compact Framework. Para equipes que herdaram uma dependência do Barcode4NET, este artigo compara o que essa biblioteca oferecia com o que o IronBarcode oferece atualmente — abordando o alcance da plataforma, o design da API, a capacidade de leitura de código de barras e a realidade do licenciamento que torna uma avaliação lado a lado um tanto incomum.

Entendendo o Barcode4NET

Barcode4NET foi uma biblioteca comercial de geração de códigos de barras publicada pela O2 Solutions e distribuída através do ComponentSource. Foi projetada para aplicações baseadas em Windows do.NET Framework— principalmente Windows Forms, ASP.NET Web Forms, .NET Compact Framework, e SQL Server Reporting Services 2000 / 2005 — e forneceu saída limpa de bitmap e vetor para as simbologias 1D e 2D de sua época.

A biblioteca nunca esteve disponível como um pacote NuGet . Foi distribuído como uma DLL que os desenvolvedores incluíam no controle de versão ou colocavam em um local de artefatos compartilhados. Todo projeto que o utilizou exigia um elemento manual <Reference> no arquivo .csproj apontando para o DLL no disco. Essa era uma prática padrão quando oBarcode4NETestava ativo, mas cria atritos significativos nos fluxos de trabalho modernos de CI/CD.

Principais características arquitetônicas do Barcode4NET:

  • API de configuração de propriedades: Os desenvolvedores criavam um objeto Barcode, atribuíram Symbology, Data, Width e Height como propriedades, e então chamaram GenerateBarcode() para receber um System.Drawing.Bitmap
  • Cobertura de simbologia: 39 simbologias 1D (Code128, Code39, EAN-13, UPC-A, e mais) além de cinco formatos 2D (DataMatrix, PDF417, MicroPDF417, Code 16K, CODABLOCK F); QR Code e asteca não são suportados
  • Apenas geração: O produto nunca teve a capacidade de ler ou escanear códigos de barras.
  • Apenas Windows e .NET Framework: Direcionados ao.NET Framework1.1 / 2.0 / 3.x e .NET Compact Framework; sem suporte ao .NET Core, .NET 5+, Linux, macOS, Docker, ou tempo de execução em nuvem
  • Sem distribuição NuGet : Referência manual à DLL necessária em cada arquivo de projeto e pipeline de compilação.
  • Fim de vida: Nenhuma nova licença vendida através do ComponentSource e nenhum lançamento de código desde 2007

API de geração Barcode4NET

O fluxo de trabalho completo de geração noBarcode4NETutilizava um padrão de configuração de propriedades:

//Barcode4NET— manual DLL,.NET Frameworkonly
// Não Pacote 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#

Isso representa toda a extensão da superfície da API Barcode4NET. A biblioteca não oferecia encadeamento fluente, capacidade de leitura, suporte a QR Code, nem opções avançadas de 2D como incorporação de logotipo ou controle de correção de erros.

Entendendo o IronBarcode

IronBarcode é uma biblioteca comercial .NET para códigos de barras da Iron Software que abrange tanto a geração quanto a leitura de códigos de barras em um único pacote. É distribuído exclusivamente via NuGet, é compatível com o.NET Framework4.6.2 até o .NET 9 e funciona no Windows, Linux, macOS, Docker, Azure e AWS Lambda.

A biblioteca foi construída em torno de uma API estática fluente. A geração usa BarcodeWriter.CreateBarcode() com uma string de dados e tipo de codificação, seguida por opções encadeadas para tamanho, cor e formato. A leitura usa BarcodeReader.Read() que aceita caminhos de arquivos de imagem, fluxos e documentos PDF sem requerer uma biblioteca PDF separada.

Principais características do IronBarcode:

  • API de geração estática fluente: BarcodeWriter.CreateBarcode() encadeia .ResizeTo(), .AddAnnotationTextAboveBarcode() e métodos de salvar em uma única expressão
  • Leitura de códigos de barras: BarcodeReader.Read() decodifica códigos de barras de imagens e PDFs nativamente
  • Ampla compatibilidade com diversos formatos: Code128, Code39, EAN-13, UPC-A, QR Code, Data Matrix, PDF417, asteca e muitos outros.
  • Especialização de QR code: QRCodeWriter.CreateQrCode() fornece opções específicas para QR, incluindo incorporação de logotipo e nível de correção de erros
  • Distribuição NuGet: Instalação padrão de dotnet add package IronBarcode; dotnet restore lida com todas as dependências
  • Multiplataforma: Funciona em .NET 5, 6, 7, 8 e 9 no Windows, Linux e macOS, incluindo contêineresDockere ambientes de execução em nuvem sem servidor.
  • Produto comercial ativo: atualizações regulares, patches de segurança, atualizações de compatibilidade com a versão .NET e licenças disponíveis para compra a preços definidos.

Comparação de recursos

A tabela a seguir destaca as diferenças mais significativas entreBarcode4NETe IronBarcode:

RecursoBarcode4NETIronBarcode
Pacote NuGetNão — somente DLL manualSim (IronBarcode)
Geração de código de barrasSimSim
Leitura de código de barrasNãoSim
Suporte multiplataformaNão — somente para WindowsSim — Windows, Linux, macOS
Manutenção ativaNão (fim de vida)Sim
Novas licenças disponíveisNãoSim

Comparação Detalhada de Recursos

RecursoBarcode4NETIronBarcode
Geração
Geração Code128SimSim
Geração Code39SimSim
Geração EAN-13 / UPC-ASimSim
Geração de código QRNãoSim — QRCodeWriter.CreateQrCode()
Código QR com logotipoNãoSim — .AddBrandLogo()
Data Matrix / PDF417SimSim
astecaNãoSim
API encadeável fluenteNãoSim
Leitura
Leitura de código de barras a partir de imagensNãoSim — BarcodeReader.Read()
Leitura de código de barras em PDFsNãoSim — nativo, sem biblioteca extra
Detecção de múltiplos códigos de barrasNãoSim — ExpectMultipleBarcodes
Configuração da velocidade de leituraNãoSim — enum ReadingSpeed
Plataforma
.NET FrameworkSimSim (.NET Framework 4.6.2 ou superior)
.NET 5 / 6 / 7 / 8 / 9NãoSim
Linux / macOSNãoSim
DockerNãoSim
Azure / AWS LambdaNãoSim
Distribuição
Pacote NuGetNãoSim
dotnet restore compatívelNãoSim
Integração CI/CDEtapas manuais da DLLRestauração padrão
Manutenção
Desenvolvimento ativoNão (fim de vida)Sim
atualizações de segurançaNãoSim
Correções de bugsNãoSim
Novas licençasNãoSim — Lite US$ 749, Plus US$ 1.499, Professional $ 2.999, Ilimitado US$ 5.999

Design de API de geração

A API de geração representa o ponto de comparação mais direto entre essas duas bibliotecas, já que a geração era a única funcionalidade oferecida pelo Barcode4NET.

Abordagem Barcode4NET

OBarcode4NETutilizava um padrão imperativo de configuração de propriedades. Os desenvolvedores instanciaram um objeto Barcode, atribuíram propriedades individuais e chamaram GenerateBarcode() para receber um 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();
}

O tipo de retorno — System.Drawing.Bitmap — significava que o código de chamada era responsável por salvar, exibir ou transmitir a imagem. Isso era apropriado para aplicativos WinForms onde um Bitmap poderia ser atribuído diretamente a um PictureBox, mas exigia etapas adicionais de conversão para qualquer outro destino de saída.

Abordagem do IronBarcode

IronBarcode utiliza uma API estática fluente. Uma única chamada de método inicia a geração, e métodos encadeáveis ​​configuram o resultado antes de um método de salvamento ou conversão no terminal:

// NuGet: dotnet add package IronBarcode
using IronBarCode;

public byte[] GenerateLabel(string sku)
{
    return BarcodeWriter.CreateBarcode(sku, BarcodeEncoding.Code128)
        .ResizeTo(400, 120)
        .ToPngBinaryData();
}

O enum BarcodeEncoding corresponde diretamente ao enum Symbology. .ResizeTo() substitui as atribuições de propriedade Width e Height. Métodos terminais — .SaveAsPng(), .SaveAsJpeg(), .ToPngBinaryData() — substituem as chamadas de GenerateBarcode() e salvar bitmap separadamente. Para cenários de geração mais avançados, consulte a documentação de geração de código de barras do IronBarcode .

Capacidade de leitura de código de barras

A capacidade de leitura é a diferença mais acentuada entre essas duas bibliotecas. OBarcode4NETnunca ofereceu leitura de código de barras em nenhuma versão. O IronBarcode inclui funcionalidade completa de leitura no mesmo pacote que a geração.

Abordagem Barcode4NET

OBarcode4NETnão possuía uma API de leitura. As equipes que precisavam decodificar códigos de barras a partir de imagens ou documentos digitalizados tinham que integrar uma biblioteca completamente separada — seja o ZXing .NET, uma alternativa de código aberto, ou um SDK de scanner comercial. O resultado foram duas cadeias de dependência separadas:Barcode4NETpara geração e uma segunda biblioteca para leitura.

Abordagem do IronBarcode

O IronBarcode fornece BarcodeReader.Read() como um método estático que aceita caminhos de arquivos de imagem, objetos de fluxo e 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}");
}

Para cenários de imagem de alto volume ou barulhentos, a classe BarcodeReaderOptions fornece controle sobre a velocidade de leitura e a detecção de vários códigos de barras. Consulte a documentação de leitura de código de barras para obter opções de configuração.

Cobertura da plataforma e da implantação

O suporte à plataforma representa a diferença mais significativa para as equipes que realizam projetos de modernização do .NET .

Abordagem Barcode4NET

OBarcode4NETfoi compilado usando assemblies do.NET Framework. Ele funcionava no Windows, em aplicações.NET Framework, em projetos Web Forms e Windows Forms hospedados no IIS. Não havia versões para Linux, nem versões para .NET Core , nem suporte para ambientes de execução em nuvem. Quando a Microsoft lançou o .NET Core e posteriormente unificou a plataforma como .NET 5+, oBarcode4NETnão recebeu atualizações correspondentes. Qualquer projeto que mire net5.0 ou posterior não poderia referenciar a biblioteca de forma alguma.

O modelo de distribuição de DLLs agravou a restrição da plataforma. Em todos os ambientes de compilação — estação de trabalho do desenvolvedor, agente de compilação, contêinerDocker— era necessário que a DLL estivesse presente em um caminho conhecido. Em implantações baseadas em contêiner, isso significava ou incorporar o DLL em uma imagem base personalizada ou copiá-lo durante a construção do contêiner, nenhuma das quais é compatível com fluxos de trabalho padrão de dotnet restore.

Abordagem do IronBarcode

O IronBarcode é compatível com várias estruturas (frameworks) a partir de um único pacote NuGet :.NET Framework4.6.2 até .NET 9, e todas as versões atuais do .NET no Windows, Linux e macOS. A implantação em contêineresDockerutiliza as imagens de tempo de execução .NET padrão, sem modificações. O Azure Functions, o AWS Lambda e outros ambientes de execução sem servidor são suportados pelo mesmo pacote NuGet . O comando dotnet restore resolve todas as dependências sem qualquer gerenciamento manual de DLL.

Arquitetura de licenciamento e situação do fornecedor

A situação do licenciamento doBarcode4NETnão é um ponto competitivo — é uma restrição prática que influencia todas as decisões sobre continuar ou não a usar a biblioteca.

Abordagem Barcode4NET

Barcode4NET está efetivamente no fim de vida. Novas licenças não são mais vendidas através do ComponentSource, embora os clientes existentes possam renovar Suporte e Atualizações de Software através do ComponentSource de acordo com os termos do fornecedor. Se um novo desenvolvedor entrar em uma equipe usando Barcode4NET, não há mecanismo para adquirir uma vaga adicional para ele. A última versão de código foi a versão 2.0 em 2007, então qualquer defeito ou problema de segurança descoberto desde essa versão não é endereçado por patch.

Abordagem do IronBarcode

IronBarcode é um produto comercial com manutenção ativa e licença perpétua. Os planos começam em US$ 749 para uma licença Lite para um único desenvolvedor, com planos Plus (US$ 1.499, 3 desenvolvedores), Professional (US$ 2.999, 10 desenvolvedores) e Unlimited (US$ 5.999) disponíveis. Todos os planos incluem implantação livre de royalties. Atualizações de segurança, correções de bugs e atualizações de compatibilidade com a versão do .NET são lançadas regularmente. Está disponível um período de teste gratuito de 30 dias para avaliação, sem necessidade de chave de licença.

Referência de Mapeamento de API

Barcode4NETIronBarcode
new Barcode4NET.Barcode()BarcodeWriter.CreateBarcode(data, encoding)
barcode.Symbology = Symbology.Code128BarcodeEncoding.Code128 (parâmetro para CreateBarcode)
barcode.Data = "ITEM-12345"Primeiro parâmetro de CreateBarcode()
barcode.Width = 300; barcode.Altura = 100.ResizeTo(300, 100)
barcode.GenerateBarcode() retorna Bitmap.SaveAsPng(path) / .ToPngBinaryData()
Symbology.Code39BarcodeEncoding.Code39
Symbology.EAN13BarcodeEncoding.EAN13
Symbology.UPCABarcodeEncoding.UPCA
Symbology.DataMatrixBarcodeEncoding.DataMatrix
Symbology.PDF417BarcodeEncoding.PDF417
(QR Code not supported in Barcode4NET)BarcodeEncoding.QRCode
<Reference Include="Barcode4NET"> de DLL manual<PackageReference Include="IronBarcode" />
Sem API de leituraBarcodeReader.Read(path)
Sem suporte para PDFBarcodeReader.Read("doc.pdf") nativo
Somente para.NET Framework.NET Framework4.6.2 até .NET 9

Quando as equipes consideram migrar doBarcode4NETpara o IronBarcode

Atualização do .NET bloqueada

O evento que mais frequentemente desencadeia essa situação é um projeto de modernização do .NET . Uma equipe mira net8.0 em seu .csproj, executa a compilação, e encontra uma falha de carregamento porque oBarcode4NETfoi construído para.NET Framework1.1 / 2.0 / 3.x e não pode ser referenciado de um alvo .NET moderno. Neste ponto, a equipe se depara com uma escolha binária: reverter a alteração da estrutura de destino e permanecer no.NET Frameworkou substituir o Barcode4NET. A migração não pode ser adiada sem bloquear o esforço de modernização mais amplo.

Falhas no pipeline de CI/CD após alterações na infraestrutura

O modelo de distribuição de DLLs doBarcode4NETcria uma fragilidade latente nos pipelines de compilação. Quando um agente de compilação é reaprovisionado, uma imagem de contêiner é atualizada ou um novo ambiente de CI é configurado, a DLL doBarcode4NETdeve ser colocada manualmente no caminho esperado pelo arquivo de projeto. As equipes que não documentaram cuidadosamente essa etapa só descobrem o problema quando o pipeline falha. A transição para IronBarcode significa que dotnet restore lida com tudo — o problema de localização do DLL deixa de existir.

Novos membros da equipe não podem ser licenciados.

Quando um contratado se junta ao projeto ou um segundo desenvolvedor precisa trabalhar em recursos de código de barras, não há licença para comprar. A equipe precisa encontrar uma solução para essa restrição — ou o novo desenvolvedor evita completamente o código de barras, ou alguém transfere uma licença que pode não ser legalmente transferível de acordo com os termos originais. Nenhuma das duas situações é sustentável para uma equipe que está desenvolvendo ativamente o produto.

Auditorias de segurança e conformidade

Organizações que executam a geração de listas de materiais de software ou verificam dependências em relação a bancos de dados de fim de vida útil encontram oBarcode4NETcomo uma descoberta. É um produto comercial sem lançamento de código desde 2007 e sem rastreamento de CVE ou fluxo de correções. Auditores de segurança geralmente tratam dependências neste estado de maneira diferente de bibliotecas mantidas ativamente, e a descoberta muitas vezes se torna um item de remediação formal ao invés de um risco adiado.

Capacidade de leitura adicionada a um fluxo de trabalho existente

As equipes que inicialmente usavam oBarcode4NETapenas para fluxos de trabalho de geração de códigos de barras descobrem posteriormente que precisam verificar códigos de barras em documentos digitalizados, processar imagens enviadas pelo usuário ou extrair dados de faturas em PDF. Com o Barcode4NET, isso requer a integração de uma segunda biblioteca. BarcodeReader.Read() do IronBarcode lida tanto com imagens quanto com PDFs nativamente, consolidando a dependência em um único pacote mantido.

Considerações Comuns de Migração

Removendo a referência da DLL

OBarcode4NETnunca foi distribuído como um pacote NuGet, então não há comando dotnet remove package. Todo arquivo .csproj que referencia a biblioteca contém um elemento <Reference Include="Barcode4NET"> com um <HintPath> apontando para o DLL no disco. Cada um desses elementos deve ser encontrado e removido manualmente. Uma busca com o comando grep na solução os localiza:

grep -rl "Barcode4NET" --include="*.csproj" .
SHELL

O diretório DLL no controle de origem — tipicamente ThirdParty/Barcode4NET/ ou lib/ — também deve ser preparado para exclusão com git rm.

Alteração do tipo de retorno de Bitmap para matriz de bytes

O GenerateBarcode() doBarcode4NETretorna um System.Drawing.Bitmap. A cadeia fluente do IronBarcode termina em .ToPngBinaryData() retornando byte[], ou .SaveAsPng() escrevendo diretamente no disco. O código que atribui o valor de retorno a uma variável do tipo Bitmap ou o passa para um método que espera um Bitmap — como um PictureBox do WinForms — requer um ajuste de uma linha no local da chamada: envolver o array de bytes em um MemoryStream e chamar Image.FromStream().

Simbologia Enum Renomear

O enum Symbology noBarcode4NETmapeia diretamente para o enum BarcodeEncoding no IronBarcode. Todos os valores comuns — Code128, Code39, EAN13, UPCA, QRCode — mantêm seus nomes. Uma busca e substituição em toda a solução de Symbology. por BarcodeEncoding. cobre a maioria dos casos, embora cada substituição deva ser revista para confirmar o contexto.

Limpeza do script de compilação

Os scripts de compilação e os arquivos de configuração de CI/CD que copiam a DLL doBarcode4NETpara diretórios de saída ou agentes de compilação precisam ser atualizados. Essas etapas não têm equivalente após a migração do NuGet — dotnet restore substitui todo o gerenciamento manual de DLL. Deixar etapas obsoletas de cópia de DLLs após a migração não causará falhas na compilação, mas representa uma configuração desatualizada que gera confusão para futuros responsáveis ​​pela manutenção.

Funcionalidades adicionais do IronBarcode

Funcionalidades disponíveis no IronBarcode que não faziam parte doBarcode4NETem nenhum momento do seu ciclo de vida:

Compatibilidade com .NET e Preparação para o Futuro

IronBarcode suporta.NET Framework4.6.2 até .NET 9 e recebe atualizações de compatibilidade conforme novas versões do .NET são lançadas.Barcode4NETdestina-se apenas ao.NET Framework1.1 / 2.0 / 3.x e .NET Compact Framework, e não recebeu uma versão desde 2007. Equipes no.NET Framework4.x podem migrar para IronBarcode e, em seguida, atualizar livremente seu framework alvo para qualquer versão atual do .NET sem restrições da biblioteca de códigos de barras.

Conclusão

Barcode4NET e IronBarcode representam diferentes momentos na história do desenvolvimento de códigos de barras em .NET .Barcode4NETera uma biblioteca funcional e bem definida para sua época — uma API de configuração de propriedades que gerava saída de bitmap limpa para aplicativos Windows Forms e Web Forms no .NET Framework.IronBarcode é um produto comercial atual com uma API estática fluente, suporte completo para leitura de código de barras, cobertura de tempo de execução multiplataforma e distribuição padrão NuGet .

A comparação é incomum porque oBarcode4NETnão é mais um produto em desenvolvimento. Não recebe atualizações, correções de segurança ou novas licenças. As equipes que avaliam qual biblioteca adotar para um novo projeto não encontrarão oBarcode4NETnessa avaliação — ele é relevante apenas para equipes que já o utilizam em produção e estão decidindo quando e como migrar.

Para equipes que já utilizam oBarcode4NETem produção, o IronBarcode é o substituto natural. O mapeamento da API é direto, as alterações no código são superficiais e a semântica de geração é equivalente. A vantagem é uma dependência que é efetivamente mantida, instalável por novos membros da equipe e compatível com as versões modernas do .NET e ambientes de implantação.

A avaliação honesta é que esta não é uma escolha competitiva entre duas opções viáveis. OBarcode4NETnão pode ser estendido para novos membros da equipe, não funciona em versões modernas do .NET e não pode ser atualizado para corrigir problemas de segurança.IronBarcode pode. A decisão de migrar é motivada por essas restrições práticas, e não por preferências de API ou comparação de recursos.

Curtis Chau
Redator Técnico

Curtis Chau é bacharel em Ciência da Computação (Universidade Carleton) e se especializa em desenvolvimento front-end, com experiência em Node.js, TypeScript, JavaScript e React. Apaixonado por criar interfaces de usuário intuitivas e esteticamente agradáveis, Curtis gosta de trabalhar com frameworks modernos e criar manuais bem estruturados e visualmente atraentes.

...
Leia mais

Artigos relacionados

Key in blue circle

Obtenha sua chave de avaliação gratuita de 30 dias instantaneamente.

Your trial license will be sent to your email address

Sem limitações. 100% desbloqueado. Sem cartão de crédito.

bullet_checkedNão é necessário cartão de crédito nem criação de conta.Sem limitações. 100% desbloqueado. Sem cartão de crédito.
  • Logo Aetna
  • Logo NASA
  • Logo GE
  • Logo Porsche
  • Logo USDA
  • Logo Qatar
Join Millions of Engineers who’ve tried IronPDF
Agende sua demonstração ao vivo gratuita.
Booking Badge

Aprovado por milhões de engenheiros em todo o mundo.

Logotipos dos clientes da Iron Software
Agende sua consulta sem compromisso.
Preencha o formulário abaixo ou envie um e-mail para sales@ironsoftware.com
Os seus dados serão sempre mantidos em sigilo.
Aprovado por milhões de engenheiros em todo o mundo.
Logotipos dos clientes da Iron Software
Obtenha sua chave de avaliação gratuita de 30 dias instantaneamente.
Não é necessário cartão de crédito nem criação de conta.