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

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

LEADTOOLS Barkod vs IronBarcode: Lisanslama, İz ve Konteyner Dağıtımı

Docker'da LEADTOOLS Barcode'u kullanmak için, lisans dosyasını konteynerinize belirli bir yola monte edersiniz. Bu dosya her dağıtımla birlikte seyahat etmek zorundadır. Lisans dosyası, sadece bir ortam değişkeni değil, dağıtım eseri setinin bir parçasıdır.

Bu, LEADTOOLS mühendisliğine bir eleştiri değildir — dosya tabanlı lisanslama modelini, konteynır yerel dağıtım modellerinden önce gelen bir modeli yansıtır. Ancak 2026 yılında ci/cd boru hattınız bir konteyner imgesi oluşturmak ve itmek gerektiğinde, ya bir .LIC dosyasını görüntü içerisine pişiriyor ya da çalışma esnasında bir hacim olarak bağlıyorsunuz. Her iki durumda da, barkod kütüphanenizin başlatılmadan önce dosya sistemi erişimine ihtiyacı vardır. Bu karşılaştırmanın keşfettiği temel değiş tokuş budur.

LEADTOOLS Barcode'u Anlamak

LEADTOOLS Barcode, LEAD Technologies'in kapsamlı belge görüntüleme SDK'sının bir parçasıdır ve 1990'dan beri sürekli geliştirilmiştir. Barkod modülü,40+sembolojiyi destekler ve OCR, form işleme, PDF manipülasyonu ve görüntü görüntüleme için daha geniş LEADTOOLS ekosistemi ile sıkı bir entegrasyona sahiptir. Bu ekosistem entegrasyonu, bir uygulama tüm bu yetenekleri tek bir satıcıdan gerektirdiğinde gerçekten değerlidir. Gereklilik, bağımsız bir mikro servis veya odaklı bir uygulamada barkod tarama olduğunda, aynı entegrasyon, her dağıtımda hesaba katılması gereken bir yükü temsil eder.

Kitaplığın mimarisi yaşını yansıtır. LEADTOOLS, açık kaynak yönetimi, manuel yapılandırma ve dosya sistemi tabanlı lisanslama çağında tasarlandı. Bu tasarım kararlarının her biri, bağlamında anlamlıydı. Modern .NET gelişiminde - konteynerize iş yükleri, CI/CD boru hatları, sır yönetim sistemleri - bu aynı kararlar, ekiplerin aktif olarak üzerinde çalışması gereken sürtünme oluşturur.

LEADTOOLS Barcode'u dağıtmak, önce beş NuGet paketini gerektirir. PDF barkod çıkarma altıncı bir paketi ekler. Windows'ta, MSVC++ 2017 Çalışma Zamanı ana makinede bulunmalıdır. LEADTOOLS barkod uygulamasının yayımlanan çıktısı, tek paketli bir alternatiften önemli ölçüde daha büyüktür.

LEADTOOLS Barcode'un temel mimari özellikleri:

  • Dosya Tabanlı Lisans Mimarisi: Bilinen bir yolda fiziksel olarak diskte bulunan bir .LIC dosyası gerektirir, ayrıca bir geliştirici anahtar dizesi de gerekir. Kitaplığın başlatılması için her ikisinin de çalışma zamanında erişilebilir olması gerekir.
  • İki Katmanlı Lisans Modeli: Geliştirme lisansları ve dağıtım lisansları ayrı fiyatlandırılır ve ayrı elde edilir. Üretim dağıtım teklifleri LEADTOOLS satış ekibiyle iletişim gerektirir.
  • Çoklu Paket Kurulumu: Minimum barkod yeteneğine sahip bir kurulum, Leadtools.Barcode, Leadtools, Leadtools.Codecs, Leadtools.Codecs.Png ve Leadtools.Codecs.Jpeg gerektirir. Her ek görüntü formatı kendi codec paketi gerektirir.
  • Yerel Çalışma Zamanı Bağımlılığı: Windows dağıtımları, .NET çalıştırma zamanının yanı sıra MSVC++ 2017 Çalışma Zamanını gerektirir.
  • Açık Semboloji Beyanı: Barkod okuma, hangi formatların taranacağını belirten BarcodeSymbology enum değerlerinden oluşan bir dizinin geçirilmesini gerektirir. Atlanan formatlar tespit edilemeyecektir.
  • Katmanlı Başlatma Dizisi: Lisans dosyasını yükledikten sonra, uygulama lisansın süresinin dolmadığını ve gerekli her bir özelliğin — 1D okuma, 2D okuma, yazma — bireysel olarak kilidi açıldığını doğrulamalıdır ve BarcodeEngine oluşturulmadan önce.
  • 40+ Desteklenen Sembolojiler: Kapsamlı bir görüntüleme platformunun bir parçası olarak 1D ve 2D barkod türlerinde güçlü format kapsama alanı.

Dosya Temelli Lisans Mimarisi

LEADTOOLS başlatma, ilk barkod işleminden önce yaklaşık 20 satırlık kod gerektirir. Dizi, dosya yolu çözümlemesini, süre doğrulamasını ve özellik başına kilit kontrolünü kapsar:

using Leadtools;
using Leadtools.Barcode;

RasterSupport.SetLicense(
    @"C:\LEADTOOLS23\Support\Common\License\LEADTOOLS.LIC",
    "your-developer-key-here");

if (RasterSupport.KernelExpired)
    throw new InvalidOperationException("LEADTOOLS license has expired");

if (RasterSupport.IsLocked(RasterSupportType.Barcode1DRead))
    throw new InvalidOperationException("1D barcode reading is locked");

if (RasterSupport.IsLocked(RasterSupportType.Barcode2DRead))
    throw new InvalidOperationException("2D barcode reading is locked");

if (RasterSupport.IsLocked(RasterSupportType.BarcodeWrite))
    throw new InvalidOperationException("Barcode writing is locked");

var engine = new BarcodeEngine();
using Leadtools;
using Leadtools.Barcode;

RasterSupport.SetLicense(
    @"C:\LEADTOOLS23\Support\Common\License\LEADTOOLS.LIC",
    "your-developer-key-here");

if (RasterSupport.KernelExpired)
    throw new InvalidOperationException("LEADTOOLS license has expired");

if (RasterSupport.IsLocked(RasterSupportType.Barcode1DRead))
    throw new InvalidOperationException("1D barcode reading is locked");

if (RasterSupport.IsLocked(RasterSupportType.Barcode2DRead))
    throw new InvalidOperationException("2D barcode reading is locked");

if (RasterSupport.IsLocked(RasterSupportType.BarcodeWrite))
    throw new InvalidOperationException("Barcode writing is locked");

var engine = new BarcodeEngine();
Imports Leadtools
Imports Leadtools.Barcode

RasterSupport.SetLicense("C:\LEADTOOLS23\Support\Common\License\LEADTOOLS.LIC", "your-developer-key-here")

If RasterSupport.KernelExpired Then
    Throw New InvalidOperationException("LEADTOOLS license has expired")
End If

If RasterSupport.IsLocked(RasterSupportType.Barcode1DRead) Then
    Throw New InvalidOperationException("1D barcode reading is locked")
End If

If RasterSupport.IsLocked(RasterSupportType.Barcode2DRead) Then
    Throw New InvalidOperationException("2D barcode reading is locked")
End If

If RasterSupport.IsLocked(RasterSupportType.BarcodeWrite) Then
    Throw New InvalidOperationException("Barcode writing is locked")
End If

Dim engine As New BarcodeEngine()
$vbLabelText   $csharpLabel

Bu başlatma bloğunun herhangi bir barkod okuma veya yazma işlemi çalışmadan önce başarıyla yürütülmesi gerekir. Eğer .LIC dosyası yoksa, yol yanlışsa veya dosya izinleri yanlışsa, lisans başlatma başarısız olur ve başlangıçta bir istisna olarak yüzeye çıkar.

IronBarcode Anlama

IronBarcode, .NET uygulamalarında barkod okuma ve üretim için özel olarak oluşturulmuş bir .NET barkod kütüphanesidir. Daha geniş bir görüntüleme SDK'sı içinde tek bir modül olmaktan ziyade,IronBarcode barkod işlevselliğini ana amacı olarak ele alır. Kütüphane, tüm görüntü formatı desteğini, yerel PDF barkod çıkarımını ve ek codec paketleri veya yerel çalışma zamanı bağımlılıkları gerektirmeden ML tabanlı hata düzeltmesini içeren tek bir NuGet paketi olarak dağıtılır.

IronBarcode, statik API tasarımını kullanır. Okuma ve yazma işlemleri, BarcodeReader ve BarcodeWriter üzerinde örnek oluşturma veya başlatma nesneleri gerektirmeden statik yöntem çağrıları olarak kullanılabilir. Lisans aktivasyonu, tek bir dize ataması ile yapılır. Kütüphane, tüm desteklenen50+semboloji üzerinde barkod formatlarını otomatik olarak algılar, her okuma işleminden önce beklenen formatları listeleme gereğini ortadan kaldırır.

Kitaplık, .NET Framework 4.6.2+, .NET 5, .NET 6, .NET 7, .NET 8 ve .NET 9 ile uyumluluğunu sağlayarak.NET Standard 2.0ve üzerinde hedeflenir. Desteklenen işletim sistemlerinden hiçbiri platforma özgü yerel çalışma zamanı gerektirmez.

IronBarcode'un ana özellikleri:

  • String Key Lisanslama: Lisans aktivasyonu, tek bir dize ataması gerektirir. Anahtar, bir çevresel değişkenden, bir yapılandırma dosyasından, bir sır yöneticisinden veya bir dize değeri sağlayan herhangi bir kaynaktan gelebilir.
  • Tek NuGet Paketi: Tüm görüntü formatı desteği, PDF çıkarma ve barkod yetenekleri IronBarcode içinde yer alır. Ek codec paketleri gerekli değildir.
  • Statik Akıcı API: BarcodeReader.Read() ve BarcodeWriter.CreateBarcode() statik giriş noktalarıdır. Motor örnekleri veya codec nesneleri oluşturulmasına gerek yoktur.
  • Otomatik Format Algılama: Çağrı yapan kişinin beklenen formatları belirlemesini gerektirmeden, desteklenen50+semboloji üzerinde okur.
  • Yerleşik PDF Desteği: PDF barkod çıkarımı, ek bir kurulum olmadan temel pakete dahildir.
  • 50+ Desteklenen Sembolojiler: Code 128, Code 39, QR Code, Data Matrix, PDF417, EAN-13 ve UPC-A dahil olmak üzere tüm ana 1D ve 2D barkod formatlarını kapsar.
  • ML Hata Düzeltmesi: Makine öğrenimi tabanlı görüntü düzeltme, zarar görmüş veya düşük kaliteli barkod görüntülerindeki okuma doğruluğunu artırır.

Özellik Karşılaştırması

Aşağıdaki tablo, LEADTOOLS Barkod ve IronBarcode arasındaki temel farklılıkları vurgular:

Özellik LEADTOOLS Barkod IronBarcode
Lisans modeli Dosya + anahtar (iki katmanlı) Sadece anahtar (tek katmanlı)
SDK ayak izi 5+ paket + yerel çalışma zamanı 1 paket
Başlatma kodu 20+ satır 1 satır
Docker dağıtımı Dosya montajı gerekli Çevre değişkeni
PDF barkod çıkarımı Ayrı paket Yerleşik
Otomatik format algılama Semboloji listesi gerektirir Evet (50+ format)
Toplam sembolojiler 40+ 50+
ML hata düzeltmesi Hayır Evet

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

Özellik LEADTOOLS Barkod IronBarcode
Lisanslama
Lisans modeli Dosya + geliştirici anahtarı Sadece dize anahtarı
Lisans katmanları Geliştirme + Dağıtım (ayrı) Tek süresiz lisans
Dağıtım fiyatlandırması Satışla iletişime geçin Yayınlanmış fiyatlandırma
Çevre değişkeninde lisans Kısmi (sadece anahtar, dosya hala gerekli) Evet
Sır yönetiminde lisans Dosya hala gereklidir Evet (sadece dize)
Kurulum
NuGet paketleri gerekli 5+ 1
Yerel çalışma zamanı bağımlılığı MSVC++ 2017 (Windows) None
PDF destek paketi Ayrı (Leadtools.Codecs.Pdf) Dahil
Yayınlanmış çıktı boyutu Daha büyük (çok paketli + yerel bağımlılıklar) Daha küçük (tek paket)
Okuma
1D sembolojiler 25+ 30+
2D sembolojiler 15+ 15+
Otomatik format algılama Semboloji listesi gerektirir Evet (50+ format)
Açıkça semboloji deklarasyonu gerekli Evet Hayır
PDF barkod çıkarımı Evet (ayrı paket) Evet (yerleşik)
ML hata düzeltmesi Hayır Evet
Çoklu barkod algılama Evet Evet
Üretim
Kod 128 üretimi Evet Evet
QR kod üretimi Evet Evet
QR kodu logo markalama Hayır Evet
Akıcı üretim API'si Hayır Evet
Çıkış formatları PNG, JPEG, BMP PNG, JPEG, BMP, SVG, HTML, PDF
API Tasarımı
API stili Örnek tabanlı (motor + kodekler) Statik akışkan
Başlatma satırları 20+ 1
Görüntü yükleme katmanı RasterCodecs (ayrı) Otomatik
Platform
Çapraz platform Kısmi (yerel bağımlılıklar) Tam (.NET Standard)
Docker / konteyner desteği Dosya montajı gerekli Çevre değişkeni
.NET Standard 2.0 Evet Evet
.NET 8 / .NET 9 Evet Evet

Lisans Mimarisi

Lisans mimarisi, modern altyapıya dağıtım yapan ekipler için bu iki kütüphane arasındaki en önemli farktır.

LEADTOOLS Yaklaşımı

LEADTOOLS lisansı, bilinen bir yolda dosya sisteminde fiziksel olarak bulunan bir .LIC dosyası gerektirir, ayrıca RasterSupport.SetLicense'a geçirilen bir geliştirici anahtar dizesi de gereklidir. SetLicense çağırıldıktan sonra, uygulama lisansın süresinin dolmadığını ve her barkod özelliğinin bireysel olarak kilidinin açıldığını doğrulamalıdır. Ancak tüm kontroller geçtikten sonra bir BarcodeEngine oluşturulabilir:

using Leadtools;
using Leadtools.Barcode;

RasterSupport.SetLicense(
    @"C:\LEADTOOLS23\Support\Common\License\LEADTOOLS.LIC",
    "your-developer-key-here");

if (RasterSupport.KernelExpired)
    throw new InvalidOperationException("LEADTOOLS license has expired");

if (RasterSupport.IsLocked(RasterSupportType.Barcode1DRead))
    throw new InvalidOperationException("1D barcode reading is locked");

if (RasterSupport.IsLocked(RasterSupportType.Barcode2DRead))
    throw new InvalidOperationException("2D barcode reading is locked");

if (RasterSupport.IsLocked(RasterSupportType.BarcodeWrite))
    throw new InvalidOperationException("Barcode writing is locked");

var engine = new BarcodeEngine();
using Leadtools;
using Leadtools.Barcode;

RasterSupport.SetLicense(
    @"C:\LEADTOOLS23\Support\Common\License\LEADTOOLS.LIC",
    "your-developer-key-here");

if (RasterSupport.KernelExpired)
    throw new InvalidOperationException("LEADTOOLS license has expired");

if (RasterSupport.IsLocked(RasterSupportType.Barcode1DRead))
    throw new InvalidOperationException("1D barcode reading is locked");

if (RasterSupport.IsLocked(RasterSupportType.Barcode2DRead))
    throw new InvalidOperationException("2D barcode reading is locked");

if (RasterSupport.IsLocked(RasterSupportType.BarcodeWrite))
    throw new InvalidOperationException("Barcode writing is locked");

var engine = new BarcodeEngine();
Imports Leadtools
Imports Leadtools.Barcode

RasterSupport.SetLicense("C:\LEADTOOLS23\Support\Common\License\LEADTOOLS.LIC", "your-developer-key-here")

If RasterSupport.KernelExpired Then
    Throw New InvalidOperationException("LEADTOOLS license has expired")
End If

If RasterSupport.IsLocked(RasterSupportType.Barcode1DRead) Then
    Throw New InvalidOperationException("1D barcode reading is locked")
End If

If RasterSupport.IsLocked(RasterSupportType.Barcode2DRead) Then
    Throw New InvalidOperationException("2D barcode reading is locked")
End If

If RasterSupport.IsLocked(RasterSupportType.BarcodeWrite) Then
    Throw New InvalidOperationException("Barcode writing is locked")
End If

Dim engine As New BarcodeEngine()
$vbLabelText   $csharpLabel

Bu dosya tabanlı model, modern sır yönetim sistemlerinden önce gelmektedir. .LIC dosyası, her ortamda uygulamanın çalıştığı her yerde sağlanmalıdır: geliştirici makineleri, CI yapı etmenleri, geçiş sunucuları ve üretim sunucuları.

IronBarcode Yaklaşımı

IronBarcode'un lisans başlatılması tek bir satırdır:

IronBarCode.License.LicenseKey = "YOUR-LICENSE-KEY";
IronBarCode.License.LicenseKey = "YOUR-LICENSE-KEY";
Imports IronBarCode

IronBarCode.License.LicenseKey = "YOUR-LICENSE-KEY"
$vbLabelText   $csharpLabel

O anahtar bir ortam değişkeninden, bir yapılandırma dosyasından veya bir gizli anahtar yöneticisinden - bir dize nereden gelebiliyorsa oradan gelebilir. Yer tespiti yapılacak dosya yok, yazılacak sona erme kontrolü yok ve doğrulanacak özellik kilidi yok. Lisans kurulumu ve dağıtım seçenekleri için, belgeler tüm kalıpları kapsar: ortam değişkenleri, appsettings.json, Azure Key Vault ve daha fazlası.

Docker ve Konteyner Dağıtımı

Lisans mimarisi farkı, bir Dockerfile yazarken somut hale gelir.

LEADTOOLS Yaklaşımı

LEADTOOLS Docker dağıtımı, .LIC dosyasının konteyner imajına kopyalanmasını veya çalışma esnasında bir hacim olarak bağlanmasını gerektirir:

FROM mcr.microsoft.com/dotnet/aspnet:8.0

WORKDIR /app
COPY publish/ .

# The license file must be physically present in the container
COPY LEADTOOLS.LIC /app/license/LEADTOOLS.LIC

ENV LEADTOOLS_LICENSE_PATH=/app/license/LEADTOOLS.LIC
ENV LEADTOOLS_DEVELOPER_KEY=your-developer-key

ENTRYPOINT ["dotnet", "YourApp.dll"]

Bu yaklaşım aşağı akış komplikasyonlarına sahiptir. Bir lisans anahtarını döndürmek veya iptal etmek, görüntünün yeniden inşa edilmesini veya hacmin yeniden monte edilmesini gerektirir. CI/CD boru hattı, ya .LIC dosyasını işlemeli ya da yapı zamanı sırasında base64 kodlanmış bir sırdan çözmelidir. Artık anahtar-değer çiftleri için tasarlanan Kubernetes sırları dosya içeriğini depolamalıdır. Geçici konteynerleri çalıştıran ekipler, her yeni düğümde dosya temin etme sorununu çözmek zorundadır.

IronBarcode Yaklaşımı

IronBarcode konteynerde dosya gerektirmez:

FROM mcr.microsoft.com/dotnet/aspnet:8.0

WORKDIR /app
COPY publish/ .

ENV IRONBARCODE_LICENSE=your-license-key

ENTRYPOINT ["dotnet", "YourApp.dll"]

Ortam değişkeni modeli, Docker sırları, Kubernetes sırları, AWS Secrets Manager, Azure Anahtar Kasası ve HashiCorp Vault ile sorunsuz çalışır - bir diziyi konteyner ortamına enjekte edebilen herhangi bir sistem. Hem Alpine hem de Debian temel görüntülerini kapsayan tam bir Docker ve Linux dağıtım kılavuzu mevcuttur.

Barkod Okuma

LEADTOOLS Yaklaşımı

LEADTOOLS okuması, görüntüyü yüklemek için bir RasterCodecs örneği, taramak için bir BarcodeEngine örneği ve aranacak formatları belirten açık bir BarcodeSymbology değer dizisi oluşturulmasını gerektirir. Diziden bir sembolojinin çıkarılması, LEADTOOLS'un o tür barkodları algılamayacağı anlamına gelir:

using Leadtools;
using Leadtools.Barcode;
using Leadtools.Codecs;

using var codecs = new RasterCodecs();
using var image = codecs.Load(imagePath);
var engine = new BarcodeEngine();

var symbologies = new[]
{
    BarcodeSymbology.Code128,
    BarcodeSymbology.QR,
    BarcodeSymbology.DataMatrix,
    BarcodeSymbology.EAN13,
    BarcodeSymbology.UPCA
};

var barcodes = engine.Reader.ReadBarcodes(
    image,
    LogicalRectangle.Empty,
    0,
    symbologies);

return barcodes.Select(b => b.Value).ToArray();
using Leadtools;
using Leadtools.Barcode;
using Leadtools.Codecs;

using var codecs = new RasterCodecs();
using var image = codecs.Load(imagePath);
var engine = new BarcodeEngine();

var symbologies = new[]
{
    BarcodeSymbology.Code128,
    BarcodeSymbology.QR,
    BarcodeSymbology.DataMatrix,
    BarcodeSymbology.EAN13,
    BarcodeSymbology.UPCA
};

var barcodes = engine.Reader.ReadBarcodes(
    image,
    LogicalRectangle.Empty,
    0,
    symbologies);

return barcodes.Select(b => b.Value).ToArray();
Imports Leadtools
Imports Leadtools.Barcode
Imports Leadtools.Codecs

Dim barcodes As BarcodeData()

Using codecs As New RasterCodecs()
    Using image As RasterImage = codecs.Load(imagePath)
        Dim engine As New BarcodeEngine()

        Dim symbologies As BarcodeSymbology() = {
            BarcodeSymbology.Code128,
            BarcodeSymbology.QR,
            BarcodeSymbology.DataMatrix,
            BarcodeSymbology.EAN13,
            BarcodeSymbology.UPCA
        }

        barcodes = engine.Reader.ReadBarcodes(
            image,
            LogicalRectangle.Empty,
            0,
            symbologies)
    End Using
End Using

Return barcodes.Select(Function(b) b.Value).ToArray()
$vbLabelText   $csharpLabel

IronBarcode Yaklaşımı

IronBarcode, desteklenen 50'den fazla sembolojideki formatları otomatik olarak algılar. Dosya yolu doğrudan iletilir; görüntü yükleme katmanı veya semboloji dizisi gerekli değildir:

using IronBarCode;

var results = BarcodeReader.Read(imagePath);
return results.Select(r => r.Value).ToArray();
using IronBarCode;

var results = BarcodeReader.Read(imagePath);
return results.Select(r => r.Value).ToArray();
Imports IronBarCode

Dim results = BarcodeReader.Read(imagePath)
Return results.Select(Function(r) r.Value).ToArray()
$vbLabelText   $csharpLabel

Okuma seçenekleri, hız ve doğruluk ayarı ve zor görüntülerle başa çıkma hakkında daha fazla detay için, görüntülerden barkod okuma kılavuzu tam API yüzeyini kapsar.

Barkod Oluşturma

LEADTOOLS Yaklaşımı

LEADTOOLS barkod oluşturma, semboloji, değer ve sınırlarla bir BarcodeData nesnesinin oluşturulmasını, ardından açık piksel boyutları, bit derinliği, bayt sırası ve görünüm perspektifi ile boş bir RasterImage oluşturulmasını ve ardından FillCommand kullanılarak beyaz bir arka planla doldurulmasını, ardından engine.Writer.WriteBarcode() çağırılmasını, ardından RasterCodecs ile kaydedilmesini gerektirir. Bu, birden fazla nesne türü arasında beş ayrı işlemdir:

using Leadtools;
using Leadtools.Barcode;
using Leadtools.Codecs;

var engine = new BarcodeEngine();

var barcodeData = new BarcodeData(BarcodeSymbology.Code128)
{
    Value = data,
    Bounds = new LeadRect(0, 0, 400, 100)
};

using var image = new RasterImage(
    RasterMemoryFlags.Conventional,
    400, 100, 24,
    RasterByteOrder.Bgr,
    RasterViewPerspective.TopLeft,
    null, IntPtr.Zero, 0);

new FillCommand(RasterColor.White).Run(image);
engine.Writer.WriteBarcode(image, barcodeData, null);

using var codecs = new RasterCodecs();
codecs.Save(image, outputPath, RasterImageFormat.Png, 0);
using Leadtools;
using Leadtools.Barcode;
using Leadtools.Codecs;

var engine = new BarcodeEngine();

var barcodeData = new BarcodeData(BarcodeSymbology.Code128)
{
    Value = data,
    Bounds = new LeadRect(0, 0, 400, 100)
};

using var image = new RasterImage(
    RasterMemoryFlags.Conventional,
    400, 100, 24,
    RasterByteOrder.Bgr,
    RasterViewPerspective.TopLeft,
    null, IntPtr.Zero, 0);

new FillCommand(RasterColor.White).Run(image);
engine.Writer.WriteBarcode(image, barcodeData, null);

using var codecs = new RasterCodecs();
codecs.Save(image, outputPath, RasterImageFormat.Png, 0);
Imports Leadtools
Imports Leadtools.Barcode
Imports Leadtools.Codecs

Dim engine As New BarcodeEngine()

Dim barcodeData As New BarcodeData(BarcodeSymbology.Code128) With {
    .Value = data,
    .Bounds = New LeadRect(0, 0, 400, 100)
}

Using image As New RasterImage(RasterMemoryFlags.Conventional, 400, 100, 24, RasterByteOrder.Bgr, RasterViewPerspective.TopLeft, Nothing, IntPtr.Zero, 0)
    Dim fillCommand As New FillCommand(RasterColor.White)
    fillCommand.Run(image)
    engine.Writer.WriteBarcode(image, barcodeData, Nothing)

    Using codecs As New RasterCodecs()
        codecs.Save(image, outputPath, RasterImageFormat.Png, 0)
    End Using
End Using
$vbLabelText   $csharpLabel

IronBarcode Yaklaşımı

IronBarcode, görüntü oluşturmayı, arka plan doldurmayı ve kodlamayı dahili olarak ele alır:

BarcodeWriter.CreateBarcode(data, BarcodeEncoding.Code128)
    .ResizeTo(400, 100)
    .SaveAsPng(outputPath);
BarcodeWriter.CreateBarcode(data, BarcodeEncoding.Code128)
    .ResizeTo(400, 100)
    .SaveAsPng(outputPath);
BarcodeWriter.CreateBarcode(data, BarcodeEncoding.Code128) _
    .ResizeTo(400, 100) _
    .SaveAsPng(outputPath)
$vbLabelText   $csharpLabel

Barkod görüntüleri oluştururken,IronBarcode API, biçim dönüştürme, döndürme, marjlar ve stilizasyonu eforsuz bir zincir aracılığıyla ortaya çıkarır.

API Eşleme Başvurusu

LEADTOOLS Barkod IronBarcode Notlar
RasterSupport.SetLicense(path, key) IronBarCode.License.LicenseKey = "key" Sadece anahtar - dosya yok
RasterSupport.KernelExpired (removed) Sona erme kontrolü gerekmez
RasterSupport.IsLocked(RasterSupportType.Barcode1DRead) (removed) Tüm özellikler dahildir
RasterSupport.IsLocked(RasterSupportType.Barcode2DRead) (removed) Tüm özellikler dahildir
RasterSupport.IsLocked(RasterSupportType.BarcodeWrite) (removed) Tüm özellikler dahildir
new BarcodeEngine() Statik — örnek yok BarcodeReader, BarcodeWriter statik
new RasterCodecs() (removed) Dosya yolunu doğrudan geçir
codecs.Load(imagePath) (removed) Dosya yolunu doğrudan geçir
engine.Reader.ReadBarcodes(image, rect, 0, symbologies) BarcodeReader.Read(imagePath) Sembolojileri otomatik algılar
BarcodeData.Value result.Value Aynı özellik adı
BarcodeData.Symbology result.Format Özellik yeniden adlandırıldı
new BarcodeData(BarcodeSymbology.Code128) BarcodeWriter.CreateBarcode(data, BarcodeEncoding.Code128) Akıcı oluşturma
BarcodeSymbology.Code128 BarcodeEncoding.Code128 Namespace değişikliği
BarcodeSymbology.QR BarcodeEncoding.QRCode Ad değişikliği
BarcodeSymbology.DataMatrix BarcodeEncoding.DataMatrix Aynı ad
BarcodeSymbology.PDF417 BarcodeEncoding.PDF417 Aynı ad
BarcodeSymbology.EAN13 BarcodeEncoding.EAN13 Aynı ad
BarcodeSymbology.UPCA BarcodeEncoding.UPCA Aynı ad
engine.Writer.WriteBarcode(image, data, null) + codecs.Save(...) .SaveAsPng(path) Bir yöntem zinciri
new RasterImage(...) + new FillCommand(RasterColor.White).Run(image) (removed) IronBarcode içinde dahili

Ekipler LEADTOOLS Barkoddan IronBarcode'a Geçmeyi Düşündüğünde

Konteyner ve Bulut Dağıtımı

Docker, Kubernetes veya sunucusuz ortamlara iş yüklerinin geçişini yapan ekipler, dosya tabanlı lisanslama modelini somut bir operasyonel sorun olarak görürler. Her yeni konteyner örneği, her yeni bulut bölgesi ve her yeni ortam, uygulama başlamadan önce sağlanmış ve erişilebilir bir .LIC dosyasına sahip olmalıdır. Dize değerli sırlar için tasarlanmış sır yönetim sistemleri, dosya tabanlı eserleri düzgün bir şekilde karşılamaz. Yapılandırma için ortam değişkeni enjeksiyonunda standart hale gelmiş ekipler, LEADTOOLS'un normal gizli anahtar iş akışlarının dışında var olan ayrı bir sağlama adımı gerektirdiğini fark ederler. Dağıtımların hacmi arttığında - otomatik ölçeklendirme, mavi-yeşil dağıtım, çok-bölge kopyalama - dosya temini operasyonel maliyeti onunla birlikte ölçeklenir.

SDK Ayak İzi ve Bağımlılık Yönetimi

Barkod okuma veya oluşturma bir hizmetin birincil veya tek gereksinimiyse, beş paketlik LEADTOOLS kurulumu ve MSVC++ 2017 Runtime bağımlılığı, konteyner görüntü boyutunu etkileyen yük, serverless fonksiyonlarda soğuk başlatma gecikmesi ve CI/CD hatlarındaki oluşturma sürelerini temsil eder. Hafif mikro hizmetler veya Lambda tarzı fonksiyonlar oluşturan ekipler, barkoda özgü bir gereksinimi karşılamak için tam bir görüntüleme SDK'sını dahil etmenin, kod gözden geçirmelerde ve mimari incelemelerde gerekçelendirilmesi zor bir bağımlılık yüzeyi yarattığını bulurlar. Gelecekteki bir platform yükseltmesi yerel bir çalışma zamanı bağımlılığı değişikliği gerektirdiğinde, bu iş servisi sürdürme ekibine düşer.

Fiyatlandırma Şeffaflığı

Bir projeyi geliştirmeye başlamadan önce bütçelendirmesi gereken geliştirme ekipleri, LEADTOOLS'un yayınlanan fiyatlandırmasından tam bir maliyet resmi elde edemezler. Geliştirme lisansları, geliştirici başına yılda yaklaşık 1.469 USD'den başlar, ancak üretim dağıtım lisansları sunucu uygulamaları için satış yoluyla ayrı olarak teklif edilir. Beş geliştirici ve üç üretim sunucusuna gönderim yapan bir ekip, LEADTOOLS'un bütçe dahilinde olduğunu onaylamadan önce özel bir teklif almalıdır. Yayınlanan fiyatlandırmaya dayanan satın alma kararları almak isteyen ekipler — seçenekleri karşılaştırarak, iç onay alarak veya çok yıllı bütçeler planlayarak — bu modelin değerlendirme tamamlanmadan önce bir satış görüşmesi gerektirdiğini bulurlar.

Sadece Barkod Gereksinimleri

OCR, DICOM görüntüleme, belge açıklamaları veya LEADTOOLS paketinin diğer özelliklerini gerektirmeyip sadece barkod okuma veya oluşturma ihtiyacı olan uygulamalar, ihtiyaçlarının gerektirdiğinden daha geniş bir platform için ödeme yapmaktadır. LEADTOOLS'un entegrasyon değeri — OCR, barkod ve belge işleme modülleri arasında veri geçirebilme yeteneği — gerçektir, ancak bu sadece o paket içinde birden fazla özelliğin aktif olarak kullanılması durumunda geçerlidir. Gereklilik bir web API'sinde barkod taramaya veya bir belge işleme hattında oluşturma ile sınırlı olduğunda, odaklanmış bir barkod kütüphanesi gereksinimi doğrudan adresler, kapsamlı bir görüntüleme platformunun ağırlığını taşımadan.

Genel Geçiş Dikkat Edilmesi Gereken Hususlar

Lisans Başlatma Değiştirme

Tüm LEADTOOLS başlatma bloğu — dosya yolu, sona erme kontrolü ve her özellik kilidi doğrulaması — tek bir satır ile değiştirilir.IronBarcode lisans anahtarı, dizeleri saklayan herhangi bir gizli anahtar yönetim sistemine kaydedilebilir:

// Replace the entire LEADTOOLS initialization block with:
IronBarCode.License.LicenseKey = Environment.GetEnvironmentVariable("IRONBARCODE_LICENSE");
// Replace the entire LEADTOOLS initialization block with:
IronBarCode.License.LicenseKey = Environment.GetEnvironmentVariable("IRONBARCODE_LICENSE");
' Replace the entire LEADTOOLS initialization block with:
IronBarCode.License.LicenseKey = Environment.GetEnvironmentVariable("IRONBARCODE_LICENSE")
$vbLabelText   $csharpLabel

Docker Ortam Değişkeni Kalıbı

Herhangi bir Dockerfile'daki COPY LEADTOOLS.LIC satırı tamamen kaldırılır. Lisans, çalışma zamanında bir ortam değişkeni aracılığıyla sağlanır ve tüm standart sır enjeksiyon mekanizmalarıyla çalışır:

# Remove: COPY LEADTOOLS.LIC /app/license/LEADTOOLS.LIC
# Remove: ENV LEADTOOLS_LICENSE_PATH=/app/license/LEADTOOLS.LIC
# Add:
ENV IRONBARCODE_LICENSE=your-license-key

Paket Kaldırma

Beş LEADTOOLS paketi — ve opsiyonel PDF codec'i — kaldırılır ve tek bir paketle değiştirilir:

dotnet remove package Leadtools.Barcode
dotnet remove package Leadtools
dotnet remove package Leadtools.Codecs
dotnet remove package Leadtools.Codecs.Png
dotnet remove package Leadtools.Codecs.Jpeg
# If added:
dotnet remove package Leadtools.Codecs.Pdf

dotnet add package BarCode
dotnet remove package Leadtools.Barcode
dotnet remove package Leadtools
dotnet remove package Leadtools.Codecs
dotnet remove package Leadtools.Codecs.Png
dotnet remove package Leadtools.Codecs.Jpeg
# If added:
dotnet remove package Leadtools.Codecs.Pdf

dotnet add package BarCode
SHELL

Ek IronBarcode Yetenekleri

Yukarıdaki bölümlerde kapsanan yeteneklerin ötesinde,IronBarcode ortak .NET barkod senaryoları ile ilgili aşağıdaki özellikleri sağlar:

  • PDF Barkod Çıkarma: Çok sayfalı PDF belgelerinden barkodları otomatik sayfa iterasyonu ve her sonuç üzerine PageNumber raporlama ile okuyun — sayfa döngüsü gerekli değildir.
  • ML Tabanlı Hata Düzeltme: Makine öğrenimi görüntü ön işleme, hasarlı, düşük kontrastlı veya döndürülmüş barkod görüntülerinde okuma doğruluğunu artırır, ekstra yapılandırma gerektirmez.
  • Asenkron Yığın İşleme: BarcodeReader.ReadAsync() asenkron okuma desteği sunar, bu da yüksek verimli yığın işlemesine olanak tanır ve iş parçacıklarını engellemeden.
  • QR Kod Logo Markalandırma: QRCodeWriter, QR kodun merkezine bir logo görüntüsü yerleştirilmesini destekler ve yerleşik hata düzeltme kullanarak taranabilirliği korumaya yardımcı olur.
  • SVG ve HTML Çıkışı: BarcodeWriter, üretilen barkodları ölçeklenebilir SVG dosyaları olarak veya çevrim içi HTML elemanları olarak çıkartabilir, raster görüntü formatlarının yanı sıra.
  • BarcodeReaderOptions Ayarı: Okuma hızı, beklenen semboloji ipuçları, çoklu barkod algılama ve görüntü ön işleme, küresel durumu etkilemeden okuma başına yapılandırılabilir.

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

IronBarcode, .NET Framework 4.6.2 ve üstü, .NET 5, .NET 6, .NET 7, .NET 8, ve .NET 9'u kapsayarak .NET Standard 2.0'ı hedefler. Kütüphane, Windows, Linux ve macOS üzerinde konuşlandırmaya olanak tanıyarak platforma özgü doğal çatı gereksinimi yoktur. .NET 10'un benimsenmesi 2026'ya kadar ilerlerken, IronBarcode'un düzenli sürüm döngüsü, mevcut ve gelecekteki .NET sürümleri ile uyumluluğu güvence altına alır. Statik API tasarımı ve tek paket dağıtım modeli sürümler arasında stabil kalır, böylece sürüm yükseltmeleri uygulama başlatma kodunda veya dağıtım yapılandırmasında değişiklik gerektirmez.

Sonuç

LEADTOOLS Barkod ve IronBarcode, .NET barkod kütüphaneleri için tasarım alanında farklı noktaları temsil eder. LEADTOOLS, 30 yıllık kapsamlı bir görüntüleme SDK'sı içinde bir modüldür, dosya tabanlı bir lisanslama mimarisi, çoklu paket kurulum ve geliştirildiği dönemin mühendislik normlarını yansıtan bir miras API tasarımı taşımaktadır. IronBarcode, modern .NET için özellikle geliştirilen bir barkod kütüphanesidir, tek paket kurulumu, dize anahtarlı lisanslama ve başlatma nesneleri gerektirmeyen bir statik API ile.

LEADTOOLS Barkod, bir uygulama halihazırda LEADTOOLS'u diğer yetenekler için kullanıyorsa — OCR, DICOM görüntüleme, belge açıklaması veya form tanıma — uygun bir seçimdir. Bu bağlamlarda, aynı SDK üzerinden barkod işlevselliği eklemek, yeni bir satıcı veya lisans ilişkisi tanıtmadan mevcut yatırımı genişletir. Mevcut LEADTOOLS kurumsal anlaşmalarına sahip kuruluşlar, düşük marjinal maliyetle barkod yeteneklerini bulabilirler. LEADTOOLS görüntüleme platformunun genişliğine gerçek ihtiyaç duyan uygulamalar için modüller arasındaki entegrasyon değeri gerçektir.

IronBarcode, bir hizmetin birincil veya tek gereksinimi barkod okuma veya oluşturma olduğunda, uygulama konteynerlere veya bulut tabanlı altyapıya dağıtıldığında veya ekip, geliştirmeye başlamadan önce tahmin edilebilir bir fiyatlandırmaya ihtiyaç duyduğunda uygun bir seçimdir. Tek paket kurulum ve ortam değişkeni lisanslama modeli, modern .NET hizmetlerinin nasıl yapılandırıldığı, dağıtıldığı ve ölçeklendiği ile uyumludur. Akıcı statik API, barkod işlevselliğinin gerektirdiği başlatma ve işlem kodunu azaltır.

İki kütüphane arasındaki pratik fark, dağıtım senaryolarında en net şekilde gösterir. Bir ekip yeni bir ortam eklediğinde, yeni bir bulut bölgesine ölçeklendirdiğinde veya bir lisans kimliğini döndürdüğünde, IronBarcode, gizli anahtar yöneticisinde bir dizenin güncellenmesini gerektirir. LEADTOOLS ise bir dosyanın sağlanmasını gerektirir. Bu ayrım, LEADTOOLS mühendisliğini eleştirmez — bu, her iki mimarinin ne gerektirdiğinin bir tarifidir. Dürüst bir değerlendirme yapan ekipler, bu açıklamayı doğrudan dağıtım modellerine uygulamalı ve hangisinin uyduğuna karar vermelidir.

Sıkça Sorulan Sorular

LEADTOOLS Barcode nedir?

LEADTOOLS Barcode, 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.

LEADTOOLS Barcode ve IronBarcode arasındaki temel farklar nelerdir?

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

LEADTOOLS'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.

LEADTOOLS Barcode 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.

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

LEADTOOLS Barcode'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