Altbilgi içeriğine atla
DIğER BILEşENLERLE KARşıLAşTıRıN

NetBarcode vs IronBarcode: C# Barkod Kütüphanesi Karşılaştırması

NetBarcode'un Type enumu birQR Kodgirdisine sahip değil. Bir gönderi etiketi projesi üçüncü ayda bir QR kodu gereksinimi eklediğinde, geliştiriciler ikinci bir kütüphaneye yönelirler. Bu ikinci kütüphane, kendi API yüzeyi, kendi sürüm programı ve sürümünün NetBarcode'un zaten gerektirdiği sürümden sapabileceği paylaşılan bir SixLabors.ImageSharp bağımlılığı getirir. Bu karşılaştırma, NetBarcode'un ne olduğunu, nerede iyi uyduğunu ve IronBarcode'un ikinci veya üçüncü bir paket eklemeden boşlukları nasıl kapattığını inceler.

NetBarcode'u Anlama

NetBarcode,MITlisansı altında yayımlanan, açık kaynaklı bir .NET barkod oluşturma kütüphanesidir. String verilerden doğrusal barkod görüntüleri üretmek için ve bu amacı temiz bir şekilde yerine getirir. Kütüphane, Code128, EAN-13, UPC-A ve diğer on 1D formata yönelik hedeflenmiştir — hepsi basit bir yapıcı ve küçük bir dizi çıktı yöntemi aracılığıyla sunulmuştur. SixLabors.ImageSharp'a olan bağımlılığı, görüntü oluşturma katmanını sağlar ve sürüm 1.8'den itibaren bu bağımlılık, Image<Rgba32> dönüş türü üzerinde GetImage() aracılığıyla genel API'de yansıtılır.

NetBarcode, genel amaçlı bir barkod takımı olmaya çalışmaz. Okuma yeteneği ve 2D format desteği yoktur. Bunlar kasıtlı kapsam kararlarıdır. Kütüphane, yalnızca 1D barkodlara ve başka bir şeye ihtiyaç duymayan uygulamalar için uygundur veMITlisansı, açık kaynak bağlamlarında benimsemeyi basit hale getirir.

Anahtar mimari özellikler:

  • MIT Lisansı: Kütüphane kendisiMITlisanslıdır, ancak SixLabors.ImageSharp bağımlılığı belirli bir gelir eşiğinde uygulanan bölünmüş ticari bir lisansa sahiptir.
  • Yalnızca 1D Tasarım: Type enumu, tamamı lineer olan tam olarak 14 barkod formatını tanımlar; 2D giriş yoktur
  • SixLabors.ImageSharp Bağımlılığı: Görüntü oluşturma, ImageSharp'a devredilir ve v1.8'den itibaren GetImage() metodu Image<Rgba32> döner, ImageSharp'ın türünü doğrudan genel API'de açığa çıkarır
  • Konstruktor Tabanlı API: Barkodlar new Barcode(data, Type.X) ile oluşturulur ve SaveImageFile() veya GetImage() ile kaydedilir veya geri alınır
  • Okuma API'si Yok:NetBarcodesadece oluşturma içindir; there is no method or class for decoding barcode images
  • Toplu İşleme Yok: Her barkod bağımsız bir yapıcı çağrısıdır; no built-in enumeration or batch pipeline

Tür Enum Tasarım Sınırı

Type enumu, NetBarcode'un üretebileceği şeylerin kesin listesidir. İnceleme yapmak, kütüphanenin kapsamını ortaya çıkarır:

//NetBarcodeType enum — complete list as of v1.8
public enum Type
{
    Code128,
    Code128A,
    Code128B,
    Code128C,
    Code39,
    Code39Extended,
    Code93,
    EAN8,
    EAN13,
    UPCA,
    UPCE,
    Codabar,
    ITF,
    MSI
}

// These entries do not exist — attempting to use them produces a CS0117 compile error:
// Type.QRCode      — does not exist
// Type.DataMatrix  — does not exist
// Type.PDF417      — does not exist
// Type.Aztec       — does not exist
//NetBarcodeType enum — complete list as of v1.8
public enum Type
{
    Code128,
    Code128A,
    Code128B,
    Code128C,
    Code39,
    Code39Extended,
    Code93,
    EAN8,
    EAN13,
    UPCA,
    UPCE,
    Codabar,
    ITF,
    MSI
}

// These entries do not exist — attempting to use them produces a CS0117 compile error:
// Type.QRCode      — does not exist
// Type.DataMatrix  — does not exist
// Type.PDF417      — does not exist
// Type.Aztec       — does not exist
Public Enum Type
    Code128
    Code128A
    Code128B
    Code128C
    Code39
    Code39Extended
    Code93
    EAN8
    EAN13
    UPCA
    UPCE
    Codabar
    ITF
    MSI
End Enum

' These entries do not exist — attempting to use them produces a BC30456 compile error:
' Type.QRCode      — does not exist
' Type.DataMatrix  — does not exist
' Type.PDF417      — does not exist
' Type.Aztec       — does not exist
$vbLabelText   $csharpLabel

Bu, bir çekme isteği bekleyen eksik bir özellik değildir. Enum, hepsi 1D olan on dört girdiye sahiptir ve bu kütüphanenin öngörülen kapsamını yansıtır. QR kodları, DataMatrix,PDF417veyaAztekgerektiren herhangi bir uygulama, bu formatları sağlamak için ayrı bir paket almak zorundadır.

IronBarcode'u Anlamak

IronBarcode, tek bir pakette hem üretim hem de okuma işlemini kapsayan ticari bir .NET barkod kütüphanesidir. Iron Software tarafından geliştirilen ve güncel .NET sürümlerini hedefleyen düzenli güncellemelerle sürdürülmektedir. Kütüphanenin statik API yüzeyi, bir barkod formatından diğerine geçişi yalnızca tek bir sabit değiştirerek mümkün kılar — aynı BarcodeWriter.CreateBarcode çağrısı Code128'i, QR kodlarını, DataMatrix'i, PDF417'yi ve Aztec'i de üretir.

IronBarcode, barkod okuma işlemlerini, görüntü dosyalarını ve PDF belgelerini kabul eden ve format tanımlaması ile kod çözme sonuçlarını döndüren BarcodeReader sınıfı üzerinden gerçekleştirir. Bu, oluşturma ve okumanın tek bir bağımlılığı, tek bir lisansı ve izlenecek tek bir sürüm notlarını paylaştığı anlamına gelir.

Anahtar özellikler:

  • Birleştirilmiş Üretim ve Okuma: Hem BarcodeWriter hem de BarcodeReader tek bir NuGet paketinde yer alır
  • 50+ Desteklenen Formatlar: 1D formatları tümNetBarcodeeşdeğerlerini içerir; 2D formatları QR Code, DataMatrix, PDF417,Aztekve diğerlerini içerir.
  • Akıcı Zincir API: BarcodeWriter.CreateBarcode(data, encoding), GeneratedBarcode nesnesi döndürür ve SaveAsPng(), SaveAsJpeg(), ToPngBinaryData() ve akış tabanlı aşırı yükler dahil olmak üzere çıkış yöntemleri bulunur
  • ImageSharp Bağımlılığı Yok: IronBarcode'un görüntü işleme kendi kendine yeterlidir; geçici bir SixLabors bağımlılığı tanıtılmaz.
  • PDF Desteği: Okuma API'si, görüntü formatlarına ek olarak direk .pdf dosyalarını kabul eder
  • Ticari Lisans: Lisans anahtarı gerektirir; trial mode is available and removes watermarks upon purchase

Özellik Karşılaştırması

Özellik NetBarcode IronBarcode
1D barkod oluşturma Evet Evet
2D barkod oluşturma Hayır Evet
Barkod okuma Hayır Evet
PDF desteği Hayır Evet
Toplam sembolojiler 14 50+
ImageSharp bağımlılığı Evet (bölünmüş lisans) Hayır
Lisans modeli MIT(+ ImageSharp koşulları) Ticari

Detayli Özellik Karsilastirmasi

Özellik NetBarcode IronBarcode
Uretim
Code128, EAN-13, UPC-A, Code39 Evet Evet
EAN-8, UPC-E, Code93, Codabar, ITF, MSI Evet Evet
QR Kod Hayır Evet
DataMatrix Hayır Evet
PDF417 Hayır Evet
Aztek Hayır Evet
GS1-128, GS1 DataBar Hayır Evet
Posta formatları (Intelligent Mail, Royal Mail) Hayır Evet
SVG çıkışı Hayır Evet
Okuma
Barkod görüntülerini çözümleme Hayır Evet
PDF belgelerinden okuma Hayır Evet
Çoklu barkod algılama Hayır Evet
Otomatik format algılama Hayır Evet
API Tasarımı
Kurucu tabanlı oluşturma Evet Hayır (statik yöntem)
Akıcı çıktı zinciri Hayır Evet
Toplu işleme desteği El ile Yerleşik
Lisanslama ve Bağımlılıklar
Kütüphane lisansı MIT Ticari
ImageSharp bağımlılığı Evet Hayır
Ticari destek Topluluk Professional

Format Kapsamı

NetBarcode Yaklaşımı

NetBarcode, Type enumu aracılığıyla 14 lineer barkod formatı sağlar. Bu kapsam dahilinde, format seçimi basittir — uygun enum üyesini yapılandırıcıya iletin. Sınır eşit derecede nettir: enum dışında bir format kullanmaya çalışmak derleme zamanında hata verir.

//NetBarcode— formats that compile and produce output
using NetBarcode;

var code128 = new Barcode("12345678901234", Type.Code128);
code128.SaveImageFile("shipping.png");

var ean13 = new Barcode("5901234123457", Type.EAN13);
ean13.SaveImageFile("product.png");

//NetBarcode— formats that produce CS0117 compile errors
// var qr     = new Barcode("data", Type.QRCode);     // error CS0117
// var dm     = new Barcode("data", Type.DataMatrix);  // error CS0117
// var p417   = new Barcode("data", Type.PDF417);      // error CS0117
// var aztec  = new Barcode("data", Type.Aztec);       // error CS0117
//NetBarcode— formats that compile and produce output
using NetBarcode;

var code128 = new Barcode("12345678901234", Type.Code128);
code128.SaveImageFile("shipping.png");

var ean13 = new Barcode("5901234123457", Type.EAN13);
ean13.SaveImageFile("product.png");

//NetBarcode— formats that produce CS0117 compile errors
// var qr     = new Barcode("data", Type.QRCode);     // error CS0117
// var dm     = new Barcode("data", Type.DataMatrix);  // error CS0117
// var p417   = new Barcode("data", Type.PDF417);      // error CS0117
// var aztec  = new Barcode("data", Type.Aztec);       // error CS0117
Imports NetBarcode

Dim code128 As New Barcode("12345678901234", Type.Code128)
code128.SaveImageFile("shipping.png")

Dim ean13 As New Barcode("5901234123457", Type.EAN13)
ean13.SaveImageFile("product.png")

'NetBarcode— formats that produce CS0117 compile errors
' Dim qr As New Barcode("data", Type.QRCode)     ' error CS0117
' Dim dm As New Barcode("data", Type.DataMatrix) ' error CS0117
' Dim p417 As New Barcode("data", Type.PDF417)   ' error CS0117
' Dim aztec As New Barcode("data", Type.Aztec)   ' error CS0117
$vbLabelText   $csharpLabel

Bu sınırın kısıtlama haline geldiği endüstriler arasında tıbbi takip (FDA 2D barkod zorunlulukları altında gerekli olan DataMatrix), havayolu biniş kartları (Aztec), lojistik manifestoları (PDF417) ve mobil pazarlama (QR Code) bulunur. Bu gereksinimlerden her biri, NetBarcode'u bağımsız bir çözüm olarak kullanışsız hale getirir.

IronBarcode Yaklaşımı

IronBarcode, tüm desteklenen formatları aynı BarcodeWriter.CreateBarcode metodu üzerinden açığa çıkarır. 1D formatından 2D formatına geçildiğinde API yüzeyi değişmez — sadece BarcodeEncoding sabiti farklıdır.

using IronBarCode;

// 1D formats — identical API to the 2D examples below
BarcodeWriter.CreateBarcode("12345678901234", BarcodeEncoding.Code128)
    .SaveAsPng("shipping.png");

BarcodeWriter.CreateBarcode("5901234123457", BarcodeEncoding.EAN13)
    .SaveAsPng("product.png");

// 2D formats — same method, different encoding constant
BarcodeWriter.CreateBarcode("https://example.com", BarcodeEncoding.QRCode)
    .SaveAsPng("qr.png");

BarcodeWriter.CreateBarcode("01034531200000111719112510ABCD1234", BarcodeEncoding.DataMatrix)
    .SaveAsPng("pharma-label.png");

BarcodeWriter.CreateBarcode("M1DOE/JOHN MR ABC123 JFKLHR 0012 123Y015A0001 100", BarcodeEncoding.Aztec)
    .SaveAsPng("boarding-pass.png");
using IronBarCode;

// 1D formats — identical API to the 2D examples below
BarcodeWriter.CreateBarcode("12345678901234", BarcodeEncoding.Code128)
    .SaveAsPng("shipping.png");

BarcodeWriter.CreateBarcode("5901234123457", BarcodeEncoding.EAN13)
    .SaveAsPng("product.png");

// 2D formats — same method, different encoding constant
BarcodeWriter.CreateBarcode("https://example.com", BarcodeEncoding.QRCode)
    .SaveAsPng("qr.png");

BarcodeWriter.CreateBarcode("01034531200000111719112510ABCD1234", BarcodeEncoding.DataMatrix)
    .SaveAsPng("pharma-label.png");

BarcodeWriter.CreateBarcode("M1DOE/JOHN MR ABC123 JFKLHR 0012 123Y015A0001 100", BarcodeEncoding.Aztec)
    .SaveAsPng("boarding-pass.png");
Imports IronBarCode

' 1D formats — identical API to the 2D examples below
BarcodeWriter.CreateBarcode("12345678901234", BarcodeEncoding.Code128) _
    .SaveAsPng("shipping.png")

BarcodeWriter.CreateBarcode("5901234123457", BarcodeEncoding.EAN13) _
    .SaveAsPng("product.png")

' 2D formats — same method, different encoding constant
BarcodeWriter.CreateBarcode("https://example.com", BarcodeEncoding.QRCode) _
    .SaveAsPng("qr.png")

BarcodeWriter.CreateBarcode("01034531200000111719112510ABCD1234", BarcodeEncoding.DataMatrix) _
    .SaveAsPng("pharma-label.png")

BarcodeWriter.CreateBarcode("M1DOE/JOHN MR ABC123 JFKLHR 0012 123Y015A0001 100", BarcodeEncoding.Aztec) _
    .SaveAsPng("boarding-pass.png")
$vbLabelText   $csharpLabel

Desteklenen sabitlerin tam listesi, tüm 2D barkod oluşturma formatlarının yanı sıra tam 1D setini içeren desteklenen barkod formatları referansında bulunabilir.

Nesil API Tasarımı

NetBarcode Yaklaşımı

NetBarcode'un oluşturma modeli kurucu tabanlıdır. Bir Barcode nesnesi veri dizesi ve Type enum değeri ile başlatılır. Çıktı ya doğrudan SaveImageFile() ile kaydedilir ya da Image<Rgba32> olarak GetImage() aracılığıyla alınır. Sürüm 1.8'den beri, GetImage() dönüş türü SixLabors.ImageSharp türüdür, bu da dönüş değerini saklayan veya işleyen herhangi bir kodun ImageSharp API'si içinde çalışması gerektiği anlamına gelir.

using NetBarcode;
using SixLabors.ImageSharp;
using SixLabors.ImageSharp.PixelFormats;

// Constructor-based creation
var barcode = new Barcode("12345678901234", Type.Code128);

// Save to file — straightforward
barcode.SaveImageFile("code128.png");

// GetImage() returns Image<Rgba32> — ImageSharp import required
Image<Rgba32> image = barcode.GetImage();

// Further processing requires familiarity with the ImageSharp API
using var stream = new MemoryStream();
image.SaveAsPng(stream);
byte[] bytes = stream.ToArray();
using NetBarcode;
using SixLabors.ImageSharp;
using SixLabors.ImageSharp.PixelFormats;

// Constructor-based creation
var barcode = new Barcode("12345678901234", Type.Code128);

// Save to file — straightforward
barcode.SaveImageFile("code128.png");

// GetImage() returns Image<Rgba32> — ImageSharp import required
Image<Rgba32> image = barcode.GetImage();

// Further processing requires familiarity with the ImageSharp API
using var stream = new MemoryStream();
image.SaveAsPng(stream);
byte[] bytes = stream.ToArray();
Imports NetBarcode
Imports SixLabors.ImageSharp
Imports SixLabors.ImageSharp.PixelFormats
Imports System.IO

' Constructor-based creation
Dim barcode As New Barcode("12345678901234", Type.Code128)

' Save to file — straightforward
barcode.SaveImageFile("code128.png")

' GetImage() returns Image(Of Rgba32) — ImageSharp import required
Dim image As Image(Of Rgba32) = barcode.GetImage()

' Further processing requires familiarity with the ImageSharp API
Using stream As New MemoryStream()
    image.SaveAsPng(stream)
    Dim bytes As Byte() = stream.ToArray()
End Using
$vbLabelText   $csharpLabel

GetImage() metodunun dönüş türü, akış aşağı kodu ImageSharp kütüphanesine bağlar. Sonucu kabul eden veya saklayan herhangi bir metot, bunu Image<Rgba32> olarak beyan etmeli, çağrı koduna geçişli bir bağımlılık tanıtır.

IronBarcode Yaklaşımı

IronBarcode akıcı bir zincir kullanır. BarcodeWriter.CreateBarcode, birçok çıkış yöntemini taşıyan bir GeneratedBarcode nesnesi döndürür. Görüntü işleme dahili olup, çağrı koduna ImageSharp türü açılmaz.

using IronBarCode;

// Fluent generation — save directly to file
BarcodeWriter.CreateBarcode("12345678901234", BarcodeEncoding.Code128)
    .SaveAsPng("code128.png");

// Multiple output options on the same GeneratedBarcode object
var barcode = BarcodeWriter.CreateBarcode("12345678901234", BarcodeEncoding.Code128);
barcode.SaveAsPng("code128.png");
barcode.SaveAsJpeg("code128.jpg");
byte[] bytes = barcode.ToPngBinaryData();

using var stream = new MemoryStream();
barcode.SaveAsPng(stream);
using IronBarCode;

// Fluent generation — save directly to file
BarcodeWriter.CreateBarcode("12345678901234", BarcodeEncoding.Code128)
    .SaveAsPng("code128.png");

// Multiple output options on the same GeneratedBarcode object
var barcode = BarcodeWriter.CreateBarcode("12345678901234", BarcodeEncoding.Code128);
barcode.SaveAsPng("code128.png");
barcode.SaveAsJpeg("code128.jpg");
byte[] bytes = barcode.ToPngBinaryData();

using var stream = new MemoryStream();
barcode.SaveAsPng(stream);
Imports IronBarCode

' Fluent generation — save directly to file
BarcodeWriter.CreateBarcode("12345678901234", BarcodeEncoding.Code128) _
    .SaveAsPng("code128.png")

' Multiple output options on the same GeneratedBarcode object
Dim barcode = BarcodeWriter.CreateBarcode("12345678901234", BarcodeEncoding.Code128)
barcode.SaveAsPng("code128.png")
barcode.SaveAsJpeg("code128.jpg")
Dim bytes As Byte() = barcode.ToPngBinaryData()

Using stream As New MemoryStream()
    barcode.SaveAsPng(stream)
End Using
$vbLabelText   $csharpLabel

1D barkod oluşturma için genişlik, yükseklik ve etiket yapılandırması dahil ayrıntılı seçeneklerIronBarcodedokümantasyonunda kapsanmıştır.

Okuma Yeteneği

NetBarcode Yaklaşımı

NetBarcode'un bir okuma API'si yoktur. Barkod görüntüsünü verisine geri çözecek bir yöntem, sınıf veya yapılandırma yoktur. Bu, bir sürüm beklenirken eksiklik değil, kasıtlı bir kapsam sınırıdır.NetBarcodeile barkod üreten ve daha sonra bunları okuması gereken bir proje — basılı bir etiketi doğrulamak, bir iade gönderisini taramak veya bir tedarikçi faturasından değerler çıkarmak için — bu amaç için ayrı bir kütüphane eklemelidir.

//NetBarcode— no reading method exists
// The following does not compile because the method does not exist:
// var result = barcode.Read("image.png");  // method does not exist

// The typical workaround requires ZXing.Net as a third-party dependency
//NetBarcode— no reading method exists
// The following does not compile because the method does not exist:
// var result = barcode.Read("image.png");  // method does not exist

// The typical workaround requires ZXing.Net as a third-party dependency
'NetBarcode— no reading method exists
' The following does not compile because the method does not exist:
' Dim result = barcode.Read("image.png")  ' method does not exist

' The typical workaround requires ZXing.Net as a third-party dependency
$vbLabelText   $csharpLabel

NetBarcode ile birlikte okuma için eklenen en yaygın kütüphane ZXing.Net kütüphanesidir ve QR kodları için zaten eklenmiş olan herhangi bir 2D kütüphane ile birlikte NetBarcode'un yanında üçüncü bir API yüzeyi ve üçüncü bir paket getirmiş olur.

IronBarcode Yaklaşımı

IronBarcode, BarcodeReader ile aynı pakette BarcodeWriter içerir. Okuma API'si görüntü dosyalarını ve PDF belgelerini kabul eder ve PDF'den okuma durumunda her biri barkod değeri, format türü ve sayfa numarasını içeren kodlanmış sonuçlar koleksiyonu döndürür.

using IronBarCode;

// Read barcodes from an image file
var imageResults = BarcodeReader.Read("shipping-label.png");
foreach (var r in imageResults)
{
    Console.WriteLine($"{r.BarcodeType}: {r.Value}");
}

// Read barcodes from a PDF document — no additional library required
var pdfResults = BarcodeReader.Read("invoice.pdf");
foreach (var r in pdfResults)
{
    Console.WriteLine($"Page {r.PageNumber}: {r.Value}");
}
using IronBarCode;

// Read barcodes from an image file
var imageResults = BarcodeReader.Read("shipping-label.png");
foreach (var r in imageResults)
{
    Console.WriteLine($"{r.BarcodeType}: {r.Value}");
}

// Read barcodes from a PDF document — no additional library required
var pdfResults = BarcodeReader.Read("invoice.pdf");
foreach (var r in pdfResults)
{
    Console.WriteLine($"Page {r.PageNumber}: {r.Value}");
}
Imports IronBarCode

' Read barcodes from an image file
Dim imageResults = BarcodeReader.Read("shipping-label.png")
For Each r In imageResults
    Console.WriteLine($"{r.BarcodeType}: {r.Value}")
Next

' Read barcodes from a PDF document — no additional library required
Dim pdfResults = BarcodeReader.Read("invoice.pdf")
For Each r In pdfResults
    Console.WriteLine($"Page {r.PageNumber}: {r.Value}")
Next
$vbLabelText   $csharpLabel

görüntülerden barkod okuma kılavuzu, okuma API'sinde bulunan hız ayarı, çoklu barkod algılama ve görüntü düzeltme seçeneklerini kapsar.

Bağımlılık ve Lisanslama Hususları

NetBarcode ve ImageSharp

NetBarcodeMITlisanslıdır. Bağlı olduğu SixLabors.ImageSharp kütüphanesi farklı bir model kullanır: açık kaynak projeler ve belirlenmiş bir eşik altındaki yıllık brüt gelire sahip şirketler için ücretsizdir, ancak bu eşik üzerinde ticari lisans gereklidir. Bu ayrım, ImageSharp bir projenin .csproj içinde açıkça listelenip listelenmemiş olmasına veyaNetBarcodearacılığıyla geçişli olarak gelmesine bakılmaksızın uygulanır.


<PackageReference Include="NetBarcode" Version="1.8.2" />

<PackageReference Include="NetBarcode" Version="1.8.2" />
XML

NetBarcode'un hedeflediği birincil kullanım alanı olan ölçekli barkod işleme yapan bir perakende veya lojistik şirketi için yıllık gelir, genellikle ImageSharp ticari lisansının uygulandığı eşik üstündedir. Bir uyum denetimi, paketin ağacında gömülü bu yükümlülüğü ortaya çıkarabilir.

V1.8 sürümü, ImageSharp bağımlılığının ek bir sonucunu tanıttı: GetImage() dönüş türü, dahili temsilden SixLabors.ImageSharp.Image<Rgba32>'a değişti. Özel bir yazım olmadan GetImage() çağırmış olan mevcut kod, derleme zamanında bozuldu ve yeni using direktifleri SixLabors.ImageSharp ve SixLabors.ImageSharp.PixelFormats için gerekli hale geldi. Gelecek sürümlerde ImageSharp'ın kendi API'si evrim geçirdiğinde, NetBarcode'un genel API yüzeyi sırasıyla etkilenir.

IronBarcode

IronBarcode'un SixLabors.ImageSharp bağımlılığı yoktur. Lisanslama terimleri doğrudan IronBarcode lisanslama sayfasında belirtilmiştir ve hiçbir eşik ayrımı ya da dolaylı ticari yükümlülük içermez. Değerlendirme için bir deneme anahtarı mevcuttur; satın alınan lisanslar, oluşturulan çıktılardan deneme filigranını kaldırır.

API Eslestirme Referansi

NetBarcode IronBarcode Notlar
new Barcode(data, Type.Code128) BarcodeWriter.CreateBarcode(data, BarcodeEncoding.Code128) Yapıcı → statik yöntem
new Barcode(data, Type.EAN13) BarcodeWriter.CreateBarcode(data, BarcodeEncoding.EAN13) Doğrudan eşleme
new Barcode(data, Type.UPCA) BarcodeWriter.CreateBarcode(data, BarcodeEncoding.UPCA) Doğrudan eşleme
new Barcode(data, Type.Code39) BarcodeWriter.CreateBarcode(data, BarcodeEncoding.Code39) Doğrudan eşleme
new Barcode(data, Type.EAN8) BarcodeWriter.CreateBarcode(data, BarcodeEncoding.EAN8) Doğrudan eşleme
new Barcode(data, Type.UPCE) BarcodeWriter.CreateBarcode(data, BarcodeEncoding.UPCE) Doğrudan eşleme
new Barcode(data, Type.ITF) BarcodeWriter.CreateBarcode(data, BarcodeEncoding.ITF) Doğrudan eşleme
new Barcode(data, Type.Codabar) BarcodeWriter.CreateBarcode(data, BarcodeEncoding.Codabar) Doğrudan eşleme
barcode.SaveImageFile("x.png") .SaveAsPng("x.png") Yöntem adı değiştirme
barcode.SaveImageFile("x.jpg") .SaveAsJpeg("x.jpg") Yöntem adı değiştirme
barcode.GetImage()Image<Rgba32> .ToPngBinaryData() veya .SaveAsPng() ImageSharp türü açığa çıkarılmıyor
No Type.QRCode BarcodeEncoding.QRCode Yeni yetenek
No Type.DataMatrix BarcodeEncoding.DataMatrix Yeni yetenek
No Type.PDF417 BarcodeEncoding.PDF417 Yeni yetenek
No Type.Aztec BarcodeEncoding.Aztec Yeni yetenek
Okuma API'si yok BarcodeReader.Read(path) Yeni yetenek
using NetBarcode; using IronBarCode; Ad alanı değiştirme
using SixLabors.ImageSharp; Kaldır Artık gerekli değil

desteklenen barkod formatları dokümantasyonunda tam format referansı mevcuttur.

Takımlar NetBarcode'dan IronBarcode'a Geçmeyi Düşündüğünde

QR Kodu ve 2D Format Gereksinimleri

NetBarcode'a bir alternatif değerlendirilmesindeki en sık tetikleyici yeni bir QR kod gereksinimidir. Perakende etiketleri veya sevkiyat manifastaları için 1D barkod oluşturma ile başlayan uygulamalar genellikle bir QR kod gereksinimi takip eder — temassız bağlantılar, mobil uygulama derin bağlantıları, pazarlama kampanyaları. Type enumu QR girdisine sahip olmadığından, bu gereksinimNetBarcodeiçinde karşılanamaz. Bu açığı kapatmak için ayrı bir QR kütüphanesi ekleyen ekipler, daha sonra bir ilaç entegrasyonu içinDataMatrixgereklidir veya bir lojistik taşıyıcı iade gönderilerindePDF417talep ettiğinde, ikinci bir değerlendirme süreci ile karşılaşırlar.

Barkod Okuma Gereksinimi Olmak

Bazı projeler saf oluşturma ile başlar ve daha sonra bir doğrulama veya belge işleme gereksinimi ekler: bir basılı barkodun kaynak verileriyle eşleştiğini doğrulamak, gelen tedarikçi faturalarından barkod değerlerini çıkarmak veya iade gönderi etiketlerini taramak.NetBarcodebu konuda bir yol sağlamaz. ZXing.Net veya benzeri bir okuma kütüphanesi eklemek, zatenNetBarcodeve bir QR kütüphanesi içeren aynı kod tabanında üçüncü bir API öğrenme ve bakım yükümlülüğü ekler. Gelecekteki bir aşamada okuma gereksinimlerini öngören projeler, genellikle her iki konuyu baştan itibaren ele alacak bir kütüphane seçmenin daha verimli olduğunu bulur.

ImageSharp Ticari Lisans Denetimi

Üçüncü parti bağımlılıkların yasal ve uyum incelemeleri, bazenNetBarcodepaket ağacında yerleşik SixLabors.ImageSharp ticari lisans koşulunu ortaya çıkarır. Yıllık brüt geliri eşiği aşan şirketler için, ImageSharp seçilmiş olsun ya daNetBarcodearacılığıyla dolaylı olarak gelmiş olsun, yükümlülük geçerlidir. Takımlar bu durumu bir denetim sırasında keşfettiğinde - kabulden önce değil - planlanmış bir geçiş yerine geriye dönük bir düzeltmeyle karşılaşırlar. Bir projeye başlamadan önce bağımlılık lisansını değerlendirmek, daha temiz bir yoldur.

Çoklu Kütüphane Karmaşıklığını Azaltmak

1D üretim için NetBarcode, 2D çıktı için QR'a özel bir kütüphane ve okuma için ZXing.Net biriktirmiş olan takımlar, üç ayrı paket arasında sürüm uyumluluğunu korumak zorunda kalırlar. Her yükseltme döngüsü, üç kütüphanenin paylaşılan ImageSharp sürümü üzerinde aynı fikirde olup olmadığını kontrol etmeyi gerektirir. Projeye katılan her yeni geliştirici, kavramsal olarak bir konu olan üç farklı API ile karşılaşır. Tek bir barkod kütüphanesine konsolidasyon, alışma sürecini basitleştirir, sürüm çatışması yüzeyini azaltır ve bir sürüm döngüsüne bakım yoğunlaşmasını sağlar.

Genel Geçiş Dusunceleri

Paket Değişimi ve Geçiş Bağımlılığı Temizliği

NetBarcode'u dotnet remove package NetBarcode ile kaldırmak ilk adımdır. Projedeki diğer paketler de geçişli olarak bunu içerse, SixLabors.ImageSharp paketi bağımlılık ağacında tekrar görünebilir. Kaldırmadan sonra, ImageSharp'ın hala mevcut olup olmadığını ve ticari lisans koşulunun hala geçerli olup olmadığını doğrulamak için dotnet list package --include-transitive ile geri yüklenen paket listesini inceleyin.

GetImage() Dönüş Türü Değiştirme

GetImage() sonucunu Image<Rgba32> olarak saklayan her kod güncellenmelidir. ImageSharp türünün IronBarcode'da doğrudan bir karşılığı yoktur; değişiklik, görüntünün ardından nasıl kullanıldığına bağlıdır. Görseli bir akışa kaydeden kod, .SaveAsPng(stream) yerine doğrudan GeneratedBarcode nesnesi üzerinde kullanılabilir. Ham baytları alan kod, .ToPngBinaryData() kullanabilir. Dönen görüntü üzerinde daha fazla ImageSharp manipulasyonu yapan kodlar, bu işlemleri ayrı ayrı değerlendirmek zorunda kalacaktır.

Namespace Güncelleme

using NetBarcode;, using SixLabors.ImageSharp;, using SixLabors.ImageSharp.PixelFormats; veya using SixLabors.Fonts;'yi içeren dosyalar, bu direktiflerin using IronBarCode; ile değiştirilmesi gereklidir. Bu using ifadelerini proje çapında bir arama, derleme denenmeden önce dikkat edilmesi gereken her dosyayı belirler.

EkIronBarcodeIlkeler

Bu karşılaştırmada kapsanan çekirdek üretim ve okuma özelliklerinin ötesinde,IronBarcodeşunları sağlar:

  • SVG Barkod Çıkışı: Baskı iş akışları ve ölçeklenebilir etiket tasarımları için uygun vektör formatında barkod görüntüleri üretin
  • Barkod Stili: Üretilmiş barkodlar üzerinde çubuk rengi, arka plan rengi, açıklama fontu, kenar boşluğu ve döndürme yapılandırın
  • GS1-128 ve GS1 DataBar: Perakende ve tedarik zinciri uyumluluğu için uygulama tanımlayıcı yapısına sahip barkodlar
  • Posta Formatları: Postalama uygulamaları için Akıllı Posta, Kraliyet Postası ve diğer posta sistemleri
  • PDF Barkod Çıkışı: Ayrı bir PDF kütüphanesi olmadan çok sayfalı PDF belgelerinden doğrudan barkodları okuyun
  • Toplu Üretim: Tek bir boru hattı içinde etkin şekilde barkod verisi toplulukları işleyin
  • MAUI ve Mobil Hedefler: IronBarcode, çapraz platform mobil ve masaüstü barkod iş akışları için .NET MAUI uygulamalarını desteklar

.NET Uyumlulugu ve Gelecek Hazirikligi

IronBarcode, .NET 8, .NET 9'u hedefler ve modern .NET'ye henüz geçmemiş projeler için .NET Standard uyumluluğunu sürdürür. .NET 10'un 2026'nın sonlarına doğru beklenmesiyle, Iron Software'ın düzenli sürüm kadansı, her büyük .NET sürümünü izleyen uyumluluk güncellemeleri sağlar.NetBarcode.NET Standard 2.0'ı hedefler ve bu uyumluluk katmanı aracılığıyla mevcut çalışma zamanlarında işlevseldir, ancak kütüphanenin güncelleme sıklığı ve 2D format seti tasarım kapsamı tarafından sabitlenmiştir.

Sonuç

NetBarcode ve IronBarcode, barkod kütüphanesi kapsamının spektrumunda farklı konumları temsil eder. NetBarcode, 1D barkod oluşturmanın odaklanmış, temiz bir uygulamasıdır: on dört format, basit bir yapıcı API ve ImageSharp gelir eşiği altında açık kaynak projeler için benimsemeyi sorunsuz kılanMITlisansı. IronBarcode,50+formatta üretim, görüntülerden ve PDF'lerden okuma ve 1D ve 2D formatları aynı şekilde ele alan akıcı bir API kapsayan daha geniş bir araç takımıdır.

Gereksinimlerin gerçekten lineer barkod üretimi ile sınırlı olduğu projeler için — geleneksel perakende tarayıcıları için EAN-13 ve UPC-A kodları üreten bir satış noktası sistemi veya sabit ve kısa ömürlü bir dahili araç — NetBarcode, ticari bir bağımlılık getirmeden gerekeni sağlar. Kütüphane kapsamı içinde iyi bir şekilde inşa edilmiştir ve bu kapsam, Type enumuna ilk bakıştan itibaren açıktır.

Format kapsamının genişlemesi gerekecek projeler, okuma sonunda gerekecek projeler veya ImageSharp geçiş bağımlılığının uyum incelemesinin bir sorun olduğu projeler için IronBarcode, tüm üç konuyu tek bir paket üzerinden ele alır. 1D üretim içinNetBarcodeile başlayan ve daha sonra 2D için QRCoder ekleyen ve okuma için ZXing.Net ilave eden ekipler, üç ayrı kütüphane bakım yükümlülüğü toplar;IronBarcodebunları tek bir araya toplar.

Seçim, projedeki gereksinimlerden doğrudan çıkarılır. On dört 1D format ve okuma yeteneği olmayan bir eşleşme belirlemesinin tam olarak karşılığı ise, NetBarcode, teknik olarak sağlam bir seçimdir. Eğer belirleme herhangi bir 2D format, herhangi bir okuma iş akışı veya ImageSharp lisans koşulundan kaynaklanan herhangi bir kaygıyı içeriyorsa,IronBarcodedaha kapsamlı bir cevaptır.

Sıkça Sorulan Sorular

NetBarcode nedir?

NetBarcode, .NET projeleri için C# uygulamalarında barkod oluşturma ve okuma için bir .NET barkod kütüphanesidir. Geliştiricilerin .NET projeleri için bir barkod çözümü seçerken değerlendirdiği birkaç alternatiften biridir.

NetBarcode ve IronBarcode arasındaki ana farklar nelerdir?

IronBarcode, örnek yönetimi gerektirmeyen statik, durumsuz bir API kullanır, oysa NetBarcode genellikle kullanılmadan önce örnek oluşturma ve yapılandırma gerektirir. IronBarcode ayrıca yerel PDF desteği, otomatik format algılama ve tüm ortamlar arasında tek anahtarlı lisanslama sağlar.

IronBarcode lisanslamak NetBarcode'dan daha mı kolay?

IronBarcode, hem geliştirme hem de üretim dağıtımlarını kapsayan tek bir lisans anahtarı kullanır. Bu durum, CI/CD hatları ve Docker yapılandırmalarını, SDK anahtarlarını çalıştırma anahtarlarından ayıran lisanslama sistemleriyle karşılaştırıldığında basitleştirir.

IronBarcode, NetBarcode'un desteklediği tüm barkod formatlarını destekliyor mu?

IronBarcode, QR Code, Code 128, Code 39, DataMatrix, PDF417, Aztec, EAN-13, UPC-A, GS1 ve daha fazlası dahil 30'dan fazla barkod sembolojisini destekler. Format otomatik algılama, açık format sayımı gerektirmez.

IronBarcode yerel PDF barkod okuma desteği veriyor mu?

Evet. IronBarcode, BarcodeReader.Read('document.pdf') kullanarak PDF dosyalarından barkodları doğrudan okur, ayrı bir PDF işleme kütüphanesi gerektirmez. Sayfa başına sonuçlar, sayfa numarası, barkod formatı, değeri ve güven skoru içerir.

IronBarcode, toplu işlemeyle NetBarcode'a kıyasla nasıl başa çıkıyor?

IronBarcode'un statik yöntemleri durumsuz ve doğal olarak iş parçacığı güvenlidir, Parallel.ForEach'in doğrudan kullanımını sağlar ve iş parçacığı başı örnek yönetimi gerektirmez. Hiçbir fiyatlandırma seviyesi için bant genişliği sınırı yoktur.

IronBarcode hangi .NET sürümlerini destekliyor?

IronBarcode, .NET Framework 4.6.2+, .NET Core 3.1 ve .NET 5, 6, 7, 8 ve 9'u tek bir NuGet paketi içinde destekler. Platform hedefleri arasında Windows x64/x86, Linux x64 ve macOS x64/ARM bulunuyor.

.NET projesine IronBarcode'u nasıl kurarım?

NuGet aracılığıyla IronBarcode'u kurun: 'Install-Package IronBarCode' komutunu Paket Yöneticisi Konsolunda veya CLI'de 'dotnet add package IronBarCode' komutunu çalıştırın. Ek bir SDK yükleyici veya çalışma zamanı dosyaları gerekli değildir.

IronBarcode'u satın almadan önce değerlendirebilir miyim, NetBarcode'tan farklı olarak?

Evet. IronBarcode'ın deneme modu, yalnızca oluşturulan çıktı görüntülerine bir filigran ekleyerek tam çözümlenmiş barkod değerlerini verir. Satın almadan önce kendi belgelerinizde okuma doğruluğunu test edebilirsiniz.

NetBarcode ve IronBarcode arasındaki fiyat farkı nedir?

IronBarcode, geliştirme ve üretimi kapsayan tek bir geliştirici lisansı için $749'dan başlar. Fiyatlandırma detayları ve hacim seçenekleri, IronBarcode lisanslama sayfasında mevcuttur. Ayrı bir çalışma zamanı lisansı gereksinimi yoktur.

NetBarcode'dan IronBarcode'a geçiş yapmak basit mi?

NetBarcode'dan IronBarcode'a geçiş, öncelikle örnek tabanlı API çağrılarını IronBarcode'un statik yöntemleriyle değiştirmek, lisanslama belgelerini kaldırmak ve sonuç özellik adlarını güncellemeyi içerir. Çoğu geçiş, kodu azaltmakla, eklemekten daha fazla ilgilidir.

IronBarcode, logolu QR kodları üretiyor mu?

Evet. QRCodeWriter.CreateQrCode().AddBrandLogo('logo.png') kullanarak bir QR koduna yerel logolu bir marka resmi ekleyin, yapılandırılabilir hata düzeltme ile. ChangeBarCodeColor() üzerinden renkli QR kodları da desteklenir.

Jordi Bardia
Yazılım Mühendisi
Jordi Python, C# ve C++ konularında en yetkin, Iron Software'deki yeteneklerini kullanmadığı zamanlarda; oyun programlıyor. Ürün testi, ürün geliştirme ve araştırma sorumluluklarını paylaşan Jordi, sürekli ürün gelişimine büyük değer katıyor. Çeşitli deneyimleri onu ...
Daha Fazlasını Oku

Iron Destek Ekibi

Haftanın 5 günü, 24 saat çevrimiçiyiz.
Sohbet
E-posta
Beni Ara