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

QRCoder.NET vs IronBarcode: C# Barkod Kütüphanesi Karşılaştırması

QRCoder vs IronBarcode: Yalnızca QR Kodu Kitaplığı Nerede Sınırlarını Aşar

QRCoder bir şeyi olağanüstü şekilde iyi yapar: QR kodları saf C# içinde sıfır harici bağımlılık ile üretir, kısıtlanmamışMITlisansı ve standart yük formatlamasından çeşitli çıktı oluşturucularına kadar her şeyi ele alan düşünceli API ile. 60M+ NuGet indirimi ile itibarı hak edilmiştir.IronBarcode ile karşılaştırma bir kalite yargısı değil — bu, kapsam sorusudur. IronBarcode, 50'den fazla barkod formatını kapsar, yazar kadar okuyarak ve tutarlı bir API üzerinden PDF belgeleri ile entegre olur. QR üretiminin ötesine geçen gereksinimleri olan ekipler için, QRCoder'ın tasarımda kasıtlı olarak nerede durduğunu anlamak önemlidir.

QRCoder'ı Anlamak

QRCoder, Raffael Herrmann tarafından 2013'te oluşturuldu ve şimdi Shane32 tarafından korunmaktadır. Kütüphane tamamen C# ile yazılmış, sıfır harici bağımlılık — SkiaSharp sürüm çatışmaları yok, ImageSharp ticari lisans endişeleri yok, yerel ikili dosyalar dağıtımı yoktur. Hangi platformda .NET çalışıyorsa, o platformda çalışır.

MIT lisansı gerçekten sınırsızdır. Gelir eşiğinin bir ticari lisans gerekliliğini tetiklediği bazı popüler kütüphanelerin aksine,QRCodergizli ticari kısıtlamalar taşımaz. Bu ayrım, ticari uygulamalar geliştiren ekipler için önemlidir.

PayloadGenerator sınıfı önemli bir pratik değer katar: geliştiricilerin her bir standart için kablo formatını ezberlemesi gerekmediğinden, WiFi kimlik bilgileri, iletişim kartları (vCard), takvim etkinlikleri, SMS mesajları ve konum noktalarını içeren yaygın QR kod veri formatlarını yönetir. Çıktı türleri arasında güçlü bir renderer çeşitliliği de vardır.

Ana mimari özellikler:

  • Sıfır Harici Bağımlılık: Saf C# ile hiçbir üçüncü taraf çalışma zamanı gereksinimi yoktur, konteynerleştirilmiş veya kısıtlı ortamları basitleştirir
  • Gelir Kısıtlaması OlmadanMITLisansı: Ticari kullanım için gerçekten ücretsiz, gelir eşikleri veya ticari tetikleyiciler olmadan
  • PayloadGenerator Yardımcıları: WiFi, vCard, CalendarEvent, SMS, Geo ve diğer yaygın QR yük standartlarına yönelik yerleşik formatlayıcılar
  • Renderer Çeşitliliği: PNG baytları, SVG dizisi, ASCII sanatı, Base64, BMP ve birkaç ek çıktı formatı
  • Tam Hata Düzeltmesi Kontrolü: Tüm dört ECC seviyesi (L, M, Q, H) açığa çıkarılmıştır
  • Mikro QR Desteği: Tüm barkod kütüphanelerinde bulunmayan alan kısıtlamalı etiketler için kompakt QR varyantı
  • Yalnızca QR Tasarımı: API yüzeyi yalnızca QR kod üretimini kapsar — 1D formatlar yok,DataMatrixyok, barkod okuma yok

Yalnızca QR Tasarımı

QRCoder, veri oluşturma adımını render adımından ayırır. QRCodeGenerator bir QRCodeData ara nesneyi üretir ve bu daha sonra bir render sınıfına geçirilir. Bu desen, ek nesneler pahasına çıktı formatı üzerinde kesin kontrol sağlar:

using QRCoder;
using System.IO;

var qrGenerator = new QRCodeGenerator();
var qrCodeData = qrGenerator.CreateQrCode(
    "https://example.com",
    QRCodeGenerator.ECCLevel.M
);

// PNG bytes via PngByteQRCode
var pngQR = new PngByteQRCode(qrCodeData);
byte[] pngBytes = pngQR.GetGraphic(20); // 20px per module
File.WriteAllBytes("qr.png", pngBytes);

// SVG string via SvgQRCode
string svgContent = new SvgQRCode(qrCodeData).GetGraphic(10);
File.WriteAllText("qr.svg", svgContent);
using QRCoder;
using System.IO;

var qrGenerator = new QRCodeGenerator();
var qrCodeData = qrGenerator.CreateQrCode(
    "https://example.com",
    QRCodeGenerator.ECCLevel.M
);

// PNG bytes via PngByteQRCode
var pngQR = new PngByteQRCode(qrCodeData);
byte[] pngBytes = pngQR.GetGraphic(20); // 20px per module
File.WriteAllBytes("qr.png", pngBytes);

// SVG string via SvgQRCode
string svgContent = new SvgQRCode(qrCodeData).GetGraphic(10);
File.WriteAllText("qr.svg", svgContent);
Imports QRCoder
Imports System.IO

Dim qrGenerator As New QRCodeGenerator()
Dim qrCodeData = qrGenerator.CreateQrCode("https://example.com", QRCodeGenerator.ECCLevel.M)

' PNG bytes via PngByteQRCode
Dim pngQR As New PngByteQRCode(qrCodeData)
Dim pngBytes As Byte() = pngQR.GetGraphic(20) ' 20px per module
File.WriteAllBytes("qr.png", pngBytes)

' SVG string via SvgQRCode
Dim svgContent As String = New SvgQRCode(qrCodeData).GetGraphic(10)
File.WriteAllText("qr.svg", svgContent)
$vbLabelText   $csharpLabel

QRCodeGenerator.CreateQrCode yöntemi, kod oluşturma için tek giriş noktasıdır—CreateCode128, CreateDataMatrix, CreateEAN13 yoktur. Kütüphane, tasarlandığı kapsama tamamen bağlıdır.

IronBarcode Anlama

IronBarcode, Iron Software'dan ticari bir .NET barkod kütüphanesidir ve tek, tutarlı bir API üzerinden 50'den fazla barkod formatının üretimi ve okumasını kapsar. Farklı format aileleri için ayrı kütüphaneler sürdürmek yerine,IronBarcode bütün formatları aynı statik BarcodeWriter ve BarcodeReader giriş noktaları üzerinde BarcodeEncoding parametreleri ile açığa çıkarır.

Kütüphane, statik bir API modelini kullanır: BarcodeWriter.CreateBarcode hiçbir örnek kurulumu gerektirmez ve BarcodeReader.Read dosya yolları, akışlar, bayt dizileri ve otomatik çok formatlı algılaması olan System.Drawing.Bitmap nesnelerini kabul eder. PDF belgeleri desteği — hem PDF sayfalarından barkodlar okuma hem de PDF'lere barkod yerleştirme — harici bağımlılık olmadan dahil edilmiştir.

Anahtar özellikler:

  • 50+ Barkod Formatı: QR Kod, Code 128, EAN-13, UPC-A, DataMatrix, PDF417, Aztec, MaxiCode ve tek BarcodeEncoding parametresi üzerinden birçok diğer format
  • Entegre Okuma API'si: BarcodeReader.Read, görüntüleri, PDF'leri ve akışları otomatik format algılaması ile ele alır—ikinci bir kütüphane gerekmez
  • QR Kod Özelleştirme: QRCodeWriter yöntemleri aracılığıyla logo gömme, renk değişiklikleri ve sessiz bölge kontrolü
  • PDF Entegrasyonu: PDF sayfalarından barkod okuma ve mevcut PDF belgelerine barkod basma
  • Statik API Modeli: Üreteç örneği gerekmez—BarcodeWriter statik bir sınıftır
  • Ticari Lisans: Format başına kısıtlama olmaksızın tek geliştirici lisansı için 749 dolardan başlayan fiyatlarla

Özellik Karşılaştırması

Aşağıdaki tablo,QRCoderve IronBarcode arasındaki temel farkları özetlemektedir:

Özellik QRCoder IronBarcode
QR Kod Üretimi Evet — mükemmel Evet
1D Barkod Üretimi Hayır Evet (30+ format)
Diğer 2D Formatlar Hayır Evet (DataMatrix, PDF417, Aztec, vb.)
Barkod Okuma Hayır Evet — otomatik algılama
PDF Desteği Hayır Evet — oku ve damga
Lisans MIT — gerçekten ücretsiz Ticari ($749 tek geliştirici)

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

Özellik QRCoder IronBarcode
Üretim
QR Kodu Evet Evet
Mikro QR Evet Hayır
Code 128 Hayır Evet
EAN-13 / UPC-A Hayır Evet
DataMatrix Hayır Evet
PDF417 Hayır Evet
Aztek Hayır Evet
Toplam formatlar 1 50+
QR Kod Özellikleri
Hata düzeltme (L/M/Q/H) Evet Evet
Logo gömme Evet Evet
Renk özelleştirme Evet Evet
SVG çıktısı Evet Evet
ASCII sanatı çıktısı Evet Hayır
Base64 çıktısı Evet Hayır
PayloadGenerator yardımcıları Evet Hayır — manuel string oluşturma
Okuma
Görüntüden çözme Hayır Evet
PDF'den çözme Hayır Evet
Otomatik format algılama Hayır Evet
Entegrasyon
PDF barkod damgası Hayır Evet
Sıfır harici bağımlılık Evet Kendi içinde tamamlanmış
Lisanslama
Lisans türü MIT Ticari
Gelir kısıtlamaları None None
Format başına fiyatlandırma None None

QR Kod Üretimi

Her iki kütüphane de QR kodları üretir, ancak API'leri, oluşturma adımı ile işleme adımı arasındaki farklı tasarım felsefelerini yansıtır.

QRCoder Yaklaşımı

QRCoder, iki aşamalı bir desen kullanır: QRCodeGenerator.CreateQrCode, veri ve hata düzeltme seviyesini kodlayan bir QRCodeData ara nesnesi üretir ve ayrı bir render sınıfı bu ara nesneyi istenen çıktı formatına dönüştürür. ECC seviyesi, varsayılanı olmayan zorunlu bir parametredir — geliştiricilerin açıkça seçim yapması gerekir:

using QRCoder;
using System.IO;

var qrGenerator = new QRCodeGenerator();
var qrCodeData = qrGenerator.CreateQrCode(
    "https://example.com",
    QRCodeGenerator.ECCLevel.M
);

var qrCode = new PngByteQRCode(qrCodeData);
byte[] pngBytes = qrCode.GetGraphic(20); // pixels per module
File.WriteAllBytes("qr.png", pngBytes);
using QRCoder;
using System.IO;

var qrGenerator = new QRCodeGenerator();
var qrCodeData = qrGenerator.CreateQrCode(
    "https://example.com",
    QRCodeGenerator.ECCLevel.M
);

var qrCode = new PngByteQRCode(qrCodeData);
byte[] pngBytes = qrCode.GetGraphic(20); // pixels per module
File.WriteAllBytes("qr.png", pngBytes);
Imports QRCoder
Imports System.IO

Dim qrGenerator As New QRCodeGenerator()
Dim qrCodeData = qrGenerator.CreateQrCode("https://example.com", QRCodeGenerator.ECCLevel.M)

Dim qrCode As New PngByteQRCode(qrCodeData)
Dim pngBytes As Byte() = qrCode.GetGraphic(20) ' pixels per module
File.WriteAllBytes("qr.png", pngBytes)
$vbLabelText   $csharpLabel

Bu desenin faydası, kod verisini yeniden üretmeden birden fazla çıktı formatı için qrCodeData nesnesini yeniden kullanmaktır. Render sınıfları arasında, PngByteQRCode, SvgQRCode, AsciiQRCode, Base64QRCode ve BitmapByteQRCode bulunur.

IronBarcode Yaklaşımı

IronBarcode, statik BarcodeWriter sınıfı üzerinde akıcı bir zincir içine üretim ve render işlemlerini birleştirir. BarcodeEncoding.QRCode parametresi formatı seçer ve SaveAsPng veya ToPngBinaryData gibi terminal yöntemler, çıktıyı belirler:

using IronBarCode;

// Single fluent call — no intermediate objects
BarcodeWriter.CreateBarcode("https://example.com", BarcodeEncoding.QRCode)
    .ResizeTo(400, 400)
    .SaveAsPng("qr.png");
using IronBarCode;

// Single fluent call — no intermediate objects
BarcodeWriter.CreateBarcode("https://example.com", BarcodeEncoding.QRCode)
    .ResizeTo(400, 400)
    .SaveAsPng("qr.png");
Imports IronBarCode

' Single fluent call — no intermediate objects
BarcodeWriter.CreateBarcode("https://example.com", BarcodeEncoding.QRCode) _
    .ResizeTo(400, 400) _
    .SaveAsPng("qr.png")
$vbLabelText   $csharpLabel

Belirli hata düzeltme kontrolü gerektiren durumlar için, QRCodeWriter sınıfı format-spesifik seçenekler sağlar:

using IronBarCode;

var qr = QRCodeWriter.CreateQrCode(
    "https://example.com",
    500,
    QRCodeWriter.QrErrorCorrectionLevel.Medium
);
qr.SaveAsPng("qr.png");
using IronBarCode;

var qr = QRCodeWriter.CreateQrCode(
    "https://example.com",
    500,
    QRCodeWriter.QrErrorCorrectionLevel.Medium
);
qr.SaveAsPng("qr.png");
Imports IronBarCode

Dim qr = QRCodeWriter.CreateQrCode("https://example.com", 500, QRCodeWriter.QrErrorCorrectionLevel.Medium)
qr.SaveAsPng("qr.png")
$vbLabelText   $csharpLabel

IronBarcode 2D barkod oluşturma rehberi, QR Kod, DataMatrix,PDF417veAztekdahil olmak üzere tüm desteklenen 2D formatları, aynı BarcodeWriter giriş noktası üzerinden kapsar.

QR Kod Özelleştirmesi

Her iki kütüphane de QR kodlarında logo gömme ve renk değişikliklerine destek verir, ancak gereken sistem türlerinde yaklaşım farklıdır.

QRCoder Yaklaşımı

QRCoder logo gömme işlemi, PngByteQRCode'dan ayrı olan QRCode renderer sınıfı üzerinden yönlendirilir ve GetGraphic'nun System.Drawing.Bitmap'yı kabul eden bir aşımı açığa çıkarılır. Bu, çağrı yapan kodun logo dosyasını yüklemek için doğrudan System.Drawing ile çalışması gerektiği anlamına gelir:

using QRCoder;
using System.Drawing;

var qrGenerator = new QRCodeGenerator();
var qrCodeData = qrGenerator.CreateQrCode(
    "https://example.com",
    QRCodeGenerator.ECCLevel.H // High ECC required when logo occludes part of the code
);

var qrCode = new QRCode(qrCodeData);
var logoBitmap = new Bitmap("logo.png");
var qrBitmap = qrCode.GetGraphic(10, Color.Black, Color.White, logoBitmap);
qrBitmap.Save("qr-logo.png", System.Drawing.Imaging.ImageFormat.Png);
using QRCoder;
using System.Drawing;

var qrGenerator = new QRCodeGenerator();
var qrCodeData = qrGenerator.CreateQrCode(
    "https://example.com",
    QRCodeGenerator.ECCLevel.H // High ECC required when logo occludes part of the code
);

var qrCode = new QRCode(qrCodeData);
var logoBitmap = new Bitmap("logo.png");
var qrBitmap = qrCode.GetGraphic(10, Color.Black, Color.White, logoBitmap);
qrBitmap.Save("qr-logo.png", System.Drawing.Imaging.ImageFormat.Png);
Imports QRCoder
Imports System.Drawing

Dim qrGenerator As New QRCodeGenerator()
Dim qrCodeData = qrGenerator.CreateQrCode("https://example.com", QRCodeGenerator.ECCLevel.H) ' High ECC required when logo occludes part of the code

Dim qrCode As New QRCode(qrCodeData)
Dim logoBitmap As New Bitmap("logo.png")
Dim qrBitmap = qrCode.GetGraphic(10, Color.Black, Color.White, logoBitmap)
qrBitmap.Save("qr-logo.png", System.Drawing.Imaging.ImageFormat.Png)
$vbLabelText   $csharpLabel

Renk özelleştirmesi, GetGraphic aşımının darkColor ve lightColor parametreleri üzerinden benzer bir deseni takip eder.

IronBarcode Yaklaşımı

IronBarcode, logo gömme ve renk değişikliklerini QRCodeWriter sonuç nesnesi üzerinde adlandırılmış yöntemler olarak açığa çıkarır. AddBrandLogo yöntemi bir dosya yolunu kabul eder ve ChangeBarCodeColor bir Color değerini kabul eder:

using IronBarCode;
using System.Drawing;

// Logo embedding
var qr = QRCodeWriter.CreateQrCode(
    "https://example.com",
    500,
    QRCodeWriter.QrErrorCorrectionLevel.Highest
);
qr.AddBrandLogo("logo.png");
qr.SaveAsPng("qr-logo.png");

// Colour customisation
var coloredQr = QRCodeWriter.CreateQrCode("https://example.com", 500);
coloredQr.ChangeBarCodeColor(Color.DarkBlue);
coloredQr.SaveAsPng("colored-qr.png");
using IronBarCode;
using System.Drawing;

// Logo embedding
var qr = QRCodeWriter.CreateQrCode(
    "https://example.com",
    500,
    QRCodeWriter.QrErrorCorrectionLevel.Highest
);
qr.AddBrandLogo("logo.png");
qr.SaveAsPng("qr-logo.png");

// Colour customisation
var coloredQr = QRCodeWriter.CreateQrCode("https://example.com", 500);
coloredQr.ChangeBarCodeColor(Color.DarkBlue);
coloredQr.SaveAsPng("colored-qr.png");
Imports IronBarCode
Imports System.Drawing

' Logo embedding
Dim qr = QRCodeWriter.CreateQrCode("https://example.com", 500, QRCodeWriter.QrErrorCorrectionLevel.Highest)
qr.AddBrandLogo("logo.png")
qr.SaveAsPng("qr-logo.png")

' Colour customisation
Dim coloredQr = QRCodeWriter.CreateQrCode("https://example.com", 500)
coloredQr.ChangeBarCodeColor(Color.DarkBlue)
coloredQr.SaveAsPng("colored-qr.png")
$vbLabelText   $csharpLabel

QR kod stili özelleştirme kılavuzu, logo boyutlandırma, renk kombinasyonları ve sessiz bölge kontrolünü ayrıntılı olarak ele alır.

Barkod Okuma

Barkod okuma, iki kütüphane arasındaki en keskin yetenek farkını temsil eder.

QRCoder Yaklaşımı

QRCoder, bir barkod okuma API'sine sahip değil. QRCodeGenerator sınıfı ve tüm render sınıfları sadece üretim için vardır. Görüntüden, dosyadan veya akıştan bir QR kod çözmek için bir yöntem yoktur. Hem QR kodları üretmesi hem de okuması gereken uygulamalar, genellikle kendi API'sine, kendi ad alanına ve kendi bakım döngüsüne sahip başka bir kütüphane — genellikle ZXing.Net — eklemelidir:

//QRCoderhas no reading API.
// These methods do not exist:
//   qrGenerator.Decode("image.png");
//   QRCodeReader.Read("image.png");
//
// A separate library (e.g., ZXing.Net) is required for decoding.
//QRCoderhas no reading API.
// These methods do not exist:
//   qrGenerator.Decode("image.png");
//   QRCodeReader.Read("image.png");
//
// A separate library (e.g., ZXing.Net) is required for decoding.
'QRCoder has no reading API.
' These methods do not exist:
'   qrGenerator.Decode("image.png")
'   QRCodeReader.Read("image.png")
'
' A separate library (e.g., ZXing.Net) is required for decoding.
$vbLabelText   $csharpLabel

Bu bir tasarım kararıdır, ihmalkarlık değil —QRCoderaçıkça bir üretim kütüphanesidir.

IronBarcode Yaklaşımı

IronBarcode, aynı pakette bir okuma API'si içerir. BarcodeReader.Read, görüntü dosyalarını, PDF dosyalarını, akışları ve System.Drawing.Bitmap nesnelerini kabul eder. Barkod formatlarını hangi formatı arayacağını çağırandan istemeden otomatik olarak algılar ve görüntüde bulunan tüm barkodları geri döndürür:

using IronBarCode;

// Reading a QR code — no separate library required
var results = BarcodeReader.Read("qr.png");
foreach (var result in results)
{
    Console.WriteLine(result.Value);       // decoded value
    Console.WriteLine(result.Format);      // QRCode, Code128, EAN13, etc.
}
using IronBarCode;

// Reading a QR code — no separate library required
var results = BarcodeReader.Read("qr.png");
foreach (var result in results)
{
    Console.WriteLine(result.Value);       // decoded value
    Console.WriteLine(result.Format);      // QRCode, Code128, EAN13, etc.
}
Imports IronBarCode

' Reading a QR code — no separate library required
Dim results = BarcodeReader.Read("qr.png")
For Each result In results
    Console.WriteLine(result.Value)       ' decoded value
    Console.WriteLine(result.Format)      ' QRCode, Code128, EAN13, etc.
Next
$vbLabelText   $csharpLabel

görüntülerden barkod okuma kılavuzu, PDF'lerden, çok sayfalı belgelerden, akışlardan ve aynı giriş noktası aracılığıyla düşük çözünürlüklü veya gürültülü görüntülerden okuma işlemlerini kapsar.

QR Ötesindeki Format Kapsamı

QRCoder Yaklaşımı

QRCoder yalnızca QR kodları üretir — bu, tasarım gereği böyledir. QRCodeGenerator.CreateQrCode yöntemi kütüphanenin sağladığı tek üretim giriş noktasıdır. QR kodlarıyla başlayıp daha sonra Kod 128 gönderim etiketleri, EAN-13 ürün kodları veyaDataMatrixeczacılık uygunluk kodları gerektiren projeler, her ek formatı kapsamak için ikinci bir kütüphaneyi tanıtmak zorundadır:

using QRCoder;

//QRCoderis limited to QR — other formats require separate packages
var qrGenerator = new QRCodeGenerator();
var qr = qrGenerator.CreateQrCode("scan-to-track", QRCodeGenerator.ECCLevel.M);

//Code 128requires a different library (e.g., NetBarcode)
//DataMatrixrequires yet another library
// Reading any format requires yet another library
using QRCoder;

//QRCoderis limited to QR — other formats require separate packages
var qrGenerator = new QRCodeGenerator();
var qr = qrGenerator.CreateQrCode("scan-to-track", QRCodeGenerator.ECCLevel.M);

//Code 128requires a different library (e.g., NetBarcode)
//DataMatrixrequires yet another library
// Reading any format requires yet another library
Imports QRCoder

'QRCoder is limited to QR — other formats require separate packages
Dim qrGenerator As New QRCodeGenerator()
Dim qr = qrGenerator.CreateQrCode("scan-to-track", QRCodeGenerator.ECCLevel.M)

'Code 128 requires a different library (e.g., NetBarcode)
'DataMatrix requires yet another library
'Reading any format requires yet another library
$vbLabelText   $csharpLabel

IronBarcode Yaklaşımı

IronBarcode, aynı BarcodeWriter.CreateBarcode giriş noktası üzerinden tüm format ailelerini kapsar. QR koddan Code 128'e, DataMatrix'e geçiş yalnızca BarcodeEncoding parametresinin değişmesini gerektirir—ekstra paket yok, yeni ad alanı yok, ayrı API yok:

using IronBarCode;

// All formats — one API, one package
BarcodeWriter.CreateBarcode("scan-to-track", BarcodeEncoding.QRCode)
    .SaveAsPng("campaign-qr.png");

BarcodeWriter.CreateBarcode("SHIP-12345", BarcodeEncoding.Code128)
    .SaveAsPng("shipping-label.png");

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

BarcodeWriter.CreateBarcode("LOT-ABC-123", BarcodeEncoding.DataMatrix)
    .SaveAsPng("pharma-code.png");
using IronBarCode;

// All formats — one API, one package
BarcodeWriter.CreateBarcode("scan-to-track", BarcodeEncoding.QRCode)
    .SaveAsPng("campaign-qr.png");

BarcodeWriter.CreateBarcode("SHIP-12345", BarcodeEncoding.Code128)
    .SaveAsPng("shipping-label.png");

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

BarcodeWriter.CreateBarcode("LOT-ABC-123", BarcodeEncoding.DataMatrix)
    .SaveAsPng("pharma-code.png");
Imports IronBarCode

' All formats — one API, one package
BarcodeWriter.CreateBarcode("scan-to-track", BarcodeEncoding.QRCode) _
    .SaveAsPng("campaign-qr.png")

BarcodeWriter.CreateBarcode("SHIP-12345", BarcodeEncoding.Code128) _
    .SaveAsPng("shipping-label.png")

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

BarcodeWriter.CreateBarcode("LOT-ABC-123", BarcodeEncoding.DataMatrix) _
    .SaveAsPng("pharma-code.png")
$vbLabelText   $csharpLabel

API Eşleme Başvurusu

QRCoder IronBarcode
new QRCodeGenerator() Statik sınıf — örnek gerekmez
qrGenerator.CreateQrCode(data, ECCLevel.M) BarcodeWriter.CreateBarcode(data, BarcodeEncoding.QRCode)
new PngByteQRCode(qrCodeData) Gerekli değil — işleme zincirin bir parçasıdır
qrCode.GetGraphic(20) .ToPngBinaryData() ile .ResizeTo(w, h)
new SvgQRCode(qrCodeData).GetGraphic(10) .SaveAsSvg(path)
new QRCode(qrCodeData).GetGraphic(...) QRCodeWriter.CreateQrCode(data, size, level)
QRCodeGenerator.ECCLevel.L QRCodeWriter.QrErrorCorrectionLevel.Low
QRCodeGenerator.ECCLevel.M QRCodeWriter.QrErrorCorrectionLevel.Medium
QRCodeGenerator.ECCLevel.Q QRCodeWriter.QrErrorCorrectionLevel.Quartile
QRCodeGenerator.ECCLevel.H QRCodeWriter.QrErrorCorrectionLevel.Highest
PayloadGenerator.WiFi(...).ToString() "WIFI:T:WPA;S:{ssid};P:{pass};;"
Okuma API'si yok BarcodeReader.Read(path)
Yalnızca QR formatı 50+ format BarcodeEncoding.* üzerinden

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

Projeleri kesinlikle yalnızca QR için olan ve öyle kalan takımlar için,QRCoderiyi korunmuş bir kütüphane olarak amacı iyi bir şekilde hizmet etmeye devam eder. Aşağıdaki senaryolar, takımların o duruşu yeniden değerlendirmesine neden olan koşulları açıklar.

Format Gereksinimleri QR'ın Ötesinde Genişler

Çoğu barkod gerekliliği QR kodları ile başlar veQRCodero başlangıç kapsamını güvenilir bir şekilde ele alır. İkinci bir format konuşmaya girince tansiyon başlar. Gönderim için Kod 128 etiketler gereken lojistik ekipler, EAN-13 ürün kodları gerekli olan perakende işlemleri, seri numaralandırma içinDataMatrixzorunlu kılan eczacılık iş akışları — her yeni format, bir takımı başka bir NuGet bağımlılığı eklemeye iter. Her ek kütüphanenin entegrasyon maliyeti, öğrenilecek yeni bir ad alanını, izlenecek yeni bir sürüm döngüsünü ve .NET yükseltmelerinde potansiyel sürüm çatışmalarının yeni bir noktasını içerir.

Barkod Okuma Gerekliliği Olur

Bir kampanya için dışa dönük QR kodları üreten bir uygulama yalnızca üretim sistemidir. Aynı zamanda gelen gönderimleri işleyen, varışta ürün kodlarını doğrulayan veya bir etkinlikte biletleri doğrulayan bir uygulama üretim ve okuma sistemidir. QRCoder, tasarım gereği bir okuma yeteneğine sahip değil — bu boşluk başka bir kütüphaneyle doldurulmalıdır. Bir okuma kütüphanesi tanıtımı barkod alt sisteminin entegrasyon altyapısını önemli ölçüde değiştirir, özellikle okuma kütüphanesi kendi biçim-belirleyici gerekliliklerini veya iplik güvenliği kısıtlamalarını dayatıyorsa.

Çoklu Kütüphane Bakım Yükü

BirQRCodertabanlı proje için doğal birikim parçası öngörülebilir bir yolu izler: QR üretimi için QRCoder, gönderim etiketleri için bir 1D barkod kütüphanesi, kod çözme için bir okuma kütüphanesi. Her kütüphane kendi dökümantasyonunu, kendi sürümleme döngüsünü ve kendi kritik değişiklik tarihini taşır. .NET sürüm yükseltmesi bir kütüphane için küçük olabilecek bir şey, başka bir kütüphanede kritik bir değişiklikle aynı zamanda çakışabilir. Yıllar boyunca bu birikimi yöneten ekipler, gizli maliyetin başlangıç entegrasyonunda değil, birden fazla yükseltme döngüsü boyunca bulunan bileşik bakım yükünün içinde olduğunu bildirmektedir.

PDF Belge Desteği

PDF raporlarına gömülü barkodlar oluşturmak veya belge işleme hattında gelen PDF belgelerinden barkodlar çıkartmakQRCoderile mümkün değildir. PDF desteği, barkod yeteneklerine sahip tam bir PDF kütüphanesi veya özel bir kütüphane kombinasyonu gerektirir. Doküman merkezli iş akışları oluşturan ekipler — fatura işleme, uyumluluk raporları, şablonlu PDF'lerden etiket oluşturma — QRCoder'ın kapsam sınırının bir projenin yaşam döngüsünün başlarında PDF gereksinimleriyle kesiştiğini buluyor.

Genel Geçiş Dikkat Edilmesi Gereken Hususlar

PayloadGenerator Dize Formatı

QRCoder'ın PayloadGenerator yardımcı sınıfları, genel QR kod yük standartlarına uyan dizeler üretir. Örneğin, WiFi formatı WIFI:T:WPA;S:NetworkName;P:Password;; üretir. Bu dizeler, QR kodu spesifikasyonu tarafından belgelenen bir genel standart olduğu için IronBarcode içinde bir yardımcı sınıfa gerek duymadan doğrudan oluşturulabilir. Çok sayıda PayloadGenerator kullanımı olan ekipler, dize yapımını çoğaltan küçük statik yardımcı yöntemler yazmayı planlamalıdır.

ECCLevel Enum Eşlemesi

QRCoder, L, M, Q, H değerleri ile QRCodeGenerator.ECCLevel kullanır. IronBarcode, QRCodeWriter.QrErrorCorrectionLevel ile, Low, Medium, Quartile ve Highest değerleri kullanır. Eşleme doğrudan, ancak enum referansları tüm çağrı noktalarında güncellenmelidir. QRCoder, her CreateQrCode çağrısında açık ECC seçimi gerektirirken,IronBarcodeBarcodeWriter.CreateBarcode yolu kullanıldığında mantıklı bir varsayılanı uygular.

Renderer Sınıfı Kaldırma

QRCoder'ın render sınıfları—PngByteQRCode, SvgQRCode, AsciiQRCode, Base64QRCode, QRCode—migrasyon sonrasında gereksiz hale gelir. IronBarcode, GeneratedBarcode üzerinde akıcı bir zincire render işlemi inşa eder, bu yüzden ara yönlendirici nesne deseni devam etmez. Bu render sınıflarını oluşturan kod, BarcodeWriter sonuç üzerinde terminal metod çağrıları ile değiştirilebilir.

Ek IronBarcode Yetenekleri

Yukarıdaki karşılaştırma bölümlerinde kapsanmayan IronBarcode özellikleri:

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

IronBarcode, güncel ve gelecek .NET sürümlerini hedefleyen düzenli güncellemeler ile aktif geliştirmeyi sürdürüyor. Kütüphane, yeni .NET sürümleri geldiğinde yayına alınan uyumluluk güncellemeleriyle, mevcut .NET LTS ve son sürümleri destekler.QRCoderda aktif olarak sürdürülen ve tüm mevcut .NET hedeflerinde çalışan bir projedir; sıfır bağımlılık tasarımı ileri uyumluluğu basit hale getirir. Her iki kütüphane de uzun vadeli .NET projeleri için uygundur. IronBarcode'u seçen ekipler için ticari destek modeli, teknik yardıma doğrudan erişim ve öncelikli hata çözme sağlar.

Sonuç

QRCoder ve IronBarcode, farklı mimari başlangıç noktalarından QR kodu oluşturma işlevine hitap ediyor. QRCoder, tasarımı bilerek QR'de sona eren, tek formatlı bir kütüphane olarak amaçlanmıştır.IronBarcode ise, 50'den fazla barkod formatı arasında oluşturma, okuma ve PDF entegrasyonu kapsayan çok formatlı bir kütüphanedir. Karşılaştırma iyi bir kütüphaneyle daha iyisi arasında değil; uzmanlaşmış bir araç ile genel amaçlı bir araç arasındadır.

QR kodu oluşturmanın kalıcı, sınırlı bir gereklilik olduğu projeler içinQRCoderdoğru seçimdir. Bağımlılık gerektirmeyen yapı izi, sınırsızMITlisansı ve PayloadGenerator yardımcıları, onu bir 2FA kayıt iş akışı için, bir pazarlama kampanyası QR oluşturan veya barkod kapsamının kesinlikle sabit olduğu herhangi bir bağlam için mükemmel bir seçim haline getirir. Kütüphane iyi korunmuş, yaygın olarak kullanılmış ve belirtilen işlevini güvenilir bir şekilde yerine getirmektedir. Bu özelliklere sahip ekipler değiştirerek hiçbir şey kazanmaz.

QR oluşturmanın ötesine uzanan veya uzanması muhtemel bir projenin barkod gereksinimleri olduğunda IronBarcode daha pratik bir seçim haline gelir. Gelen sevkiyatlardan veya taranmış belgelerden kod okuması, QR kampanyalarının yanı sıra Kod 128 etiketleri oluşturması veya PDF raporlarına gömülü barkod üreten uygulamalar, tüm bu görevlerde tek bir tutarlı API'den faydalanır. QRCoder C# alternatifleri kılavuzu, QR-only kütüphanelerin üretim ortamlarında sınırlarına ulaştıkları yerlere ilişkin ek bağlam sağlar. Lisanslama 749 dolardan başlar ve IronBarcode lisanslama sayfasında tamamen kapsanır.

Dürüst değerlendirme, doğru aracın tamamen projenin kapsamına bağlı olduğudur. Kalıcı QR-only gereksinimleri içinQRCoderihtiyaç duyulan her şeyi ücretsiz sağlar. Birden fazla formatı kapsayan, okuma veya PDF entegrasyonunu içeren gereksinimler için IronBarcode, proje geliştikçe birden fazla tek amaçlı kütüphaneyi yönetme ihtiyacını ortadan kaldırır.

Sıkça Sorulan Sorular

QRCoder.NET nedir?

QRCoder.NET, 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.

QRCoder.NET ve IronBarcode arasındaki temel farklar nelerdir?

IronBarcode, örnek yönetimi gerektirmeyen statik, durumsuz bir API kullanırken, QRCoder.NET 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, QRCoder.NET'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, QRCoder.NET'in 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 QRCoder.NET'e 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.

QRCoder'in 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.

QRCoder.NET 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.

QRCoder.NET'den IronBarcode'a geçiş kolay mı?

QRCoder.NET'den 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