BarcodeLib vs IronBarcode: Comparação de bibliotecas de código de barras em C#
SDK Barkoder vs IronBarcode: Digitalização de Câmera Móvel vs Cobertura Completa de Código de Barras .NET
O SDK Barkoder aparece em praticamente todas as listas dos "melhores SDKs de código de barras de 2026", sendo comparado a ZXing, Dynamsoft, Scandit e IronBarcode em matrizes comparativas. Os desenvolvedores que avaliam soluções de código de barras para projetos .NET se deparam com isso logo no início de suas pesquisas — leem sobre o MatrixSight, o modo DeBlur, a detecção de múltiplos códigos de barras e o suporte a DPM, e o consideram realmente atraente. No NuGet, Barkoder fornece dois pacotes oficiais do .NET: Plugin.Maui.Barkoder e Barkoder.Xamarin. Ambos são componentes de digitalização de câmera para aplicativos móveis MAUI e Xamarin. O que Barkoder não distribui é uma biblioteca .NET de uso geral: sem ASP.NET Core, console, desktop, servidor ou superfície PDF. Esta comparação explica o que é o Barkoder, o que o torna forte em seu domínio nativo e como o IronBarcode cobre os requisitos mais amplos que os desenvolvedores .NET geralmente têm.
Entendendo o SDK Barkoder
O Barkoder é um SDK comercial para leitura de códigos de barras, construído em torno de um núcleo de processamento C/C++, com SDKs nativos para iOS e Android. É voltado para desenvolvedores de aplicativos móveis que precisam de escaneamento por câmera em tempo real — o tipo de escaneamento que um funcionário de armazém realiza em um celular ou que um técnico de campo realiza em um tablet. O modelo de distribuição reflete integralmente esse objetivo.
O SDK é distribuído para iOS via CocoaPods com APIs em Swift e Objective-C, para Android via Maven com APIs em Kotlin e Java, e para dispositivos móveis híbridos através de plugins oficiais para React Native, Flutter, Cordova e Capacitor. No .NET, Barkoder publica dois pacotes oficiais do NuGet — Plugin.Maui.Barkoder e Barkoder.Xamarin — que incorporam os SDKs nativos do iOS e Android e oferecem um controle de escaneamento de câmera BarkoderView para aplicativos móveis MAUI e Xamarin.
Fora do MAUI e Xamarin, não há opção Barkoder no .NET. Não há pacote Barkoder.NET de uso geral, sem alvo para ASP.NET Core, Azure Functions, AWS Lambda, Docker ou servidor Linux, sem console, serviço de trabalhador, WPF, WinForms, Avalonia, ou alvo Blazor, sem modo de entrada de arquivo ou fluxo, sem leitura de PDF e sem geração de código de barras. Para o trabalho .NET que vive fora de um aplicativo móvel MAUI ou Xamarin, o Barkoder não está em escopo.
Principais características arquitetônicas do SDK Barkoder:
- Arquitetura Mobile-First: Projetado para pipelines de câmera do iOS e Android; Todo o processamento ocorre no dispositivo por meio de um núcleo C/C++.
- .NET Surface Limitado a MAUI / Xamarin: Os pacotes oficiais
Plugin.Maui.BarkodereBarkoder.Xamarinexpõem o controle de escaneamento de câmera; não há biblioteca de uso geral .NET - Sem geração de código de barras: Barkoder é um SDK somente leitura; Não possui capacidade para produzir ou codificar códigos de barras.
- Sem Entrada de PDF ou Arquivo: O SDK não tem conceito de leitura de códigos de barras de documentos PDF, imagens de sistemas de arquivos, ou fluxos de documentos no lado do servidor
- Sem Implantação em Servidor: O SDK não funciona em ASP.NET Core, Azure Functions, contêineres Docker, ou qualquer ambiente de execução .NET no lado do servidor
- Apenas Entrada de Frame de Câmera: A entrada é sempre um frame de câmera ao vivo; não há sobrecarga de caminho de arquivo, stream ou matriz de bytes
Como é a arquitetura da Barkoder?
O núcleo C/C++ do SDK lida com o processamento de imagens. Os wrappers do iOS e Android expõem esse núcleo por meio das APIs nativas da plataforma. No .NET, os plugins MAUI e Xamarin incorporam os mesmos SDKs nativos e expõem um controle BarkoderView:
// dotnet add package Plugin.Maui.Barkoder
// XAML hosts a BarkoderView; this is the code-behind callback.
using Barkoder.Maui;
public partial class ScanPage : ContentPage, IBarkoderDelegate
{
public ScanPage()
{
InitializeComponent();
BarkoderView.SetFlashEnabled(false);
BarkoderView.SetZoomFactor(1.5f);
BarkoderView.StartScanning(this);
}
public void DidFinishScanning(BarcodeResult[] result)
{
foreach (var r in result)
{
Console.WriteLine($"Type: {r.BarcodeTypeName}");
Console.WriteLine($"Value: {r.TextualData}");
}
}
}
// dotnet add package Plugin.Maui.Barkoder
// XAML hosts a BarkoderView; this is the code-behind callback.
using Barkoder.Maui;
public partial class ScanPage : ContentPage, IBarkoderDelegate
{
public ScanPage()
{
InitializeComponent();
BarkoderView.SetFlashEnabled(false);
BarkoderView.SetZoomFactor(1.5f);
BarkoderView.StartScanning(this);
}
public void DidFinishScanning(BarcodeResult[] result)
{
foreach (var r in result)
{
Console.WriteLine($"Type: {r.BarcodeTypeName}");
Console.WriteLine($"Value: {r.TextualData}");
}
}
}
Imports Barkoder.Maui
Public Partial Class ScanPage
Inherits ContentPage
Implements IBarkoderDelegate
Public Sub New()
InitializeComponent()
BarkoderView.SetFlashEnabled(False)
BarkoderView.SetZoomFactor(1.5F)
BarkoderView.StartScanning(Me)
End Sub
Public Sub DidFinishScanning(result As BarcodeResult()) Implements IBarkoderDelegate.DidFinishScanning
For Each r In result
Console.WriteLine($"Type: {r.BarcodeTypeName}")
Console.WriteLine($"Value: {r.TextualData}")
Next
End Sub
End Class
Isso funciona dentro de um aplicativo móvel MAUI com uma câmera ao vivo. Não há sobrecarga de arquivo, nem sobrecarga de stream, nem sobrecarga de PDF, e nem superfície equivalente para projetos ASP.NET Core, console, ou desktop. Os caminhos de código nativos do iOS e Android usam o mesmo modelo de componente em Swift, Objective-C, Kotlin ou Java.
Os recursos que garantem ao Barkoder um lugar em rodadas de comparação são capacidades reais. O MatrixSight e o Modo DeBlur oferecem tecnologia proprietária de recuperação de danos que lê códigos de barras fisicamente danificados, mal impressos ou capturados em condições de pouca luz. A Detecção de Múltiplos Códigos de Barras decodifica vários códigos de barras simultaneamente em um único quadro da câmera, permitindo que os funcionários do armazém escaneiem prateleiras inteiras de uma só vez. A digitalização DPM (Direct Part Marking) suporta DataMatrix e outros formatos em configurações gravadas a laser e por microjateamento, que a maioria das bibliotecas de uso geral não manipula bem. O suporte a formatos de alta densidade inclui PDF417, asteca e outros formatos 2D com alta precisão em câmeras de dispositivos móveis.
Entendendo o IronBarcode
IronBarcode é uma biblioteca nativa do .NET que abrange todo o fluxo de trabalho de código de barras — leitura e geração — em todos os ambientes .NET . É o equivalente funcional das capacidades do Barkoder para a plataforma .NET , com recursos adicionais que fazem sentido apenas em contextos de servidor e desktop.
O IronBarcode é instalado via NuGet e executado inteiramente em ambiente local. Nenhuma chamada de rede é feita durante as operações de leitura de código de barras. Ele funciona em ambientes isolados da internet (air-gapped), no Azure Functions, em contêineres Docker, noAWS Lambdae em todos os ambientes de execução .NET , do .NET Framework 4.6.2 ao .NET 9. O modelo de API estática significa que não há instância de scanner para gerenciar, nenhum ciclo de vida para rastrear e nenhuma preocupação com a segurança de threads devido a chamadas simultâneas.
Principais características do IronBarcode:
- Cobertura completa do .NET : Suporta .NET Framework 4.6.2+, .NET 6, 7, 8 e 9; Funciona em Windows, Linux, macOS, Docker, Azure e AWS.
- Leitura e geração: Abrange a leitura de códigos de barras a partir de arquivos, fluxos de dados e PDFs, bem como a geração de códigos de barras em mais de 50 formatos.
- Design de API Estático:
BarcodeReader.Read()eBarcodeWriter.CreateBarcode()são chamadas estáticas sem instância com estado para gerenciar. - Correção de erros com tecnologia de aprendizado de máquina: um pipeline de pré-processamento de imagens baseado em aprendizado de máquina que lida com códigos de barras danificados, degradados e de baixa qualidade.
- Suporte nativo a PDF: Lê códigos de barras diretamente de documentos PDF sem extração intermediária de imagem.
- Integração completa com o ecossistema .NET : Compatível com injeção de dependência, async/await, middleware e padrões de hospedagem do ASP.NET Core.
Comparação de recursos
A tabela a seguir destaca as diferenças fundamentais entre o SDK da Barkoder e o IronBarcode:
| Recurso | SDK Barkoder | IronBarcode |
|---|---|---|
| Suporte a .NET / C# | Apenas UI de câmera MAUI / Xamarin | Completo — todos os runtimes do .NET |
| Pacote NuGet | Plugin.Maui.Barkoder, Barkoder.Xamarin |
IronBarcode |
| Leitura de código de barras | Sim — câmera do celular | Sim — arquivos, fluxos, PDFs |
| Geração de código de barras | None | Completo — Mais de 50 formatos |
| Processamento de PDF | None | Nativo |
| Implantação no lado do servidor | None | Completo — ASP.NET Core, Azure, Lambda, Docker |
| Preços | Licenciamento do SDK para dispositivos móveis | Licença perpétua disponível |
Comparação Detalhada de Recursos
| Recurso | SDK Barkoder | IronBarcode |
|---|---|---|
| Leitura | ||
| Recuperação de código de barras danificado | MatrixSight / DeBlur | Correção de erro de ML, ReadingSpeed.ExtremeDetail |
| Detecção de múltiplos códigos de barras | Sim — enquadramento da câmera | ExpectMultipleBarcodes = true |
| Suporte DataMatrix / DPM | Sim | Sim — BarcodeEncoding.DataMatrix |
| Leitura de código QR | Sim | Sim |
| PDF417 | Sim | Sim |
| asteca | Sim | Sim |
| Código 128, Código 39, EAN | Sim | Sim — mais de 50 formatos |
| Detecção automática de formato | Sim | Sim |
| Geração | ||
| Geração de código de barras | None | Completo — todos os formatos |
| Geração de código QR | None | QRCodeWriter.CreateQrCode() |
| Logotipo/marca no QR Code | None | AddBrandLogo() |
| Plataforma | ||
| .NET / C# | Apenas UI de câmera MAUI / Xamarin | Completo |
| iOS (nativo) | Sim (primário) | Via .NET MAUI |
| Android (nativo) | Sim (primário) | Via .NET MAUI |
| Windows / Linux / macOS | None | Completo |
| Docker / contêineres | None | Completo |
| Azure Functions | None | Completo |
| AWS Lambda | None | Completo |
| Isolado da internet / offline | Sim (no dispositivo) | Sim (totalmente local) |
| Design de API | ||
| Suporte a Async/await | N / D | Completo |
| Injeção de dependência | None | Integração completa de injeção de dependência (DI) em .NET |
| Entrada de documento PDF | None | BarcodeReader.Read("doc.pdf") |
| Licenciamento | ||
| Modelo de licença | Licenciamento do SDK para dispositivos móveis | Perpétuo, compra única |
| Preço (entrada) | Entre em contato com vendas | See ironsoftware.com/csharp/barcode/licensing |
Modelo de Implantação .NET
A diferença mais fundamental entre o SDK Barkoder e IronBarcode é o escopo. A superfície .NET do Barkoder é limitada a UI de câmera MAUI e Xamarin; O IronBarcode cobre o resto do ecossistema .NET.
Abordagem do SDK Barkoder
A lista de plataformas publicadas do Barkoder é iOS Nativo (Swift / Objective-C), Android Nativo (Kotlin / Java), React Native, Flutter, Cordova, Capacitor, .NET MAUI, Xamarin, e Web (WASM). No .NET especificamente, isso mapeia para Plugin.Maui.Barkoder e Barkoder.Xamarin. ASP.NET Core, Azure Functions, AWS Lambda, Docker, servidores Linux, WPF, WinForms, Avalonia e Blazor estão ausentes. A arquitetura do SDK é construída em torno de um pipeline de câmera ao vivo em um dispositivo móvel. Não há modo de entrada baseado em arquivo, API de fluxo, caminho de processamento em lote ou modelo de execução no servidor.
Para trabalho .NET fora de um aplicativo móvel MAUI ou Xamarin - uma API de back-end, um serviço de trabalho, uma ferramenta de desktop, um pipeline de documentos PDF - o Barkoder não oferece um caminho. Não há superfície de API assíncrona para uso em servidor, sem integração de injeção de dependência, sem suporte a Azure ou AWS Lambda, e sem capacidade de processamento de PDF.
Abordagem do IronBarcode
O IronBarcode é instalado a partir do NuGet com um único comando e inicializado com uma chave de licença na inicialização:
// NuGet: dotnet add package IronBarcode
using IronBarCode;
IronBarCode.License.LicenseKey = "YOUR-LICENSE-KEY";
// Read a barcode from an image
var results = BarcodeReader.Read("scan.png");
foreach (var result in results)
{
Console.WriteLine($"Format: {result.Format}");
Console.WriteLine($"Value: {result.Value}");
}
// NuGet: dotnet add package IronBarcode
using IronBarCode;
IronBarCode.License.LicenseKey = "YOUR-LICENSE-KEY";
// Read a barcode from an image
var results = BarcodeReader.Read("scan.png");
foreach (var result in results)
{
Console.WriteLine($"Format: {result.Format}");
Console.WriteLine($"Value: {result.Value}");
}
Imports IronBarCode
IronBarCode.License.LicenseKey = "YOUR-LICENSE-KEY"
' Read a barcode from an image
Dim results = BarcodeReader.Read("scan.png")
For Each result In results
Console.WriteLine($"Format: {result.Format}")
Console.WriteLine($"Value: {result.Value}")
Next
A biblioteca funciona inteiramente em nível local — sem chamadas de rede, sem transmissão de dados, sem dependências externas. Ele se integra à injeção de dependência do ASP.NET Core , oferece suporte a async/await e pode ser implantado no Docker, Azure Functions eAWS Lambdasem modificações. Para integração com ASP.NET Core em nível de produção, consulte a documentação do IronBarcode .
Recuperação de código de barras danificado
A recuperação de códigos de barras danificados é a funcionalidade que, na maioria das vezes, leva os desenvolvedores a pesquisar o Barkoder. Os modos MatrixSight e DeBlur do Barkoder são recomendados para cenários de logística e manufatura onde etiquetas físicas ficam desgastadas, molhadas ou parcialmente obscurecidas.
Abordagem do SDK Barkoder
O modo DeBlur do Barkoder aplica pré-processamento de imagem — aprimoramento de contraste, nitidez, correção de rotação — antes da tentativa de decodificação. Este recurso opera exclusivamente dentro do fluxo de trabalho da câmera móvel. O modo é configurado no nível do SDK antes do início da digitalização, e o sinal da câmera é processado continuamente. Não existe um caminho equivalente baseado em arquivo.
// dotnet add package Plugin.Maui.Barkoder
// Configured against the BarkoderView in a MAUI ContentPage
BarkoderView.DeblurEnabled = true;
BarkoderView.SetEnabledBarcodeTypes(new[] { BarcodeType.Code128 });
BarkoderView.StartScanning(this);
// dotnet add package Plugin.Maui.Barkoder
// Configured against the BarkoderView in a MAUI ContentPage
BarkoderView.DeblurEnabled = true;
BarkoderView.SetEnabledBarcodeTypes(new[] { BarcodeType.Code128 });
BarkoderView.StartScanning(this);
Abordagem do IronBarcode
IronBarcode aborda o mesmo problema através de ReadingSpeed.ExtremeDetail, que ativa um pipeline de análise de imagem de múltiplas passagens — aplicando recuperação de danos baseada em ML, melhoria de contraste, nitidez e correção de rotação — antes de tentar decodificar. Isso funciona com qualquer entrada de arquivo, fluxo ou matriz de bytes:
using IronBarCode;
IronBarCode.License.LicenseKey = "YOUR-LICENSE-KEY";
var options = new BarcodeReaderOptions
{
Speed = ReadingSpeed.ExtremeDetail,
ExpectMultipleBarcodes = false,
};
var results = BarcodeReader.Read("worn-shipping-label.png", options);
if (results.Any())
{
Console.WriteLine($"Recovered: {results.First().Value}");
}
else
{
Console.WriteLine("Could not decode — image quality too low");
}
using IronBarCode;
IronBarCode.License.LicenseKey = "YOUR-LICENSE-KEY";
var options = new BarcodeReaderOptions
{
Speed = ReadingSpeed.ExtremeDetail,
ExpectMultipleBarcodes = false,
};
var results = BarcodeReader.Read("worn-shipping-label.png", options);
if (results.Any())
{
Console.WriteLine($"Recovered: {results.First().Value}");
}
else
{
Console.WriteLine("Could not decode — image quality too low");
}
Imports IronBarCode
IronBarCode.License.LicenseKey = "YOUR-LICENSE-KEY"
Dim options As New BarcodeReaderOptions With {
.Speed = ReadingSpeed.ExtremeDetail,
.ExpectMultipleBarcodes = False
}
Dim results = BarcodeReader.Read("worn-shipping-label.png", options)
If results.Any() Then
Console.WriteLine($"Recovered: {results.First().Value}")
Else
Console.WriteLine("Could not decode — image quality too low")
End If
ReadingSpeed.Balanced lida com a maioria dos códigos de barras limpos ou levemente danificados e é mais rápido. Reserve ExtremeDetail para casos onde Balanced falha — é detalhado, mas significativamente mais lento. Para obter mais orientações sobre como ler códigos de barras difíceis, consulte a documentação de leitura do IronBarcode .
Detecção de múltiplos códigos de barras
Mapeamentos de detecção de múltiplos códigos de barras diretamente entre as duas plataformas: o Barkoder processa vários códigos em um mesmo quadro da câmera; O IronBarcode lida com múltiplos códigos em um documento ou arquivo de imagem.
Abordagem do SDK Barkoder
O modo multi-código de barras do Barkoder detecta e decodifica vários códigos de barras simultaneamente a partir de um único quadro da câmera. Em um contexto de armazém, um funcionário segura um telefone sobre uma prateleira e recebe todos os valores dos códigos de barras de uma só vez. Isso é configurado no nível do SDK antes do início da verificação:
// Plugin.Maui.Barkoder — multi-scan mode in a MAUI ContentPage
BarkoderView.MulticodeCachingEnabled = true;
BarkoderView.StartScanning(this);
// IBarkoderDelegate callback delivers all decoded codes per frame
public void DidFinishScanning(BarcodeResult[] results)
{
foreach (var r in results)
Console.WriteLine($"{r.BarcodeTypeName}: {r.TextualData}");
}
// Plugin.Maui.Barkoder — multi-scan mode in a MAUI ContentPage
BarkoderView.MulticodeCachingEnabled = true;
BarkoderView.StartScanning(this);
// IBarkoderDelegate callback delivers all decoded codes per frame
public void DidFinishScanning(BarcodeResult[] results)
{
foreach (var r in results)
Console.WriteLine($"{r.BarcodeTypeName}: {r.TextualData}");
}
' Plugin.Maui.Barkoder — multi-scan mode in a MAUI ContentPage
BarkoderView.MulticodeCachingEnabled = True
BarkoderView.StartScanning(Me)
' IBarkoderDelegate callback delivers all decoded codes per frame
Public Sub DidFinishScanning(results As BarcodeResult())
For Each r In results
Console.WriteLine($"{r.BarcodeTypeName}: {r.TextualData}")
Next
End Sub
Abordagem do IronBarcode
Em aplicações .NET do lado do servidor, o cenário de múltiplos códigos de barras normalmente envolve um documento — uma fatura com um código de barras para rastreamento de remessa e um código de barras do produto, ou um manifesto de remessa com vários itens por página.IronBarcode lida com isso com ExpectMultipleBarcodes = true, e a mesma opção funciona de forma idêntica em imagens e PDFs:
using IronBarCode;
IronBarCode.License.LicenseKey = "YOUR-LICENSE-KEY";
var options = new BarcodeReaderOptions
{
Speed = ReadingSpeed.Balanced,
ExpectMultipleBarcodes = true,
};
// Works on images and PDFs — single method call
var results = BarcodeReader.Read("shipping-manifest.pdf", options);
foreach (var barcode in results)
{
Console.WriteLine($"Page {barcode.PageNumber} | {barcode.Format} | {barcode.Value}");
}
using IronBarCode;
IronBarCode.License.LicenseKey = "YOUR-LICENSE-KEY";
var options = new BarcodeReaderOptions
{
Speed = ReadingSpeed.Balanced,
ExpectMultipleBarcodes = true,
};
// Works on images and PDFs — single method call
var results = BarcodeReader.Read("shipping-manifest.pdf", options);
foreach (var barcode in results)
{
Console.WriteLine($"Page {barcode.PageNumber} | {barcode.Format} | {barcode.Value}");
}
Imports IronBarCode
IronBarCode.License.LicenseKey = "YOUR-LICENSE-KEY"
Dim options As New BarcodeReaderOptions With {
.Speed = ReadingSpeed.Balanced,
.ExpectMultipleBarcodes = True
}
' Works on images and PDFs — single method call
Dim results = BarcodeReader.Read("shipping-manifest.pdf", options)
For Each barcode In results
Console.WriteLine($"Page {barcode.PageNumber} | {barcode.Format} | {barcode.Value}")
Next
Sem extração de páginas, sem múltiplas solicitações, sem sobrecarga de rede por código de barras. O PDF é lido nativamente em uma única chamada. Para mais informações sobre leitura de múltiplos códigos de barras e PDFs, consulte a documentação do IronBarcode .
Suporte para DataMatrix e formatos de alta densidade
O DataMatrix é fundamental para casos de uso industriais e de gerenciamento de projetos digitais (DPM) — os formatos que a Barkoder enfatiza para os setores de manufatura, saúde e automotivo.
Abordagem do SDK Barkoder
O Barkoder suporta a leitura de DataMatrix com configurações DPM para marcas gravadas a laser e por microjateamento. O SDK também oferece suporte a PDF417, asteca e outros formatos 2D de alta densidade com grande precisão em câmeras de dispositivos móveis. Tudo isso funciona dentro do fluxo de trabalho da câmera no iOS ou Android:
// Plugin.Maui.Barkoder — DataMatrix scanning in a MAUI ContentPage
BarkoderView.SetEnabledBarcodeTypes(new[] { BarcodeType.DataMatrix });
BarkoderView.StartScanning(this);
// Plugin.Maui.Barkoder — DataMatrix scanning in a MAUI ContentPage
BarkoderView.SetEnabledBarcodeTypes(new[] { BarcodeType.DataMatrix });
BarkoderView.StartScanning(this);
' Plugin.Maui.Barkoder — DataMatrix scanning in a MAUI ContentPage
BarkoderView.SetEnabledBarcodeTypes(New BarcodeType() { BarcodeType.DataMatrix })
BarkoderView.StartScanning(Me)
O Barcoder não gera DataMatrix nem nenhum outro formato de código de barras. É um SDK somente leitura.
Abordagem do IronBarcode
O IronBarcode lê e gera DataMatrix nativamente. Do lado da leitura, ReadingSpeed.ExtremeDetail lida com o baixo contraste e bordas ásperas típicas de marcas DPM gravadas a laser. Do lado da geração, BarcodeWriter.CreateBarcode() produz DataMatrix para criação de etiquetas de peças:
using IronBarCode;
IronBarCode.License.LicenseKey = "YOUR-LICENSE-KEY";
// Generate a DataMatrix barcode for a part label
BarcodeWriter.CreateBarcode("PART-ID-20240315-A42", BarcodeEncoding.DataMatrix)
.SaveAsPng("part-label.png");
// Generate a QR code with brand logo
QRCodeWriter.CreateQrCode("https://parts.example.com/A42", 500)
.AddBrandLogo("company-logo.png")
.SaveAsPng("branded-qr.png");
// Read auto-detects format — DataMatrix, QR, Code128, PDF417, etc.
var results = BarcodeReader.Read("etched-part.png");
using IronBarCode;
IronBarCode.License.LicenseKey = "YOUR-LICENSE-KEY";
// Generate a DataMatrix barcode for a part label
BarcodeWriter.CreateBarcode("PART-ID-20240315-A42", BarcodeEncoding.DataMatrix)
.SaveAsPng("part-label.png");
// Generate a QR code with brand logo
QRCodeWriter.CreateQrCode("https://parts.example.com/A42", 500)
.AddBrandLogo("company-logo.png")
.SaveAsPng("branded-qr.png");
// Read auto-detects format — DataMatrix, QR, Code128, PDF417, etc.
var results = BarcodeReader.Read("etched-part.png");
Imports IronBarCode
IronBarCode.License.LicenseKey = "YOUR-LICENSE-KEY"
' Generate a DataMatrix barcode for a part label
BarcodeWriter.CreateBarcode("PART-ID-20240315-A42", BarcodeEncoding.DataMatrix) _
.SaveAsPng("part-label.png")
' Generate a QR code with brand logo
QRCodeWriter.CreateQrCode("https://parts.example.com/A42", 500) _
.AddBrandLogo("company-logo.png") _
.SaveAsPng("branded-qr.png")
' Read auto-detects format — DataMatrix, QR, Code128, PDF417, etc.
Dim results = BarcodeReader.Read("etched-part.png")
Para obter uma lista completa dos formatos suportados e das opções de geração, consulte o guia de geração de código de barras do IronBarcode .
Referência de Mapeamento de API
Esta tabela enquadra as equivalências conceituais entre a API de digitalização de câmera MAUI do Barkoder e como o IronBarcode alcança o mesmo resultado para entrada de arquivo, stream, ou PDF em qualquer projeto .NET:
| Conceito Barkoder | Equivalente ao IronBarcode |
|---|---|
| Inicialização do SDK com chave de licença | IronBarCode.License.LicenseKey = "YOUR-LICENSE-KEY" |
BarkoderView.DeblurEnabled = true |
Speed = ReadingSpeed.ExtremeDetail |
BarkoderView.MulticodeCachingEnabled = true |
ExpectMultipleBarcodes = true |
SetEnabledBarcodeTypes(BarcodeType.DataMatrix) |
BarcodeEncoding.DataMatrix (auto-detectado na leitura) |
BarkoderView.StartScanning(this) |
BarcodeReader.Read("image.png") — resultado síncrono |
BarcodeResult.TextualData |
result.Value |
BarcodeResult.BarcodeTypeName |
result.Format |
| Recuperação de danos MatrixSight | ReadingSpeed.ExtremeDetail com pré-processamento de ML |
| Análise de enquadramento da câmera | Entrada de arquivo/fluxo/matriz de bytes |
| Processamento no dispositivo | Totalmente local — sem chamadas de rede. |
| Sem suporte de geração | BarcodeWriter.CreateBarcode() / QRCodeWriter.CreateQrCode() |
| Sem suporte para PDF | BarcodeReader.Read("document.pdf") — nativo |
| Sem implantação de servidor | Funciona em ASP.NET Core, Docker, Azure Functions e Lambda. |
Quando as equipes consideram migrar do SDK da Barkoder para o IronBarcode
Requisitos de Projeto .NET Fora do MAUI
O cenário mais comum é simples: um desenvolvedor ou equipe está criando um aplicativo .NET — ASP.NET Core, um serviço do Windows, uma ferramenta de console, um aplicativo de desktop — e se depara com o Barkoder durante a pesquisa. Eles leem sobre MatrixSight, DeBlur e detecção de múltiplos códigos de barras, acham os recursos convincentes e depois descobrem que a superfície do .NET é Plugin.Maui.Barkoder e Barkoder.Xamarin — ambos apenas para UI de câmera móvel. Equipes nessa situação não estão migrando para fora do Barkoder; Eles estão identificando a ferramenta correta para sua plataforma desde o início.IronBarcode é a resposta .NET aos requisitos que o Barcoder atende no ambiente móvel.
Fluxos de trabalho de processamento de código de barras no servidor
Algumas equipes inicialmente criam protótipos de um fluxo de trabalho de processamento de código de barras usando um aplicativo de leitura móvel — como o Barkoder ou outro SDK para dispositivos móveis — e posteriormente precisam replicar ou estender esse fluxo de trabalho no servidor. Exemplos comuns incluem o processamento de imagens de código de barras enviadas por meio de uma API, a leitura de códigos de barras de documentos PDF em um sistema de gerenciamento de documentos ou o processamento em lote de arquivos de etiquetas digitalizadas. Nenhum desses fluxos de trabalho é possível com o Barkoder, que não possui um modelo de implantação do lado do servidor. O IronBarcode lida com todos eles usando a mesma API estática em ASP.NET Core, Azure Functions, Docker e AWS Lambda.
Requisitos para geração de código de barras
As equipes que desenvolvem aplicativos .NET para logística, inventário ou conformidade frequentemente descobrem que a leitura de códigos de barras representa apenas metade do fluxo de trabalho. A geração de códigos de barras — impressão de etiquetas, incorporação de códigos QR em documentos, produção de manifestos de envio — é igualmente importante. O Barkoder foi projetado para ser somente leitura; Não possui capacidade de geração. Quando o escopo de um projeto se expande para além da simples leitura, uma biblioteca que abrange ambos os lados do fluxo de trabalho elimina a necessidade de integrar uma segunda dependência.IronBarcode oferece leitura e geração em mais de 50 formatos por meio de uma API consistente.
Processamento de documentos PDF
Em aplicações Enterprise .NET , os códigos de barras aparecem frequentemente incorporados em documentos PDF — faturas, manifestos de envio, registros médicos, documentos de conformidade. Barkoder não tem noção desse fluxo de trabalho; Ele foi projetado para entrada de câmera em um dispositivo móvel. Equipes que precisam ler códigos de barras de documentos PDF recebidos, extrair dados de código de barras para lógica de negócios ou verificar a presença de códigos de barras em arquivos de documentos exigem uma biblioteca com suporte nativo a PDF. O IronBarcode lê códigos de barras diretamente de PDFs sem extração intermediária de imagens.
Previsibilidade de preços e implantação
O preço do SDK móvel do Barkoder é estruturado em torno do modelo de aplicativo móvel e distribuição - assinatura, por aplicativo, e camadas por dispositivo vinculadas à implantação móvel. Para equipes cujo trabalho .NET está fora do MAUI ou Xamarin, esse modelo de preço não se aplica porque o SDK não é executado lá. Quando o IronBarcode é a ferramenta apropriada, o modelo de preços é direto: uma licença perpétua sem cobranças por solicitação e sem limites de volume no número de códigos de barras processados.
Considerações Comuns de Migração
Da entrada por câmera do celular à entrada baseada em arquivos.
As equipes que implementaram um protótipo de digitalização móvel baseado em Barkoder e precisam replicar essa funcionalidade em .NET descobrirão que o modelo de entrada muda de quadros da câmera para arquivo, fluxo ou matriz de bytes. O IronBarcode aceita os mesmos dados em várias formas — uma string de caminho de arquivo, um Stream, um byte[] ou um System.Drawing.Image. A lógica de processamento do código de barras é idêntica em todos os outros aspectos:
// All of these call the same underlying pipeline
var results1 = BarcodeReader.Read("scan.png");
var results2 = BarcodeReader.Read(imageStream);
var results3 = BarcodeReader.Read(imageBytes);
// All of these call the same underlying pipeline
var results1 = BarcodeReader.Read("scan.png");
var results2 = BarcodeReader.Read(imageStream);
var results3 = BarcodeReader.Read(imageBytes);
' All of these call the same underlying pipeline
Dim results1 = BarcodeReader.Read("scan.png")
Dim results2 = BarcodeReader.Read(imageStream)
Dim results3 = BarcodeReader.Read(imageBytes)
Equilíbrio entre velocidade e precisão
O modo DeBlur do Barkoder está sempre ativo quando configurado e é executado dentro do loop da câmera móvel. O IronBarcode expõe explicitamente a troca entre precisão e velocidade através de ReadingSpeed. Para a maioria dos arquivos, ReadingSpeed.Balanced é apropriado. Para uma entrada danificada ou degradada que Balanced falha em decodificar, ReadingSpeed.ExtremeDetail aplica o pipeline de ML completo de múltiplas passagens. Estruturar o processamento em lote para usar Balanced por padrão e recorrer a ExtremeDetail apenas em falhas é a abordagem recomendada para fluxos de trabalho sensíveis ao desempenho.
Integração assíncrona no ASP.NET Core
O método BarcodeReader.Read() do IronBarcode é síncrono. Em endpoints ASP.NET Core que lidam com solicitações concorrentes, envolva a chamada em Task.Run() para evitar bloquear a thread de solicitação:
var results = await Task.Run(() => BarcodeReader.Read(imageBytes, options));
var results = await Task.Run(() => BarcodeReader.Read(imageBytes, options));
Dim results = Await Task.Run(Function() BarcodeReader.Read(imageBytes, options))
Especificação de formato para desempenho
O IronBarcode detecta automaticamente os formatos de código de barras por padrão. Em cenários de alto rendimento onde o formato esperado é conhecido, especificar o formato reduz o tempo de processamento, eliminando testes de formato que não corresponderão. Use BarcodeReaderOptions.ExpectBarcodeTypes para restringir a pesquisa quando o formato for conhecido antecipadamente.
Funcionalidades adicionais do IronBarcode
Além dos equivalentes diretos dos recursos móveis do Barkoder, o IronBarcode oferece funcionalidades relevantes especificamente para contextos de servidor .NET e desktop:
- Incorporação de Logotipo em Código QR:
QRCodeWriter.CreateQrCode().AddBrandLogo()adiciona uma imagem de marca ao centro de um código QR gerado — um requisito comum para fluxos de trabalho de marketing e embalagem - Leitura de código de barras em PDF : A entrada nativa em PDF significa que não há extração intermediária de imagem; PDFs com várias páginas são digitalizados em uma única chamada.
- Impressão de códigos de barras em PDFs : O IronBarcode pode gerar códigos de barras e imprimi-los em documentos PDF existentes, permitindo fluxos de trabalho automatizados para etiquetas e documentos.
- Leitura em Massa de Imagens:
BarcodeReader.ReadBulk()processa múltiplas imagens simultaneamente para operações em lote de alto rendimento - Geração de código QR estilizado : cores, margens e níveis de correção de erros personalizados para códigos QR.
- Formatos GS1 e HIBC : Suporte para padrões de código de barras para os setores de saúde e cadeia de suprimentos, além dos formatos 1D e 2D padrão.
Compatibilidade com .NET e Preparação para o Futuro
IronBarcode suporta o .NET Framework 4.6.2 e todas as versões modernas do .NET até o .NET 9, com desenvolvimento ativo acompanhando o ciclo de lançamento do .NET 10. A biblioteca roda em Windows, Linux e macOS, e é testada contra alvos de implantação do Docker, Azure Functions, e AWS Lambda. À medida que o ecossistema .NET continua a evoluir em direção a padrões multiplataforma e nativos da nuvem, o modelo de execução totalmente local do IronBarcode— sem dependência da nuvem, sem gerenciamento de chaves de API e sem latência de rede — alinha-se com a direção da arquitetura moderna de aplicativos .NET .
Conclusão
O SDK Barkoder e IronBarcode operam em domínios largamente diferentes. Barkoder é um SDK de escaneamento de câmera móvel construído para iOS e Android, com um núcleo de processamento em C/C++, distribuição móvel híbrida e Plugin.Maui.Barkoder e Barkoder.Xamarin no NuGet para UI de câmera MAUI e Xamarin.IronBarcode é uma biblioteca .NET nativa construída para servidor, desktop, processamento programático MAUI, e implantações na nuvem, distribuída via NuGet e integrada ao ecossistema .NET através de padrões padrão. As duas bibliotecas se sobrepõem de forma limitada — MAUI e Xamarin apenas, e apenas para o caso de uso de UI de câmera.
O Barkoder é a escolha certa ao construir uma UI de digitalização de câmera dentro de um aplicativo móvel MAUI, Xamarin, React Native, Flutter, Cordova, ou Capacitor. Suas capacidades de MatrixSight e DeBlur são genuinamente fortes para cenários de digitalização de campo onde a qualidade da imagem não pode ser controlada. A detecção de múltiplos códigos de barras e o suporte a DPM são ideais para fluxos de trabalho móveis nos setores de manufatura e logística. Se sua equipe está construindo uma interface móvel para trabalhadores que digitalizam itens físicos com a câmera de um dispositivo, o Barkoder deve estar na avaliação.
IronBarcode é a escolha certa ao desenvolver aplicações .NET — APIs ASP.NET Core , serviços do Windows, pipelines de processamento de documentos, ferramentas de desktop ou funções em nuvem — que necessitam de leitura de código de barras, geração de código de barras ou ambos. Abrange todo o fluxo de trabalho de código de barras a partir de um único pacote NuGet , funciona inteiramente localmente sem dependências de rede e integra-se com padrões .NET padrão, incluindo injeção de dependência, async/await e hospedagem em nuvem. Para desenvolvedores .NET que foram levados ao Barkoder por rodadas de comparação, o IronBarcode oferece as mesmas capacidades principais — leitura tolerante a danos, detecção de múltiplos códigos de barras, DataMatrix e suporte a formatos de alta densidade — implementados para entrada de arquivo, stream, e PDF em toda a plataforma .NET.
A conclusão prática é direta: escolha pelo caso de uso. Uma UI de câmera MAUI mapeia claramente para o Barkoder; arquivo, stream, PDF, geração, ou qualquer superfície .NET não MAUI mapeia claramente para o IronBarcode. Muitos sistemas de produção executam ambos — Barkoder no cliente móvel e IronBarcode no servidor — e os dois se integram naturalmente como um híbrido.
Perguntas frequentes
O que é o SDK Barcoder?
O Barkoder SDK é uma biblioteca .NET para geração e leitura de códigos de barras em aplicações C#. É uma das diversas 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 SDK da Barkoder e o IronBarcode?
O IronBarcode utiliza uma API estática e sem estado, que não requer gerenciamento de instâncias, enquanto o SDK Barkoder normalmente exige a criação e configuração de instâncias 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 Barkoder SDK?
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 SDK Barkoder?
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 SDK Barkoder?
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 Barkoder?
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 SDK da Barkoder 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 SDK da Barkoder para o IronBarcode?
A migração do SDK Barkoder 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()`.

