MessagingToolkit Barcode vs IronBarcode: Comparação de bibliotecas de código de barras em C#
O MessagingToolkit.Barcode lista o Silverlight 5 e o Windows Phone 7 como plataformas-alvo. Ambos foram descontinuados há anos. Se essa biblioteca já está presente no seu código, a questão não é se você deve substituí-la — mas sim o que você está esperando.
Entendendo o MessagingToolkit.Barcode
MessagingToolkit.Barcode era uma adaptação para .NET da biblioteca de código de barras Java ZXing, ampliada com integrações adicionais de mensagens. A biblioteca foi lançada por volta de 2011 e teve desenvolvimento ativo ao longo de 2012 e 2013. Sua versão final — 1.7.0.2 — foi publicada em 2014. O repositório do GitHub permanece acessível, mas não apresenta nenhuma atividade: nenhum commit, nenhuma resposta a problemas relatados, nenhuma revisão de pull request. O projeto é preservado, não mantido.
A biblioteca foi projetada para a era do .NET Framework e para as plataformas móveis que definiram esse período. Oferecia decodificação e codificação de código de barras por meio de uma API baseada em instâncias, aceitando entradas System.Drawing.Bitmap e retornando objetos de resultado com propriedades .Text e .BarcodeFormat. Para aplicações .NET Framework 4.x executadas no Windows em 2012, essa abordagem era prática e comumente utilizada.
Como uma adaptação do ZXing, o MessagingToolkit.Barcode compartilhava o mecanismo de decodificação subjacente dessa biblioteca Java, mas adicionava sua própria interface de API e pontos de extensão orientados a mensagens. A biblioteca nunca ultrapassou suas raízes no .NET Framework . Nenhuma versão para .NET Standard foi publicada, nenhum suporte para .NET Core foi adicionado e nenhuma atualização de qualquer tipo foi lançada após a versão de 2014.
Principais características do MessagingToolkit.Barcode:
- Última versão lançada: 2014, versão 1.7.0.2, sem atualizações subsequentes.
- Herança ZXing: Uma adaptação da biblioteca Java ZXing com extensões específicas para .NET.
- API baseada em instâncias: Requer a instanciação de objetos
BarcodeDecodereBarcodeEncoderpara cada operação - Dependência System.Drawing: Aceita e retorna
System.Drawing.Bitmap, tornando-a exclusiva do Windows no .NET moderno. - Um único resultado por chamada de decodificação: Retorna um objeto de resultado (ou nulo) em vez de uma coleção.
- Sem suporte para PDF: a entrada é limitada a objetos bitmap; nenhuma leitura de documento nativo
- Sem detecção automática de formato: o formato deve ser pré-configurado ou detectado pela biblioteca apenas a partir da imagem.
- Plataformas-alvo descontinuadas: Lista Silverlight 3, 4 e 5; Windows Phone 7.0, 7.5, 7.8 e 8.0 em seus metadados NuGet
- Sem especificação de framework de destino .NET moderno: Não será compilado em projetos que tenham como alvo o .NET Core, .NET 5 ou qualquer versão posterior.
Registro da Plataforma e de Manutenção
Os metadados do pacote NuGet para MessagingToolkit.Barcode documentam seus alvos pretendidos. Cada entrada na tabela a seguir representa uma plataforma que era atual ou quase atual na época do desenvolvimento da biblioteca:
| Plataforma | Situação em 2026 |
|---|---|
| Silverlight 3 | Descontinuado — plugin do navegador removido em 2021 |
| Silverlight 4 | Descontinuado — plugin do navegador removido em 2021 |
| Silverlight 5 | Descontinuado — plugin do navegador removido em 2021 |
| Windows Phone 7.0 | Descontinuado — fim do suporte em 2014 |
| Windows Phone 7.5 | Descontinuado — fim do suporte em 2014 |
| Windows Phone 7.8 | Descontinuado — fim do suporte em 2014 |
| Windows Phone 8.0 | Descontinuado — fim do suporte em 2017 |
| .NET Framework 3.5 | Apenas atualizações de segurança, sem novos recursos. |
| .NET Framework 4.0 | Apenas atualizações de segurança, sem novos recursos. |
| .NET Framework 4.5 | Apenas atualizações de segurança, sem novos recursos. |
A biblioteca não possui uma estrutura de destino compatível com .NET Core, .NET 5, .NET 6, .NET 7, .NET 8 ou .NET 9. Projetos direcionados a esses ambientes de execução encontrarão uma falha em tempo de compilação quando o pacote não conseguir resolver um identificador de estrutura compatível — não um aviso em tempo de execução, mas um erro de compilação.
Entendendo o IronBarcode
IronBarcode é uma biblioteca comercial para leitura e geração de códigos de barras para .NET, desenvolvida e mantida pela Iron Software. Ele opera através de um modelo de API estático: BarcodeReader.Read() para decodificação e BarcodeWriter.CreateBarcode() para codificação, sem exigir a instanciação de objetos leitores ou escritores. A biblioteca inclui seu próprio pipeline de processamento de imagens e não depende de System.Drawing, tornando-a compatível com Windows, Linux, macOS e ambientes de contêiner.
OIronBarcodeaceita vários tipos de entrada para leitura: caminhos de arquivos, objetos Stream, matrizes de bytes e caminhos de documentos PDF. Os resultados são retornados como coleções em vez de objetos únicos que podem ser anulados, permitindo que imagens com vários códigos de barras sejam processadas sem configuração separada. A detecção de formato é automática — a biblioteca identifica o tipo de código de barras a partir do conteúdo da imagem, sem exigir que o usuário o especifique antecipadamente.
Para geração, oIronBarcoderetorna um objeto de resultado fluente de BarcodeWriter.CreateBarcode() que suporta múltiplos formatos de saída, incluindo PNG, JPEG, SVG, PDF e strings codificadas em base64. A biblioteca recebe atualizações regulares e publica novas versões do NuGet ativamente.
Principais características do IronBarcode:
- Design de API estática:
BarcodeReader.Read()eBarcodeWriter.CreateBarcode()não requerem objetos instanciados - Multiplataforma: Funciona em Windows, Linux, macOS, contêineres Docker e funções em nuvem.
- Sem dependência de System.Drawing: Utiliza um pipeline de imagem interno compatível com todas as plataformas .NET modernas.
- Leitura de múltiplos resultados: Retorna uma coleção de cada chamada de decodificação, suportando imagens com múltiplos códigos de barras.
- Leitura de PDF: Lê códigos de barras diretamente de documentos PDF sem etapas de extração externas.
- Detecção automática de formato: Identifica o tipo de código de barras a partir do conteúdo da imagem sem necessidade de configuração por parte do usuário.
- Saída de geração fluente: Salvar como PNG, JPEG, SVG, PDF ou matriz de bytes a partir de um único objeto de resultado.
- Manutenção ativa: Lançamentos regulares do NuGet com correções de segurança e novos recursos.
- Licenciamento comercial: Requer uma chave de licença para uso em produção; opera em modo de teste sem um
Comparação de recursos
A tabela a seguir fornece uma visão geral das principais diferenças entre MessagingToolkit.Barcode e IronBarcode:
| Recurso | MessagingToolkit.Barcode | IronBarcode |
|---|---|---|
| Última atualização | 2014 | 2026 (ativo) |
| Suporte moderno para .NET | Não | Sim (.NET 6, 7, 8, 9) |
| Multiplataforma | Não (somente para Windows) | Sim (Windows, Linux, macOS) |
| Leitura de código de barras em PDF | Não | Sim |
| Detecção automática de formato | Não | Sim |
| patches de segurança ativos | Não | Sim |
| Suporte comercial | Nenhum | Suporte profissional disponível |
Comparação Detalhada de Recursos
| Recurso | MessagingToolkit.Barcode | IronBarcode |
|---|---|---|
| Manutenção | ||
| Última atualização | 2014 | 2026 (ativo) |
| Versão NuGet | 1.7.0.2 (final) | Atualizado regularmente. |
| Desenvolvimento ativo | Não | Sim |
| atualizações de segurança | Nenhum desde 2014 | Patches regulares |
| Plataforma | ||
| .NET Framework 3.5–4.5 | Sim | Não |
| .NET Framework 4.6.2+ | Não | Sim |
| .NET Core | Não | Sim |
| .NET 5 / 6 / 7 / 8 / 9 | Não | Sim |
| ASP.NET Core | Não | Sim |
| .NET MAUI | Não | Sim |
| Blazor | Não | Sim |
| Linux / macOS | Não | Sim |
| Docker / contêineres | Não | Sim |
| Leitura | ||
| Tipos de entrada | Somente bitmap | Caminho, fluxo, matriz de bytes, PDF |
| Leitura de PDF | Não | Sim (nativo) |
| Detecção automática de formato | Não | Sim |
| Vários códigos de barras por imagem | Não | Sim |
| Dependência de desenho do sistema | Obrigatório | Nenhum |
| Geração | ||
| Formatos de saída | Somente bitmap | PNG, JPEG, SVG, PDF, matriz de bytes |
| API de saída fluente | Não | Sim |
| Dependência de desenho do sistema | Obrigatório | Nenhum |
| Licenciamento | ||
| Suporte comercial | Nenhum | Suporte profissional disponível |
| Resultado da auditoria de conformidade | Sinalizado como abandonado | Aprovado em auditorias padrão |
Suporte de plataforma e estrutura
A história da plataforma para essas duas bibliotecas é definida por um intervalo de 12 anos. O MessagingToolkit.Barcode foi projetado para um momento específico na história do .NET ; OIronBarcodefoi projetado para o presente.
MessagingToolkit.Abordagem de código de barras
O MessagingToolkit.Barcode é compatível exclusivamente com o .NET Framework 3.5, 4.0 e 4.5. Não possui o nome .NET Standard , não tem como alvo o .NET Core e não possui uma camada de compatibilidade para runtimes modernos. Quando um arquivo de projeto faz referência a este pacote e tem como alvo qualquer versão moderna do .NET , a operação de restauração do NuGet falha com um erro de compatibilidade de framework — a compilação não prossegue.
A tabela de plataformas nos metadados do NuGet torna isso concreto. Silverlight 3, 4 e 5 estão listados como alvos; Os três foram descontinuados desde 2021. As versões listadas são: Windows Phone 7.0, 7.5, 7.8 e 8.0; Todos os frameworks atingiram o fim do suporte entre 2014 e 2017. Os frameworks restantes — .NET Framework 3.5, 4.0 e 4.5 — permanecem tecnicamente funcionais no Windows, mas recebem apenas atualizações de segurança da Microsoft, sem o desenvolvimento de novos recursos.
Na prática, a consequência é que o MessagingToolkit.Barcode atua como um obstáculo à modernização do framework. Um arquivo de projeto que tem como alvo o pacote net472 e faz referência a ele não pode ser alterado para net8.0 sem que o pacote seja removido primeiro. O pacote não está apenas desatualizado — ele impede ativamente a mudança na estrutura de destino que permitiria ao projeto acessar os recursos modernos do .NET .
Consulte a documentação da plataforma IronBarcode para obter a lista completa de frameworks e ambientes de implantação suportados.
Abordagem do IronBarcode
OIronBarcodeé compatível com o .NET Framework 4.6.2 até o .NET 9, abrangendo tanto aplicativos Windows legados quanto implantações multiplataforma modernas. Um único pacote NuGet é instalado em todas as plataformas suportadas sem a necessidade de bibliotecas gráficas separadas ou configurações específicas da plataforma.
O suporte multiplataforma é significativo na prática. O pipeline de imagens interno doIronBarcodenão depende do System.Drawing, que se tornou exclusivo do Windows no .NET 6. Aplicativos direcionados ao Linux ou macOS — incluindo aqueles executados em contêineres Docker, no Azure App Service no Linux ou no AWS Lambda — usam a mesma API e o mesmo comportamento doIronBarcodeque as implantações do Windows.
Design de API
A superfície da API do MessagingToolkit.Barcode foi projetada em torno de objetos baseados em instâncias e entradas System.Drawing.Bitmap. A API doIronBarcodeé estática e aceita múltiplos tipos de entrada. Ambas as bibliotecas codificam e decodificam códigos de barras, mas a mecânica de suas chamadas difere significativamente.
MessagingToolkit.Abordagem de código de barras
A leitura com MessagingToolkit.Barcode exigiu a criação de uma instância de BarcodeDecoder, a construção de um Bitmap a partir do arquivo de imagem, a passagem do bitmap para .Decode() e a verificação do resultado para nulo antes de acessar .Text. A geração seguiu o mesmo padrão de instância: criar um BarcodeEncoder, definir sua propriedade .Format, chamar .Encode() para receber um Bitmap e, em seguida, chamar .Save() nesse bitmap.
// Only compiles on .NET Framework 4.5 or earlier
using MessagingToolkit.Barcode;
using System.Drawing;
// Reading
var barcodeReader = new BarcodeDecoder();
var bitmap = new Bitmap("barcode.png");
var result = barcodeReader.Decode(bitmap);
string value = result?.Text;
string format = result?.BarcodeFormat.ToString();
// Writing
var barcodeWriter = new BarcodeEncoder();
barcodeWriter.Format = BarcodeFormat.QrCode;
var outputBitmap = barcodeWriter.Encode("Hello World");
outputBitmap.Save("output.png");
// Only compiles on .NET Framework 4.5 or earlier
using MessagingToolkit.Barcode;
using System.Drawing;
// Reading
var barcodeReader = new BarcodeDecoder();
var bitmap = new Bitmap("barcode.png");
var result = barcodeReader.Decode(bitmap);
string value = result?.Text;
string format = result?.BarcodeFormat.ToString();
// Writing
var barcodeWriter = new BarcodeEncoder();
barcodeWriter.Format = BarcodeFormat.QrCode;
var outputBitmap = barcodeWriter.Encode("Hello World");
outputBitmap.Save("output.png");
Imports MessagingToolkit.Barcode
Imports System.Drawing
' Reading
Dim barcodeReader As New BarcodeDecoder()
Dim bitmap As New Bitmap("barcode.png")
Dim result = barcodeReader.Decode(bitmap)
Dim value As String = result?.Text
Dim format As String = result?.BarcodeFormat.ToString()
' Writing
Dim barcodeWriter As New BarcodeEncoder()
barcodeWriter.Format = BarcodeFormat.QrCode
Dim outputBitmap = barcodeWriter.Encode("Hello World")
outputBitmap.Save("output.png")
A dependência Bitmap não é incidental. System.Drawing.Bitmap requer GDI+ no Windows. Não .NET 6 e versões posteriores, tentar usar System.Drawing no Linux ou macOS gera um erro PlatformNotSupportedException em tempo de execução. Mesmo que o assembly MessagingToolkit.Barcode pudesse ser carregado em um projeto .NET moderno — o que não é possível devido à ausência do alvo do framework — a dependência Bitmap impediria a implantação multiplataforma de qualquer forma.
Abordagem do IronBarcode
IronBarcode utiliza métodos estáticos em toda a sua extensão. BarcodeReader.Read() aceita um caminho de arquivo, um Stream, uma matriz de bytes ou um caminho de arquivo PDF — nenhum Bitmap é necessário. O resultado é uma coleção, não um único objeto que pode ser anulado. A geração usa BarcodeWriter.CreateBarcode() com o tipo de codificação passado como parâmetro, e o objeto resultante expõe métodos de salvamento diretamente.
// Works on .NET 6, 7, 8, 9 — Windows, Linux, macOS, Docker
using IronBarCode;
IronBarCode.License.LicenseKey = "YOUR-KEY";
// Reading
var results = BarcodeReader.Read("barcode.png");
string value = results.FirstOrDefault()?.Value;
string format = results.FirstOrDefault()?.Format.ToString();
// Writing
BarcodeWriter.CreateBarcode("Hello World", BarcodeEncoding.QRCode)
.SaveAsPng("output.png");
// Works on .NET 6, 7, 8, 9 — Windows, Linux, macOS, Docker
using IronBarCode;
IronBarCode.License.LicenseKey = "YOUR-KEY";
// Reading
var results = BarcodeReader.Read("barcode.png");
string value = results.FirstOrDefault()?.Value;
string format = results.FirstOrDefault()?.Format.ToString();
// Writing
BarcodeWriter.CreateBarcode("Hello World", BarcodeEncoding.QRCode)
.SaveAsPng("output.png");
Imports IronBarCode
' Works on .NET 6, 7, 8, 9 — Windows, Linux, macOS, Docker
IronBarCode.License.LicenseKey = "YOUR-KEY"
' Reading
Dim results = BarcodeReader.Read("barcode.png")
Dim value As String = results.FirstOrDefault()?.Value
Dim format As String = results.FirstOrDefault()?.Format.ToString()
' Writing
BarcodeWriter.CreateBarcode("Hello World", BarcodeEncoding.QRCode) _
.SaveAsPng("output.png")
Para obter orientações detalhadas sobre como ler códigos de barras em imagens, consulte Como ler códigos de barras em imagens . Para gerar códigos de barras 1D, incluindo os formatos Code 128, EAN-13 e UPC, consulte como criar códigos de barras 1D .
Segurança e Manutenção
Uma biblioteca abandonada apresenta um nível de segurança que difere categoricamente de uma biblioteca que recebe manutenção ativa. A diferença não está em saber se uma CVE foi registrada, mas sim se essa CVE poderia ser corrigida.
MessagingToolkit.Abordagem de código de barras
O MessagingToolkit.Barcode não recebe atualizações desde 2014. Qualquer vulnerabilidade descoberta após essa data — na lógica de análise de imagens da própria biblioteca, na implementação de decodificação derivada do ZXing ou em suas dependências transitivas — permanece permanentemente sem correção. Não há responsável pela manutenção para notificar, nenhum processo de aviso de segurança para monitorar e nenhum mecanismo de lançamento por meio do qual uma correção possa chegar aos usuários, mesmo que uma fosse desenvolvida.
Ferramentas de verificação de segurança — Snyk, WhiteSource, GitHub Dependabot, NuGet audit — sinalizam pacotes abandonados como de alto risco. A sinalização não depende da confirmação de uma CVE; Isso reflete a ausência de qualquer processo pelo qual as vulnerabilidades confirmadas possam ser corrigidas. Esse é um perfil de risco categoricamente diferente de uma biblioteca com um mantenedor ativo e um processo de resposta a incidentes de segurança documentado.
Para equipes que operam sob estruturas de conformidade — PCI DSS, HIPAA, SOC 2, ISO 27001 — isso tem consequências práticas em auditorias. Essas estruturas exigem o gerenciamento ativo de patches de software de terceiros. Um pacote abandonado sem um mecanismo de resposta para vulnerabilidades falhará em uma auditoria de conformidade, independentemente de ter sido registrado um CVE específico contra ele. A conclusão da auditoria é a ausência de uma dependência sustentável, e não a presença de uma vulnerabilidade conhecida.
Abordagem do IronBarcode
OIronBarcoderecebe atualizações regulares do NuGet, que incluem correções de segurança, atualizações de dependências e novas funcionalidades. A biblioteca é desenvolvida pela Iron Software, que mantém um processo de suporte documentado e publica notas de versão para cada atualização. Os avisos de segurança, quando aplicáveis, são abordados nas atualizações de segurança.
OIronBarcodesuporta mais de 50 formatos de código de barras, incluindo todos os formatos que o MessagingToolkit.Barcode suportava — QR Code, Code 128, EAN-13, EAN-8, UPC-A e outros — além de formatos que a biblioteca anterior nunca suportou: DataMatrix, Aztec, PDF417 e toda a gama de simbologias 2D modernas.
Referência de Mapeamento de API
A tabela a seguir mapeia os elementos da API MessagingToolkit.Barcode para seus equivalentes noIronBarcode:
| MessagingToolkit.Barcode | IronBarcode | Notas |
|---|---|---|
| @@--CÓDIGO-64247--@@ | Estático — @@--CÓDIGO-64248--@@ | Nenhuma instância necessária |
| @@--CÓDIGO-64249--@@ | @@--CÓDIGO-64250--@@ | Aceita caminho, fluxo ou matriz de bytes |
| @@--CÓDIGO-64251--@@ | @@--CÓDIGO-64252--@@ | Propriedade renomeada |
| @@--CÓDIGO-64253--@@ | @@--CÓDIGO-64254--@@ | Propriedade renomeada |
| @@--CÓDIGO-64255--@@ | Estático — @@--CÓDIGO-64256--@@ | Nenhuma instância necessária |
| @@--CÓDIGO-64257--@@ | @@--CÓDIGO-64258--@@ (parâmetro) | Formato passado como parâmetro, não como propriedade. |
barcodeWriter.Encode("data") retorna Bitmap |
@@--CÓDIGO-64261--@@ | Retorna um resultado fluente, não um Bitmap. |
| @@--CÓDIGO-64262--@@ | @@--CÓDIGO-64263--@@ | Método fluente no objeto de resultado |
| @@--CÓDIGO-64264--@@ | @@--CÓDIGO-64265--@@ | O namespace e o valor da enumeração foram renomeados. |
| @@--CÓDIGO-64266--@@ | @@--CÓDIGO-64267--@@ | Mesmo nome simbólico |
| Retorna nulo se não for encontrado. | Retorna uma coleção vazia | Verifique .Any() ou .FirstOrDefault() |
| Somente para o .NET Framework 3.5–4.5 | .NET 4.6.2 até .NET 9 | Suporte completo para .NET moderno |
Quando as equipes consideram migrar do MessagingToolkit.Barcode para o IronBarcode
Os cenários que levam as equipes a avaliar essa transição compartilham uma estrutura comum: um requisito do projeto ultrapassou o que uma biblioteca da era dos frameworks de 2014 consegue atender.
Requisitos de Modernização da Estrutura
O fator desencadeante mais comum é uma atualização do .NET planejada ou em andamento. Quando uma equipe decide migrar um projeto do .NET Framework 4.x para o .NET 6 ou posterior, o grafo de dependências deve ser auditado em busca de pacotes que não possuem suporte para versões modernas do framework. O MessagingToolkit.Barcode aparecerá nessa auditoria como uma dependência bloqueadora — uma que não pode ser resolvida em relação a um identificador de framework de destino moderno. A migração para oIronBarcodeé, portanto, um pré-requisito para a atualização mais ampla do .NET , e não uma iniciativa separada. As equipes que realizam a modernização de aplicativos normalmente descobrem essa dependência logo no início da fase de análise da atualização.
Obrigações de segurança e conformidade
Um segundo cenário envolve revisões de segurança e auditorias de conformidade. As equipes que operam sob as estruturas PCI DSS, HIPAA, SOC 2 ou ISO 27001 passam por auditorias periódicas que examinam a integridade da dependência de terceiros. Um pacote abandonado sem um mecanismo de resposta de segurança falha nessas auditorias por motivos de processo, independentemente de uma vulnerabilidade específica ter sido identificada. Quando uma equipe de segurança sinaliza o MessagingToolkit.Barcode como uma dependência não compatível, a solução é a substituição — não há patch para aplicar, nenhuma versão para atualizar e nenhum fornecedor para contatar para obter um aviso de segurança. A migração para oIronBarcoderesolve a constatação da auditoria, substituindo uma dependência sem caminho de manutenção por uma que recebe atualizações de segurança regulares.
Expansão de Capacidades
Um terceiro cenário surge quando os novos requisitos vão além do que o MessagingToolkit.Barcode pode oferecer. Aplicações que processam documentos digitalizados ou arquivos PDF precisam de leitura de código de barras nesses formatos — o MessagingToolkit.Barcode aceitava apenas entradas bitmap, o que impossibilitava a leitura de PDFs sem uma camada de extração separada. Aplicações que geram códigos de barras para distribuição na web precisam de saída SVG ou base64 — MessagingToolkit.Barcode retornou um Bitmap, exigindo etapas de conversão adicionais e uma dependência System.Drawing.Imaging. Quando os requisitos do produto se expandem para essas áreas, as limitações da biblioteca mais antiga se tornam restrições de engenharia que não podem ser contornadas dentro de sua superfície de API.
Crescimento alvo da plataforma
Um quarto cenário é a adição de novos alvos de implantação. Equipes que inicialmente desenvolveram aplicativos exclusivos para Windows e estão expandindo para hospedagem Linux, ambientes de desenvolvimento macOS, contêineres Docker ou funções em nuvem em tempos de execução Linux encontram a dependência System.Drawing como um problema crítico. MessagingToolkit.Barcode requer System.Drawing.Bitmap para todas as operações de entrada e saída, e System.Drawing é exclusivo do Windows no .NET 6 e versões posteriores. Qualquer sistema operacional que não seja Windows torna essa dependência uma falha em tempo de execução, e não apenas uma questão de compatibilidade. A migração para oIronBarcoderemove completamente a exigência do System.Drawing, possibilitando a implantação multiplataforma que a equipe está tentando alcançar.
Considerações Comuns de Migração
As equipes que estão migrando do MessagingToolkit.Barcode para oIronBarcodedevem estar cientes de diversas diferenças técnicas que afetam a mecânica da migração.
Substituição de namespace
Todos os arquivos que contêm using MessagingToolkit.Barcode; requerem uma atualização para using IronBarCode;. Uma busca em todo o código-fonte pela string do namespace antigo é o ponto de partida mais confiável para identificar o escopo da migração. Os arquivos que importam System.Drawing exclusivamente para o tipo Bitmap usado com MessagingToolkit.Barcode podem ter essa importação removida completamente após a instalação do IronBarcode, já que oIronBarcodenão a exige.
Alteração da estrutura alvo
Remover MessagingToolkit.Barcode do arquivo de projeto permite que o nome do framework de destino seja atualizado. A alteração de <TargetFramework>net472</TargetFramework> para <TargetFramework>net8.0</TargetFramework> torna-se possível assim que a dependência bloqueadora for removida. OIronBarcodeoferece suporte a ambas as versões dessa mudança — é compatível com o .NET Framework 4.6.2 e com o .NET 8 — portanto, pode ser instalado antes da conclusão da atualização do framework, permitindo que a migração seja feita em etapas, em vez de em uma única etapa.
Diferenças no namespace do BarcodeWriter
MessagingToolkit.Barcode usou BarcodeEncoder como classe de geração, com o formato definido como uma propriedade (barcodeWriter.Format = BarcodeFormat.QrCode) antes de chamar .Encode().IronBarcodeusa BarcodeWriter.CreateBarcode() como um método estático, com o tipo de codificação passado como parâmetro. Os nomes da enumeração diferem: @@--CÓDIGO-64264--@@ torna-se BarcodeEncoding.QRCode, e @@--CÓDIGO-64266--@@ torna-se BarcodeEncoding.Code128. O resultado de CreateBarcode() é um objeto fluente com .SaveAsPng(), .SaveAsJpeg(), .SaveAsSvg() e outros métodos de saída — não retorna um Bitmap.
Funcionalidades adicionais do IronBarcode
OIronBarcodeoferece funcionalidades que vão além do conjunto de recursos discutidos nas seções acima:
- Leitura de código de barras em PDF:
BarcodeReader.Read("document.pdf")lê códigos de barras de todas as páginas de um documento PDF, retornando resultados que incluem metadados de número de página. Não é necessária nenhuma etapa externa de extração de PDF. - Processamento em lote: Vários arquivos — incluindo imagens e PDFs — podem ser lidos em uma única passagem. A detecção automática de formato aplica-se ao tipo de código de barras, e não apenas ao formato do arquivo.
- Personalização de código QR: Os códigos QR gerados podem incluir logotipos incorporados, cores personalizadas e zonas de silêncio ajustáveis através da API
QRCodeWriter. - Multithreading assíncrono:
BarcodeReader.ReadAsync()fornece uma sobrecarga assíncrona nativa para integração com padrões async/await no ASP.NET Core e outros aplicativos .NET assíncronos. - Múltiplos formatos de saída para geração: Os códigos de barras gerados podem ser salvos como PNG, JPEG, SVG, PDF ou recuperados como uma string codificada em base64 para incorporação direta em respostas HTML ou armazenamento em banco de dados.
Compatibilidade com .NET e Preparação para o Futuro
OIronBarcodeé compatível com toda a gama de versões atuais do .NET — do .NET Framework 4.6.2 ao .NET 9 — e recebe atualizações que acompanham os novos lançamentos do .NET à medida que são disponibilizados. O pipeline de imagens interno da biblioteca evita dependências de APIs gráficas específicas da plataforma, como System.Drawing, o que significa que o mesmo pacote e API funcionam de forma idêntica em ambientes Windows, Linux, macOS e contêineres. Com o lançamento do .NET 10 e versões subsequentes, o ritmo ativo de desenvolvimento daIronBarcodegarante a manutenção da compatibilidade sem exigir que as equipes adiem as atualizações do .NET devido a limitações de biblioteca.
Conclusão
MessagingToolkit.Barcode eIronBarcoderepresentam dois momentos muito diferentes no desenvolvimento de bibliotecas .NET . O MessagingToolkit.Barcode foi desenvolvido para o .NET Framework 4.x e para as plataformas móveis de 2011 a 2014. OIronBarcodefoi desenvolvido para o .NET que existirá em 2026 — multiplataforma, compatível com contêineres e com manutenção ativa. A diferença técnica entre eles não se resume à paridade de funcionalidades; É uma questão de compatibilidade em tempo de execução. O MessagingToolkit.Barcode não será compilado em um projeto .NET moderno, o que significa que, na maioria dos cenários práticos, a comparação não é entre duas opções concorrentes.
O MessagingToolkit.Barcode ocupa um caso de uso legítimo restrito: um projeto que tem como alvo exclusivo o .NET Framework 4.x, é executado apenas no Windows, nunca será atualizado para um runtime mais recente e opera em um ambiente onde os requisitos de auditoria de segurança não são aplicados. Nessa configuração específica, a biblioteca produz resultados e o bloqueio técnico não se aplica. Essa configuração descreve muito poucos projetos ativos em 2026, e a preocupação com a segurança — doze anos sem atualizações — se aplica a todas as configurações, independentemente disso.
OIronBarcodeé adequado para equipes que precisam de funcionalidade de código de barras em qualquer contexto .NET moderno: .NET 6, 7, 8 ou 9; Implantação em Linux ou macOS; Ambientes Docker ou hospedados na nuvem; Aplicações ASP.NET Core ; ou qualquer projeto que processe PDFs ou exija códigos de barras em formatos de saída além de um bitmap do Windows. A API estática reduz a sobrecarga de instanciação do modelo baseado em instâncias, e a ausência de uma dependência System.Drawing remove uma restrição multiplataforma significativa.
A avaliação fundamental é simples. Para equipes que utilizam o .NET Framework 4.x e não têm planos de mudança, o MessagingToolkit.Barcode continua funcionando dentro dessas limitações. Para todos os outros cenários — modernização, conformidade, implementação multiplataforma ou expansão de recursos — o MessagingToolkit.Barcode não é uma opção viável, e oIronBarcodeé um substituto direto com um caminho de migração pequeno e bem definido.
Perguntas frequentes
O que é o código de barras do MessagingToolkit?
O MessagingToolkit Barcode é uma biblioteca .NET para gerar e ler códigos de barras em aplicações C#. É uma das várias alternativas que os desenvolvedores avaliam ao selecionar uma solução de código de barras para projetos .NET.
Quais são as principais diferenças entre o MessagingToolkit Barcode e o IronBarcode?
O IronBarcode utiliza uma API estática e sem estado, que não requer gerenciamento de instâncias, enquanto o MessagingToolkit Barcode normalmente exige a criação e configuração de uma instância antes do uso. O IronBarcode também oferece suporte nativo a PDF, detecção automática de formato e licenciamento com chave única em todos os ambientes.
O IronBarcode é mais fácil de licenciar do que o MessagingToolkit Barcode?
O IronBarcode utiliza uma única chave de licença que abrange tanto o ambiente de desenvolvimento quanto o de produção. Isso simplifica os pipelines de CI/CD e as configurações do Docker em comparação com sistemas de licenciamento que separam as chaves do SDK das chaves de tempo de execução.
O IronBarcode é compatível com todos os formatos de código de barras suportados pelo MessagingToolkit Barcode?
O IronBarcode suporta mais de 30 simbologias de código de barras, incluindo QR Code, Code 128, Code 39, DataMatrix, PDF417, Aztec, EAN-13, UPC-A, GS1 e muitas outras. A detecção automática de formato significa que não é necessária a enumeração explícita de formatos.
O IronBarcode suporta leitura nativa de códigos de barras em PDF?
Sim. O IronBarcode lê códigos de barras diretamente de arquivos PDF usando BarcodeReader.Read("document.pdf") sem a necessidade de uma biblioteca de renderização de PDF separada. Os resultados por página incluem número da página, formato do código de barras, valor e nível de confiança.
Como o IronBarcode lida com o processamento em lote em comparação com o MessagingToolkit Barcode?
Os métodos estáticos do IronBarcode são sem estado e naturalmente seguros para threads, permitindo o uso direto de Parallel.ForEach sem gerenciamento de instâncias por thread. Não há limite de throughput em nenhum plano de preços.
Quais versões do .NET o IronBarcode suporta?
O IronBarcode é compatível com o .NET Framework 4.6.2+, .NET Core 3.1 e .NET 5, 6, 7, 8 e 9 em um único pacote NuGet. As plataformas suportadas incluem Windows x64/x86, Linux x64 e macOS x64/ARM.
Como faço para instalar o IronBarcode em um projeto .NET?
Instale o IronBarcode via NuGet: execute 'Install-Package IronBarCode' no Console do Gerenciador de Pacotes ou 'dotnet add package IronBarCode' na CLI. Não são necessários instaladores de SDK ou arquivos de tempo de execução adicionais.
Posso avaliar o IronBarcode antes de comprar, ao contrário do MessagingToolkit?
Sim. O modo de avaliação do IronBarcode retorna os valores completos dos códigos de barras decodificados — apenas as imagens de saída geradas recebem uma marca d'água. Você pode testar a precisão de leitura em seus próprios documentos antes de efetuar a compra.
Qual é a diferença de preço entre o MessagingToolkit Barcode e o IronBarcode?
O IronBarcode tem um preço inicial de US$ 749 para uma licença perpétua de desenvolvedor único, que abrange desenvolvimento e produção. Detalhes sobre preços e opções de volume estão disponíveis na página de licenciamento do IronBarcode. Não há necessidade de uma licença de tempo de execução separada.
É simples migrar do MessagingToolkit Barcode para o IronBarcode?
A migração do MessagingToolkit Barcode para o IronBarcode envolve principalmente a substituição de chamadas de API baseadas em instâncias por métodos estáticos do IronBarcode, a remoção de código repetitivo de licenciamento e a atualização dos nomes das propriedades de resultado. A maioria das migrações consiste em reduzir o código em vez de adicioná-lo.
O IronBarcode gera códigos QR com logotipos?
Sim. O método `QRCodeWriter.CreateQrCode().AddBrandLogo("logo.png")` incorpora uma imagem da marca em um código QR nativamente, com correção de erros configurável. Códigos QR coloridos também são suportados através do método `ChangeBarCodeColor()`.

