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 vs IronBarcode: Yalnızca 1D Oluşturma Karşısında Tüm Bir Barkod Araç Setini Karşılaştırma

NetBarcode'un Type enumunda QR Kod girdisi yok. Üçüncü ayda bir nakliye etiketi projesi QR kodu gereksinimi eklediğinde, geliştiriciler ikinci kütüphane için ulaşır. Bu ikinci kütüphane kendi API yüzeyini, kendi sürüm takvimini ve sürümü, NetBarcode'un zaten ihtiyaç duyduğu sürümle hizalamak için sapabilecek SixLabors.ImageSharp bağımlılığını getirir. Bu karşılaştırma, NetBarcode'un ne olduğunu, nereye iyi uyduğunu ve IronBarcode'nin ekstra ikinci veya üçüncü bir pakete ihtiyacının olmadan bu boşlukları nasıl kapattığını inceler.

NetBarcode'u Anlama

NetBarcode,MITlisansı altında yayınlanan açık kaynak bir .NET barkod üretim kütüphanesidir. String verilerden lineer barkod görüntüleri üretmek için oluşturulmuştur ve bu amacı temiz bir şekilde yerine getirmektedir. Kütüphane, Code128, EAN-13, Code39 ve diğer birkaç 1D formatı hedefler — tümü basit bir yapıcı ve küçük bir çıktı yöntemleri kümesi aracılığıyla sunulur. SixLabors.ImageSharp 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üş tipi aracılığıyla GetImage() üzerinde genel API'de yansıtılır.

NetBarcode, genel amaçlı bir barkod araç kiti olmayı denemez. Okuma yeteneği yoktur ve 2D format desteği yoktur. Bunlar bilinçli kapsam kararlarıdır. Kütüphane sadece 1D barkodlara ihtiyaç duyan ve başka bir şeye ihtiyaç duymayan uygulamalar için çok uygundur veMITlisansı açık kaynak bağlamlarında benimsemeyi kolaylaştırır.

Ana mimari özellikler:

  • MIT Lisansı: Kütüphanenin kendisiMITlisanslıdır, ancak SixLabors.ImageSharp bağımlılığı, gelir eşiğinde bir gelirde ticari bir lisansın uygulandığı bir bölünmüş ticari lisans taşır.
  • Yalnızca 1D Tasarım: Type enumu, 8 lineer semboloji ailesi arasında 11 değer tanımlar; 2D girişleri veya UPC-A, UPC-E, ITF veya MSI girişleri de bulunmamaktadır
  • SixLabors.ImageSharp Bağımlılığı: Görüntü oluşturma, ImageSharp'a devredilmiştir ve v1.8'den itibaren GetImage() yöntemi Image<Rgba32> döndürür, ImageSharp'ın tipini doğrudan genel API'de açığa çıkarır
  • Yapıcı Tabanlı API: Barkodlar new Barcode(data, Type.X) ile oluşturulur ve SaveImageFile() veya GetImage() ile kaydedilir veya alınır
  • Okuma API'si Yok:NetBarcodeyalnızca jenerasyon içindir; Barkod görüntülerini çözmek için herhangi bir yöntem veya sınıf bulunmamaktadır.
  • Toplu İşlem Yok: Her barkod bağımsız bir kurucu ç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 resmi listedir. İncelendiğinde kütüphanenin kapsamını ortaya çıkarır:

//NetBarcodeType enum — complete list as of v1.8
public enum Type
{
    Codabar,
    Code11,
    Code128,
    Code128A,
    Code128B,
    Code128C,
    Code39,
    Code39E,
    Code93,
    EAN13,
    EAN8
}

// 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
// Type.UPCA        — does not exist
// Type.UPCE        — does not exist
// Type.ITF         — does not exist
// Type.MSI         — does not exist
//NetBarcodeType enum — complete list as of v1.8
public enum Type
{
    Codabar,
    Code11,
    Code128,
    Code128A,
    Code128B,
    Code128C,
    Code39,
    Code39E,
    Code93,
    EAN13,
    EAN8
}

// 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
// Type.UPCA        — does not exist
// Type.UPCE        — does not exist
// Type.ITF         — does not exist
// Type.MSI         — does not exist
Public Enum Type
    Codabar
    Code11
    Code128
    Code128A
    Code128B
    Code128C
    Code39
    Code39E
    Code93
    EAN13
    EAN8
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
' Type.UPCA        — does not exist
' Type.UPCE        — does not exist
' Type.ITF         — does not exist
' Type.MSI         — does not exist
$vbLabelText   $csharpLabel

Enum, sekiz lineer simgoloji ailesi arasında on bir girdiye sahiptir ve bu, kütüphanenin hedeflediği kapsamı yansıtır. QR kodları, DataMatrix, PDF417, Aztek, UPC-A, UPC-E, ITF veya MSI gerektiren herhangi bir uygulama için bu formatları sağlayacak ayrı bir paket edinilmelidir.

IronBarcode Anlama

IronBarcode bir ticari .NET barkod kütüphanesidir ve hem oluşturma hem de okuma tek bir pakette kapsanır. Iron Software tarafından geliştirilmekte ve düzenli güncellemelerle mevcut .NET sürümlerini hedeflemektedir. Kütüphanenin statik API yüzeyi, bir barkod formatından diğerine geçerken sadece tek bir sabiti değiştirerek çalışacak şekilde tasarlanmıştır — Code128'i üreten aynı BarcodeWriter.CreateBarcode çağrısı aynı zamanda QR kodları, DataMatrix,PDF417ve Aztek'i üretir.

IronBarcode, barkod okuma işlemini BarcodeReader sınıfı aracılığıyla gerçekleştirir, bu sınıf, görüntü dosyalarını ve PDF belgelerini kabul eder ve format tanımla dekode edilmiş sonuçları döndürür. Bu, üretim ve okumanın paylaştığı tek bağımlılık, tek lisans ve izlemeye değer tek bir sürüm notu olduğu anlamına gelir.

Anahtar özellikler:

  • Birleşik Üretim ve Okuma: Hem BarcodeWriter hem de BarcodeReader tek bir NuGet paketine dahil edilmiştir
  • 50+ Desteklenen Format: 1D format, tümNetBarcodeeşdeğerlerini içerir; 2D formatlar arasında QR Code, DataMatrix, PDF417,Aztekve diğerleri bulunur.
  • Akıcı Zincir API: BarcodeWriter.CreateBarcode(data, encoding), GeneratedBarcode nesnesini döndürür ve çıkış yöntemleri arasında SaveAsPng(), SaveAsJpeg(), ToPngBinaryData() ve akış tabanlı aşırı yüklemeler içerir
  • ImageSharp Bağımlılığı Yok: IronBarcode'un görüntü işleme kendi içinde doğası gereği bağımsızdır; Hiçbir SixLabors geçişli bağımlılık tanıtılmaz.
  • PDF Desteği: Okuma API'si, görüntü formatlarının yanı sıra doğrudan .pdf dosyalarını kabul eder
  • Ticari Lisans: Bir lisans anahtarı gereklidir; deneme modu mevcuttur ve satın alma işlemi tamamlandığında filigranları kaldırır

Ö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 11 enum değeri / 8 aile 50+
ImageSharp bağımlılığı Evet (bölünmüş lisans) Hayır
Lisans modeli MIT (+ ImageSharp koşulları) Ticari

Ayrıntılı Özellik Karşılaştırması

Özellik NetBarcode IronBarcode
Üretim
Code128 (artı 128A/B/C), Code39, Code39 Genişletilmiş, Code93, Code11 Evet Evet
EAN-13, EAN-8, Codabar Evet Evet
UPC-A, UPC-E, ITF, MSI Hayır Evet
QR Kodu Hayır Evet
DataMatrix Hayır Evet
PDF417 Hayır Evet
Aztek Hayır Evet
GS1-128, GS1 DataBar Hayır Evet
Posta formatları (Akıllı Posta, Kraliyet Posta) Hayır Evet
SVG çıktısı Hayır Evet
Okuma
Barkod görüntülerini çöz Hayır Evet
PDF belgelerden oku 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şlem desteği Yönerge Yerleşik
Lisanslama ve Bağımlılıklar
Kütüphane lisansı MIT Ticari
ImageSharp bağımlılığı Evet Hayır
Ticari destek Topluluk Profesyonel

Format Kapsamı

NetBarcode Yaklaşımı

NetBarcode, Type enumu aracılığıyla 8 semboloji ailesi arasında 11 lineer barkod enum değeri sağlar. Bu kapsam içinde format seçimi basittir — uygun enum üyesini kurucuya iletin. Sınır da aynı şekilde nettir: enum dışındaki bir formatın kullanılmaya çalışılması derleme hatasına neden olur.

//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
// var upca   = new Barcode("data", Type.UPCA);        // error CS0117
// var itf    = new Barcode("data", Type.ITF);         // 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
// var upca   = new Barcode("data", Type.UPCA);        // error CS0117
// var itf    = new Barcode("data", Type.ITF);         // 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
' Dim upca As New Barcode("data", Type.UPCA)     ' error CS0117
' Dim itf As New Barcode("data", Type.ITF)       ' error CS0117
$vbLabelText   $csharpLabel

Bu sınırın bir kısıt haline geldiği endüstriler arasında farmasötik izleme (FDA 2D barkod zorunlulukları gereği DataMatrix), havayolu biniş kartları (Aztec), lojistik manifestolar (PDF417) ve mobil pazarlama (QR Kod) bulunmaktadır. Bu gerekliliklerin her biri, NetBarcode'u bağımsız bir çözüm olarak devre dışı bırakır.

IronBarcode Yaklaşımı

IronBarcode, tüm desteklenen formatları aynı BarcodeWriter.CreateBarcode yöntemi aracılığıyla açığa çıkarır. 1D formatından 2D formatına geçerken API yüzeyi değişmez — sadece BarcodeEncoding sabiti farklılık gösterir.

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 üretim formatlarıyla birlikte tam 1D setini kapsayan desteklenen barkod formatları referansında mevcuttur.

Oluşturma API Tasarımı

NetBarcode Yaklaşımı

NetBarcode'un üretim modeli kurucu-tabandadır. Barcode nesnesi, veri dizesi ve Type enum değeriyle örneklenir. Çıktı ya doğrudan SaveImageFile() ile kaydedilir ya da GetImage() yoluyla Image<Rgba32> olarak alınır. Sürüm 1.8'den itibaren, GetImage() dönüş tipi SixLabors.ImageSharp tipi haline gelmiştir, bu da demektir ki dönüş değerini depolayan veya işleyen herhangi bir kod, ImageSharp API'sini içe aktarıp çalışmalıdır.

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üş tipi, alt akış kodunu ImageSharp kütüphanesine bağlar. Sonucu kabul eden veya depolayan herhangi bir yöntem, bunu Image<Rgba32> olarak beyan etmeli, çağırma koduna geçişli bir bağımlılık eklemelidir.

IronBarcode Yaklaşımı

IronBarcode bir akış zinciri kullanır. BarcodeWriter.CreateBarcode, birden fazla çıktı yöntemi taşıyan bir GeneratedBarcode nesnesi döndürür. Görüntü işleme içseldir — çağrı koduna herhangi bir ImageSharp türü açık edilmez.

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

Genişlik, yükseklik ve etiket yapılandırmasını da kapsayan 1D barkod üretimi için detaylı seçenekler IronBarcode belgelerinde kapsanmıştır.

Okuma Yeteneği

NetBarcode Yaklaşımı

NetBarcode'un bir okuma API'si yoktur. Geri yeniden veri stringine dekodlanan bir barkod görüntüsünü çözen bir metod, sınıf veya yapılandırma mevcut değildir. Bu, bir yayın bekleyen bir eksiklik değil, bilinçli bir kapsam sınırıdır.Net/Barcodeile barkod üreten ve sonrasında bunları okumaya ihtiyaç duyan — bir basılı etiketi doğrulamak, iade gönderimi taramak veya bir tedarikçi faturasından değerleri almak için — bir proje, bu amaçla ayrı bir kütüphane tanıtmak zorundadır.

//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

ZXing.Net kütüphanesi,NetBarcodeile birlikte okuma için en yaygın ekleme olup,NetBarcodeve QR kodları için zaten eklenmiş olan herhangi bir 2D kütüphane ile birlikte, sürüm yönetimini sağlamak için üçüncü bir API yüzeyini ve üçüncü bir paketi getirir.

IronBarcode Yaklaşımı

IronBarcode, BarcodeWriter ile aynı pakette BarcodeReader içerir. Okuma API görsel dosyalara ve PDF belgelerine kabul eder ve bir PDF'den okunduğunda barkod değeri, format türü ve sayfa numarası her biriyle birlikte çözülmüş sonuçların koleksiyonunu 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.Format}: {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.Format}: {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.Format}: {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

resimlerden barkod okuyun kılavuzu, okuma API'de mevcut hız ayarlama, çoklu barkod algılama ve görüntü düzeltme seçeneklerini kapsar.

Bağımlılık ve Lisanslama Düşünceleri

NetBarcode ve ImageSharp

NetBarcodeMITlisansına sahiptir. Bağlı olduğu SixLabors.ImageSharp kütüphanesi, farklı bir modeli kullanır: açık kaynak projeler ve belirli bir eşiğin altında yıllık brüt gelire sahip şirketler için ücretsiz, ancak bu eşik üzerinde ticari bir lisans gereklidir. Bu ayrım, ImageSharp'ın bir projenin .csproj dosyasında açıkça listelenip listelenmemesi ya daNetBarcodearacılığıyla geçişli olarak gelmesinden bağımsız olarak geçerlidir.


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

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

NetBarcode'un hedef aldığı birincil kullanım durumu olan barkodları ölçek üzerinde işleyen bir perakende veya lojistik şirketi için, yıllık gelir genellikle ImageSharp ticari lisansının geçerli olduğu eşik üzerinde olmaktadır. Bir uyumluluk denetimi, bu yükümlülüğün paket ağacına gömülü olduğunu ortaya çıkarabilir.

V1.8 sürümü, ImageSharp bağımlılığının ek bir sonucunu tanıttı: GetImage() dönüş tipi, dahili temsilden SixLabors.ImageSharp.Image<Rgba32> olarak değiştirildi. Açık bir tipi olmadan GetImage() çağıran mevcut kod, derleme sırasında bozuldu ve SixLabors.ImageSharp ve SixLabors.ImageSharp.PixelFormats için yeni using direktifleri zorunlu hale geldi. ImageSharp'un kendi API'si gelecek sürümlerde geliştiğinde, NetBarcode'un kamuya açık API yüzeyi de etkilenir.

IronBarcode

IronBarcode'un SixLabors.ImageSharp bağımlılığı yoktur. Lisanslama şartları, hiçbir bölünme eşiği veya geçişli ticari yükümlülük olmadan doğrudan IronBarcode lisanslama sayfasında belirtilmiştir. Değerlendirme için bir deneme anahtarı mevcuttur; Satın alınan lisanslar, oluşturulan çıktılardan deneme filigranını kaldırır.

API Eşleme Başvurusu

NetBarcode IronBarcode Notlar
new Barcode(data, Type.Code128) BarcodeWriter.CreateBarcode(data, BarcodeEncoding.Code128) Kurucu → statik yöntem
new Barcode(data, Type.Code128A/B/C) BarcodeWriter.CreateBarcode(data, BarcodeEncoding.Code128) IronBarcode, alt kümesini otomatik olarak seçer
new Barcode(data, Type.EAN13) BarcodeWriter.CreateBarcode(data, BarcodeEncoding.EAN13) Doğrudan eşleme
new Barcode(data, Type.EAN8) BarcodeWriter.CreateBarcode(data, BarcodeEncoding.EAN8) Doğrudan eşleme
new Barcode(data, Type.Code39) BarcodeWriter.CreateBarcode(data, BarcodeEncoding.Code39) Doğrudan eşleme
new Barcode(data, Type.Code39E) BarcodeWriter.CreateBarcode(data, BarcodeEncoding.Code39Extended) Doğrudan eşleme
new Barcode(data, Type.Code93) BarcodeWriter.CreateBarcode(data, BarcodeEncoding.Code93) Doğrudan eşleme
new Barcode(data, Type.Code11) BarcodeWriter.CreateBarcode(data, BarcodeEncoding.Code11) 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() GörüntüSharp türü açığa çıkmadı
Hayır Type.UPCA / UPCE / ITF / MSI BarcodeEncoding.UPCA / UPCE / ITF / MSI Yeni özellik
Hayır Type.QRCode BarcodeEncoding.QRCode Yeni özellik
Hayır Type.DataMatrix BarcodeEncoding.DataMatrix Yeni özellik
Hayır Type.PDF417 BarcodeEncoding.PDF417 Yeni özellik
Hayır Type.Aztec BarcodeEncoding.Aztec Yeni özellik
Okuma API'si yok BarcodeReader.Read(path) Yeni özellik
using NetBarcode; using IronBarCode; Ad alanı değişikliği
using SixLabors.ImageSharp; Kaldır Artık gerekli değil

Tam format referansı desteklenen barkod formatları belgelerinde mevcuttur.

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

QR Kod ve 2D Format Gereksinimleri

NetBarcode'a alternatif değerlendirme için en sık tetikleyici QR kodları için yeni bir gereksinimdir. Perakende etiketleri veya gönderim manifestoları için 1D barkod üretimi ile başlayan uygulamalar, genellikle QR kodları için takip eden bir gereksinim alır — temassız bağlantılar, mobil uygulama derin bağlantıları, pazarlama kampanyaları. Type enumunda QR girişi olmadığı için bu gereklilikNetBarcodeiçinde karşılanamaz. Bu açığı kapatmak için ayrı bir QR kütüphanesi ekleyen takımlar, eczacılık entegrasyonu içinDataMatrixveya gönderim etiketlerinde zorunlu kılındığı için bir lojistik taşıyıcı içinPDF417gerektiğinde ikinci bir değerlendirme ile karşılaşır.

Barkod Okuma Gerekliliği Olur

Bazı projeler saf üretimle başlar ve daha sonra doğrulama veya belge işleme gereksinimi ekler: basılı bir barkodun kaynak verileriyle eşleştiğini doğrulama, gelen tedarikçi faturalarından barkod değerlerini çıkarma veya geri gönderim etiketlerini okuma.Net/Barcodebu konuda bir yol sunmaz. ZXing.Net veya benzer bir okuma kütüphanesi eklenmesi,NetBarcodeve bir QR kütüphanesini zaten barındıran aynı kod tabanında öğrenme ve bakım yükünü arttıran üçüncü bir API tanıtır. Okuma gereksinimlerini gelecekte bir aşamada bile bekleyen projeler, başından beri her iki konuda da işlem yapan bir kütüphane seçmenin daha verimli olduğunu sıklıkla bulur.

ImageSharp Ticari Lisans Denetimi

Üçüncü taraf bağımlılıklarının yasal ve uyumluluk incelemeleri ara sıraNetBarcodepaket ağacına gömülü olan SixLabors.ImageSharp ticari lisans koşulunu ortaya çıkarır. Yıllık brüt geliri eşiği aşan şirketler için, SixLabors.ImageSharp kasten seçilmiş olsun ya da geçişli olarakNetBarcodearacılığıyla gelmiş olsun yükümlülük geçerlidir. Bu sorunu bir denetim sırasında keşfeden ekipler — benimsemeden önce değil — planlanan bir geçiş yerine geriye dönük bir düzeltme ile karşılaşır. Bir projeye başlamadan önce bağımlılık lisansını değerlendirmek daha temiz bir yol.

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

1D üretimi için NetBarcode, 2D çıkış için QR özel bir kütüphane ve okumak için ZXing.Net toplayan ekipler kendilerini üç ayrı paket arasında sürüm uyumluluğunu sürdürüyor olarak bulurlar. Her bir yükseltme döngüsü, üç kütüphanenin ortak ImageSharp sürümünde anlaştığını kontrol etmeyi gerektirir. Projeye katılan her yeni geliştirici, kavramsal olarak tek bir konu için üç farklı API ile karşılaşır. Tek bir barkod kütüphanesine konsolidasyon, yeni başlayanlar için eğitimi basitleştirir, sürüm çatışması yüzeyini azaltır ve bakım işlemlerini tek bir sürüm döngüsüne yoğunlaştırır.

Genel Geçiş Dikkat Edilmesi Gereken Hususlar

Paket Değiştirme ve Geçişli Bağımlılık Temizleme

NetBarcode'u dotnet remove package NetBarcode ile kaldırmak ilk adımdır. Projelerdeki diğer paketler de geçişli olarak çekiyorsa SixLabors.ImageSharp paketi bağımlılık ağacında tekrar görünebilir. Kaldırıldıktan sonra, ImageSharp'ın hala mevcut olup olmadığını ve ticari lisans koşulunun hala geçerli olup olmadığını onaylamak 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 depolayan herhangi bir kod güncellenmelidir. ImageSharp türü IronBarcode içinde doğrudan eşdeğer yoktur; değişim, görüntünün aşağı akışta nasıl kullanıldığına bağlıdır. Görüntüyü bir akışa kaydeden kod, doğrudan GeneratedBarcode nesnesi üzerinde .SaveAsPng(stream) ile değiştirilebilir. Ham baytları alan kod, .ToPngBinaryData() kullanabilir. Dönen görüntü üzerinde daha fazla ImageSharp manipülasyonu yapan kodlar, bu işlemleri bireysel olarak değerlendirmeye ihtiyaç duyacaktır.

Namespace Güncellemesi

using NetBarcode;, using SixLabors.ImageSharp;, using SixLabors.ImageSharp.PixelFormats; veya using SixLabors.Fonts; içe aktaran dosyalar, bu direktiflerin using IronBarCode; ile değiştirilmesi gerektirir. Bu using deyimlerini proje genelinde arama yaparak, derleme denemesi öncesinde dikkat gerektiren her dosya belirlenir.

Ek IronBarcode Yetenekleri

Bu karşılaştırmada kapsanan temel oluşturma ve okuma özelliklerinin ötesinde,IronBarcode aşağıdakileri sağlar:

  • SVG Barkod Çıkışı: Yazdırma iş akışları ve ölçeklenebilir etiket tasarımları için uygun vektör formatında barkod görüntüleri oluşturma
  • Barkod Şekillendirme: Oluşturulan barkodlarda çubuk rengi, arka plan rengi, açıklama fontu, kenar boşluğu ve döndürmeyi yapılandırma
  • GS1-128 ve GS1 DataBar: Perakende ve tedarik zinciri uyumluluğu için uygulama tanımlayıcısı yapılı barkodlar
  • Posta Formatları: Posta uygulamaları için Intelligent Mail, Royal Mail ve diğer posta sembolojileri
  • PDF Barkod Çıkartımı: Ayrı bir PDF kütüphanesi olmadan çok sayfalı PDF belgelerden doğrudan barkodları okuma
  • Toplu Üretim: Tek bir kanalda barkod verileri topluluklarını verimli bir şekilde işleme
  • MAUI ve Mobil Hedefler: IronBarcode, çapraz platform mobil ve masaüstü barkod iş akışları için .NET MAUI uygulamalarını destekler

.NET Uyumluluğu ve Geleceğe Hazırlık

IronBarcode, modern .NET'e henüz geçmemiş projeler için mevcut .NET sürümlerini hedefler ve .NET Standard ile uyumluluğu korur. Iron Software'ın düzenli yayın ritmi, her büyük .NET sürümüyle uyumluluk güncellemelerine uygun hale getirir.NetBarcode.NET Standard 2.0'ı hedefler ve bu uyumluluk katmanı boyunca mevcut çalışma zamanlarında işlevseldir, ancak kütüphanenin güncelleme sıklığı ve 2D format seti tasarım kapsamı tarafından belirlenmiştir.

Sonuç

NetBarcode ve IronBarcode, barkod kütüphanesi kapsamı spektrumunda farklı pozisyonları temsil eder. NetBarcode, 1D barkod üretiminin odaklı ve temiz bir uygulamasıdır: sekiz lineer simgoloji ailesinde on bir enum değeri, basit bir yapıcı API ve ImageSharp gelir eşiği içinde açık kaynak projeleri için benimsemeyi sürtünmesiz kılanMITlisansı ile. IronBarcode, 50'den fazla formatta üretimi, görüntülerden ve PDF'lerden okuma işlemlerini kapsayan ve 1D ve 2D formatları aynı şekilde ele alan akıcı bir API sunan daha geniş bir araç takımıdır.

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

Kapsamın genişleyebileceği, sonunda okuma gerekecek veya ImageSharp geçişli bağımlılık uyumluluk incelemesinin bir endişe olduğu projeler için,IronBarcode tüm bu üç ihtiyacı tek bir paketle ele alır. 1D üretimi içinNetBarcodeile başlamış ve daha sonra 2D için QRCoder ve okuma için ZXing.Net ekleyen ekipler üç ayrı kütüphane bakım yükümlülüğü biriktirir;IronBarcode bunları bir araya toplar.

Seçim doğrudan projenin gereksinimlerinden çıkar. NetBarcode'un sekiz simgoloji ailesindeki on bir 1D enum değeri ve okuma yeteneğinin olmaması spesifikasyonla tam olarak eşleşiyorsa,NetBarcodeteknik olarak sesli bir seçenektir. Eğer spesifikasyon herhangi bir 2D format içeriyorsa, herhangi bir okuma iş akışı ya da ImageSharp lisans koşulu hakkında herhangi bir endişe içeriyorsa,IronBarcode daha eksiksiz bir cevaptır.

Sıkça Sorulan Sorular

NetBarcode nedir?

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

NetBarcode ve IronBarcode arasındaki temel farklar nelerdir?

IronBarcode, örnek yönetimi gerektirmeyen statik, durumsuz bir API kullanırken, NetBarcode genellikle kullanım öncesi örnek oluşturma ve yapılandırma gerektirir. IronBarcode ayrıca yerel PDF desteği, otomatik format tanıma ve tüm ortamlarda tek anahtarlı lisanslama sunar.

IronBarcode, NetBarcode'den daha mı kolay lisanslanır?

IronBarcode hem geliştirme hem de üretim dağıtımlarını kapsayan tek bir lisans anahtarı kullanır. Bu, SDK anahtarlarını çalışma zamanı anahtarlarından ayıran lisanslama sistemlerine kıyasla CI/CD hatlarını ve Docker yapılandırmalarını basitleştirir.

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

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

IronBarcode doğal PDF barkod okuma desteği sunuyor mu?

Evet. IronBarcode, ayrı bir PDF render kütüphanesi gerektirmeden, BarcodeReader.Read('document.pdf') kullanarak PDF dosyalarından doğrudan barkod okur. Sayfa bazında sonuçlar sayfa numarası, barkod formatı, değeri ve güven puanını içerir.

IronBarcode, toplu işlem konusunda NetBarcode'a kıyasla nasıl bir performans sergiliyor?

IronBarcode'un statik yöntemleri durum terkibesizdir ve doğal olarak thread-safe'dir, bu da thread başına örnek yönetimi olmadan Parallel.ForEach'in doğrudan kullanımına olanak tanır. Herhangi bir fiyatlandırma seviyesinde bir throughput tavanı 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 paketinde destekler. Platform hedefleri arasında Windows x64/x86, Linux x64 ve macOS x64/ARM bulunur.

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

IronBarcode'u NuGet üzerinden kurun: Paket Yöneticisi Konsolunda 'Install-Package IronBarCode' komutunu veya CLI'da 'dotnet add package IronBarCode' komutunu çalıştırın. Ek bir SDK yükleyicisi veya çalışma zamanı dosyası gerekmez.

NetBarcode'un aksine IronBarcode'u satın almadan önce değerlendirebilir miyim?

Evet. IronBarcode'un deneme modu, yalnızca oluşturulan çıktı görüntülerine bir filigran ekleyerek, barkod değerlerini tam olarak döndürür. Satın almadan önce, kendi belgelerinizde okuma doğruluğunu kıyaslayabilirsiniz.

NetBarcode ile IronBarcode arasındaki fiyat farkı nedir?

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

NetBarcode'dan IronBarcode'a geçiş kolay mı?

NetBarcode'dan IronBarcode'a geçiş, esas olarak örnek tabanlı API çağrılarını IronBarcode'un statik metotları ile değiştirmeyi, lisanslama şablonunu kaldırmayı ve sonuç özelliği adlarını güncellemeyi içerir. Çoğu geçiş, kod eklemek yerine kodu azaltmayı içerir.

IronBarcode, logolu QR kodları üretebiliyor mu?

Evet. QRCodeWriter.CreateQrCode().AddBrandLogo('logo.png'), konfigüre edilebilir hata düzeltme ile QR koduna yerel olarak bir marka görüntüsü yerleştirir. Renkli QR kodları, ChangeBarCodeColor() ile de desteklenir.

Curtis Chau
Teknik Yazar

Curtis Chau, Bilgisayar Bilimleri alanında Lisans Derecesine (Carleton Üniversitesi) sahip ve Node.js, TypeScript, JavaScript ve React konularında uzmanlaşmış ön uç geliştirmeyle ilgileniyor. Sezgisel ve estetik açıdan hoş kullanıcı arayüzleri oluşturma tutkunu, Curtis modern çerçevelerle çalışmayı ve iyi yapı...

Daha Fazla Oku

Iron Destek Ekibi

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