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 Barcode'u Docker'da kullanmak için, bir lisans dosyasını belirli bir yolda konteynerinize monte edersiniz. Bu dosya her dağıtımda taşınmalıdır. Ortam değişkenleri yeterli değildir. Her LEADTOOLS dağıtımı bir dosya yönetim problemidir.

Bu, LEADTOOLS mühendisliğine bir eleştiri değildir - konteynerler icat edilmeden önce tasarlanmış 30 yıllık bir lisans mimarisini yansıtır. Ama 2026'da, CI/CD boru hattiniz bir konteyner imaji oluşturup itmek zorunda kaldiginda, ya bir .LIC dosyasini imaja ekliyorsunuz ya da calisma sirasinda hacim olarak bagliyorsunuz. Her iki sekilde de, barkod kutuphaneniz başlatmadan once dosya sistemine erişim gerektirir. Bu karsilastirmanin inceledigi temel takas budur.

LEADTOOLS Barcode'u Anlamak

LEADTOOLS Barcode, LEAD Technologies'in 1990'dan beri sürekli gelişim içinde olan kapsamlı doküman görüntüleme SDK'sının bir parçasıdır. Barkod modülü 40'tan fazla semboloji destekler ve OCR, form işleme, PDF manipülasyonu ve görüntüleme gibi daha geniş LEADTOOLS ekosistemi ile sıkı bir şekilde entegre olur. Bu ekosistem entegrasyonu, uygulamanın tüm bu işlevleri tek bir tedarikçiden talep ettiği durumlarda gerçekten değerlidir. Gereksinim bir stand-alone mikroserviste veya odaklanmış bir uygulamada barkod taraması olduğunda, aynı entegrasyon her dağıtımda dikkate alınması gereken bir yükü temsil eder.

Kütüphanenin mimarisi yaşını yansıtır. LEADTOOLS, açık kaynak yönetimi, manuel yapılandırma ve dosya sistemi tabanlı lisanslamanın olduğu bir dönemde tasarlanmıştır. Bu tasarım kararlarının her biri kendi bağlamında mantıklıydı. Modern .NET geliştirmede — konteynerleştirilmiş iş yükleri, CI/CD boru hatları, gizlilik yönetim sistemleri — aynı kararlar, ekiplerin aktif şekilde etrafından dönmesi gereken sürtünmeler yaratır.

LEADTOOLS Barcode'u dağıtmak en az beş NuGet paketi gerektirir. PDF barkod çıkarımı altıncı bir paketi ekler. Windows üzerinde, ana makinede MSVC++ 2017 Runtime bulunmalıdır. Bir LEADTOOLS barkod uygulamasının yayımlanmış çıktısı yaklaşık 148 MB civarındadır.

LEADTOOLS Barcode'un temel mimari özellikleri:

  • Dosya Tabanli Lisans Mimarisi: Bilinen bir yolda fiziksel olarak diskte bulunan bir .LIC dosyasi ve bir geliştirici anahtar dizesi gerektirir. Her ikisi de çalışma zamanında kütüphaneye erişilebilir olmalıdır.
  • İki Kademeli 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ış ile iletişime geçilmesini gerektirir.
  • Çoklu Paket Kurulumu: Mininum barkod kapasitesine sahip bir kurulum Leadtools.Barcode, Leadtools, Leadtools.Codecs, Leadtools.Codecs.Png ve Leadtools.Codecs.Jpeg gerektirir. Her ek görüntü formatı kendi codec paketini gerektirir.
  • Yerel Çalışma Zamanı Bağımlılığı: Windows dağıtımları .NET çalıştırma süresine ek olarak MSVC++ 2017 Runtime gerektirir.
  • Acik Semboloji Bildirimi: Barkod okumasi, hangi formatlarda tarama yapilacagini belirten BarcodeSymbology enum degerlerinden olusan bir dizi gerektirir. Atlanan formatlar algılanmayacaktır.
  • Kademeli Başlatma Sirasi: Lisans dosyasini yukledikten sonra, uygulama lisansin suresinin dolmadigini ve gerekli her ozelligin — 1D okuma, 2D okuma, yazma — bireysel olarak kilitsiz oldugunu doğrulamak zorundadir, bir BarcodeEngine oluşturmadan once.
  • 40+ Desteklenen Semboloji: 1D ve 2D barkod türleri çapında kapsamlı bir görüntüleme platformunun parçası olarak güçlü format kapsaması.

Dosya Tabanlı Lisans Mimarisi

LEADTOOLS başlatması, ilk barkod işlemi gerçekleştirilebilmeden önce yaklaşık 20 satır kod gerektirir. Sıra dosya yolunun çözülmesini, sona erme doğrulamasını ve özellik başına kilit kontrolünü kapsar:

// LEADTOOLS:20+ satırbefore the first barcode operation
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();
// LEADTOOLS:20+ satırbefore the first barcode operation
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ğu, herhangi bir barkod okuma ya da yazma işlemi çalıştırılmadan önce başarılı bir şekilde çalıştırılmalıdır. Eger .LIC dosyasi yoksa, yol yanlissa veya dosya izinleri yanlissa, LEADTOOLS başlamaz — sessiz bir sekilde değil, operasyonu durduran bir hatayla.

IronBarcode'u Anlamak

IronBarcode .NET uygulamalarında barkod okuma ve oluşturma için özellikle tasarlanmış odaklanmış bir .NET barkod kütüphanesidir. Daha büyük bir görüntüleme SDK'sındaki bir modül olmak yerine,IronBarcodebarkod işlevselliğini birincil amacı olarak ele alır. Kütüphane, tüm görüntü formatı desteğini, yerleşik PDF barkod çıkarmayı 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 uzerinden örnek oluşturma veya başlatma nesneleri gerektirmeden statik metod cagrilari olarak mevcuttur. Lisans etkinleştirilmesi tek bir dize atamasıdır. Kütüphane, tüm50+desteklenen sembolojiler arasında barkod formatlarını otomatik olarak algılar, her okuma işleminden önce beklenen formatları belirtme ihtiyaçını ortadan kaldırır.

Kütüphane .NET Framework 4.6.2+, .NET 5, .NET 6, .NET 7, .NET 8 ve .NET 9 ile uyumluluk sağlayan.NET Standard 2.0ve üzeri hedefler. Desteklenen hiçbir işletim sisteminde platforma özgü yerel çalışma zamanı gerekmez.

IronBarcode'un ana özellikleri:

  • String Key Licensing: Lisans etkinleştirilmesi tek bir dize atamasını gerektirir. Anahtar bir ortam değişkeninden, bir yapılandırma dosyasından, bir gizlilik 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 cikarma ve barkod özellikleri IronBarcode icinde dahildir. Ek codec paketleri gerekmez.
  • Statik Akici API: BarcodeReader.Read() ve BarcodeWriter.CreateBarcode() statik giris noktalaridir. Motor örnekleri veya codec nesneleri oluşturulması gerekmez.
  • Otomatik Format Algılama: Beklenen formatları belirtme gerekliliği olmadan tüm50+desteklenen sembolojiler içinde okur.
  • Yerleşik PDF Desteği: PDF barkod çıkarması temel pakete dâhildir, ek kurulum gerekmez.
  • 50+ Desteklenen Semboloji: Code 128, Code 39, QR Code, Data Matrix, PDF417, EAN-13 ve UPC-A dâhil olmak üzere tüm büyük 1D ve 2D barkod formatlarını kapsar.
  • ML Hata Düzeltmesi: Makine öğrenimi tabanlı görüntü düzeltmesi, hasarlı veya düşük kaliteli barkod resimlerindeki okuma başarısını artırır.

Özellik Karşılaştırması

Aşağıdaki tablo,LEADTOOLS BarcodeveIronBarcodearasındaki temel farkları öne çıkarır:

Özellik LEADTOOLS Barcode IronBarcode
Lisans modeli Dosya + anahtar (iki kademeli) Sadece anahtar (tek kademeli)
SDK kapladığı alan 5+ paket + yerel çalışma zamanı 1 paket
Başlatma kodu 20+ satır 1 satır
Docker konuşlandırması Dosya monte edilmesi gerekli Ortam değişkeni
PDF barkod çıkarımı Ayrı paket Yerleşik
Otomatik format algılama Sınırlı Evet
Toplam sembolojiler 40+ 50+
ML hata düzeltmesi Hayır Evet

Detayli Özellik Karsilastirmasi

Özellik LEADTOOLS Barcode IronBarcode
Lisanslama
Lisans modeli Dosya + geliştirici anahtarı Sadece dize anahtarı
Lisans kademeleri Geliştirme + Dağıtım (ayrı) Tek süresiz lisans
Dağıtım fiyatlandırması Satış ile iletişime geçin Yayınlanmış fiyatlandırma
Lisansa ortam değişkeninde Kısmi (sadece anahtar, hala dosya gerekli) Evet
Lisansa gizlilik yöneticisinde Hala dosya gerekli Evet (sadece dize)
Kurulum
Gereken NuGet paketleri 5+ 1
Yerel çalışma zamanı bağımlılığı MSVC++ 2017 (Windows) None
PDF destek paketi Ayrica (Leadtools.Codecs.Pdf) Dahil
Yayınlanmış çıktı boyutu ~148 MB ~39 MB
Okuma
1D sembolojiler 25+ 30+
2D sembolojiler 15+ 15+
Otomatik format algılama Sınırlı Evet
Açık semboloji beyanı 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
Uretim
Kod 128 uretimi Evet Evet
QR kod uretimi Evet Evet
QR kod logo markalama Hayır Evet
Sıvı üretim API'si Hayır Evet
Cikti formatlari PNG, JPEG, BMP PNG, JPEG, BMP, SVG, HTML, PDF
API Tasarımı
API tarzı Eski nesne grafiği Statik akıcı
Başlatma satırları 20+ 1
Görüntü yükleme katmanı RasterCodecs (ayrı) Otomatik
Platform
Çok platformlu Kısmi (yerel bağımlılıklar) Tam (.NET Standard)
Docker / konteyner desteği Dosya monte edilmesi gerekli Ortam değişkeni
.NET Standard 2.0 Evet Evet
.NET 8 / .NET 9 Evet Evet

Lisans Mimarisi

Bu iki kütüphane arasında, modern altyapıya dağıtan takımlar için en önemli fark lisans mimarisidir.

LEADTOOLS Yaklaşımı

LEADTOOLS lisanslama, bilinen bir yolda dosya sisteminde fiziksel olarak bulunan bir .LIC dosyasi ve RasterSupport.SetLicense'ye iletilen bir geliştirici anahtar dizesi gerektirir. SetLicense cagrildiktan sonra, uygulama lisansin suresinin dolmadigini ve her barkod ozelliginin bireysel olarak kilitsiz oldugunu doğrulamalidir. Tüm kontroller gectikten sonra bir BarcodeEngine oluşturulabilir:

// LEADTOOLS:20+ satırbefore the first barcode operation
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();
// LEADTOOLS:20+ satırbefore the first barcode operation
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 öncesine aittir. .LIC dosyasi, uygulamanin calistigi tüm ortamlarda: geliştirici makineleri, CI yapilari icin ajanlar, sirasama sunuculari ve uretim konaklarinda saglanmalidir.

IronBarcode Yaklaşımı

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

// IronBarcode: done
IronBarCode.License.LicenseKey = "YOUR-KEY";
// IronBarcode: done
IronBarCode.License.LicenseKey = "YOUR-KEY";
$vbLabelText   $csharpLabel

Bu anahtar bir ortam değişkeninden, bir yapılandırma dosyasından veya bir sır yöneticisinden - bir dize gelebilecek herhangi bir yerden gelebilir. Bulunacak dosya, yazılacak süre kontrolü veya doğrulanacak özellik kilidi yoktur. Lisans ayarlari ve dağıtim seçenekleri icin dokümantasyon tüm kaliplari kapsar: ortam degiskenleri, appsettings.json, Azure Key Vault ve daha fazlasi.

Docker ve Konteyner Dağıtımı

Lisans mimarisi farkı bir Dockerfile yazılırken somutlaşır.

LEADTOOLS Yaklaşımı

LEADTOOLS Docker dağıtimi, .LIC dosyasinin konteyner imajina kopyalanmasini veya calisma sirasinda hacim olarak baglanmasini 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ış karmaşıklıklarına yol açar. Bir lisans anahtarını döndürmek veya iptal etmek, görüntüyü yeniden oluşturmayı veya birimi yeniden monte etmeyi gerektirir. CI/CD boru hattı ya .LIC dosyasini check-in yapmali veya derleme sirasinda base64 kodlu bir gizli anahtardan decode etmeli. Anahtar-değer dizeleri icin tasarlanmis Kubernetes sırları artik dosya icerigini saklamalidir. Geçici konteynerlar çalıştıran ekipler, her yeni düğümde dosya sağlamlaştırma problemini çözmelidir.

IronBarcode Yaklaşımı

IronBarcode konteynerda dosyaya ihtiyaç duymaz:

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 Key Vault ve HashiCorp Vault ile doğrudan çalışır — bir kabın ortamına bir dize 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 vardır.

Barkod Okuma

LEADTOOLS Yaklaşımı

LEADTOOLS okuma, resmi yuklemek icin bir RasterCodecs ornegi oluşturmak, taramak icin bir BarcodeEngine ornegi oluşturmak ve hangi formatlarin aranacagini belirten acik bir BarcodeSymbology degerleri dizisi gerektirir. Diziden bir semboloji çıkarmak, LEADTOOLS'un o tür barkodları tespit etmeyeceği anlamına gelir:

// LEADTOOLS: codec, engine, explicit symbology list
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();
// LEADTOOLS: codec, engine, explicit symbology list
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 IEnumerable(Of 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, desteklenen50+sembolojiye yönelik formatları otomatik olarak algılar. Dosya yolu doğrudan geçirilir; görüntü yükleme katmanı veya semboloji dizisi gerekmez:

// IronBarcode: auto-detect, no object setup
using IronBarCode;

var results = BarcodeReader.Read(imagePath);
return results.Select(r => r.Value).ToArray();
// IronBarcode: auto-detect, no object setup
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 ayarları hakkında daha fazla ayrıntı ve zorlu görüntülerle başa çıkma için görüntülerden barkod okuma kılavuzu tüm API yüzeyini kapsar.

Barkod Oluşturma

LEADTOOLS Yaklaşımı

LEADTOOLS barkod oluşturma, sembolojiyi, degeri ve sinirlari ile bir BarcodeData nesnesi oluşturmayi gerektirir — sonra acik piksel boyutlari, bit derinligi, bayt sirasi ve gorunus perspektifi ile bir bos RasterImage oluşturmayi — daha sonra onu beyaz bir arka plan ile FillCommand kullanarak doldurmayi — sonra engine.Writer.WriteBarcode() cagirmayi — sonra RasterCodecs ile kaydetmeyi. Bu, birden fazla nesne türünde beş farklı işlemdir:

// LEADTOOLS: 5 operations,25+lines
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);
// LEADTOOLS: 5 operations,25+lines
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şturma, arka plan doldurma ve kodlamayı dahili olarak ele alır:

// IronBarcode: one method chain
BarcodeWriter.CreateBarcode(data, BarcodeEncoding.Code128)
    .ResizeTo(400, 100)
    .SaveAsPng(outputPath);
// IronBarcode: one method chain
BarcodeWriter.CreateBarcode(data, BarcodeEncoding.Code128)
    .ResizeTo(400, 100)
    .SaveAsPng(outputPath);
Imports IronBarcode

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

barkod görüntüleri oluşturma için,IronBarcodeAPI'si, stil, kenar boşlukları, döndürme ve format dönüşümünü bir dizi zorunlu kurulum nesnesi yerine akıcı bir zincir üzerinden sunar.

API Eslestirme Referansi

LEADTOOLS Barcode IronBarcode Notlar
RasterSupport.SetLicense(path, key) IronBarCode.License.LicenseKey = "key" Yalnızca anahtar — dosya yok
RasterSupport.KernelExpired (removed) Süre kontrolü gerekli değil
RasterSupport.IsLocked(RasterSupportType.Barcode1DRead) (removed) Tüm özellikler dahil
RasterSupport.IsLocked(RasterSupportType.Barcode2DRead) (removed) Tüm özellikler dahil
RasterSupport.IsLocked(RasterSupportType.BarcodeWrite) (removed) Tüm özellikler dahil
new BarcodeEngine() Statik — örnek yok BarcodeReader, BarcodeWriter statiktir
new RasterCodecs() (removed) Dosya yolunu doğrudan geçirin
codecs.Load(imagePath) (removed) Dosya yolunu doğrudan geçirin
engine.Reader.ReadBarcodes(image, rect, 0, symbologies) BarcodeReader.Read(imagePath) Sembolojileri otomatik olarak 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 Ad alanı değişikliği
BarcodeSymbology.QR BarcodeEncoding.QRCode Ad değiştirme
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) Tek bir yöntem zinciri
new RasterImage(...) + new FillCommand(RasterColor.White).Run(image) (removed) IronBarcode'a dahili

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

Konteyner ve Bulut Dağıtımı

Docker, Kubernetes veya sunucusuz ortamlara iş yüklerini taşıyan ekipler, dosya tabanlı lisanslama modelini somut bir operasyonel problem olarak karşılarlar. Her yeni konteyner ornegi, her yeni bulut bolgesi ve her yeni ortamda .LIC dosyasi saglanip erisilebilir olmalidir, yoksa uygulama başlamaz. Dize değerli sırlar için tasarlanmış sır yönetim sistemleri, dosya tabanlı eserleri temiz bir şekilde barındırmaz. Yapılandırma için ortam değişkeni enjeksiyonunu standart hale getirmiş ekipler, LEADTOOLS'un, normal sırrlar iş akışlarının dışında var olan ayrı bir sağlama adımını gerektirdiğini görürler. Dağıtımların hacmi arttığında — otomatik ölçeklendirme, mavi-yeşil dağıtım, çoklu bölge replikasyonu — dosya sağlamlaştırmasının operasyonel maliyeti buna göre artar.

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

Barkod okuma veya oluşturma bir hizmetin birincil veya tek gereksinimi olduğunda, beş paketli LEADTOOLS kurulumu ve MSVC++ 2017 Çalışma Zamanı bağımlılığı, konteyner görüntü boyutunu, sunucusuz işlevlerde soğuk başlatma gecikmesini ve CI/CD boru hatlarında derleme sürelerini etkileyen bir gereksiz yükü temsil eder. Hafif mikro hizmetler veya Lambda tarzı işlevler oluşturan ekipler, bir barkod-spesifik ihtiyaçı karşılamak için tam bir görüntüleme SDK'sı çekmenin kod incelemelerinde ve mimari incelemelerde haklı çıkması zor olan bir bağımlılık yüzeyi oluşturduğunu görürler. Gelecek bir platform yükseltmesi bir yerel çalışma zamanı bağımlılığı değişikliğini test etmeyi gerektiriyorsa, bu iş işi sürdüren ekibe düşer.

Fiyatlama Şeffaflığı

Bir projeye başlamadan önce bütçe yapmak isteyen geliştirme takımları, LEADTOOLS'tan tam bir maliyet çıktısını alamazlar. Geliştirme lisansları yıllık olarak geliştirici başına $1,295–$1,469 olarak listelenmiştir, ancak sunucu uygulamaları için üretim dağıtım lisansları satış yoluyla ayrı ayrı belirlenir. Üç üretim sunucusuna dağıtan beş geliştiricilik bir ekip, LEADTOOLS'un bütçelerine uyduğunu doğrulamadan önce özel bir teklif almak zorundadır. Yayınlanmış fiyatlandırmaya dayalı tedarik kararları vermeyi tercih eden ekipler — seçenekleri karşılaştırma, dahili onay alma veya çok yıllı bütçeleri planlama — bu modelin değerlendirme tamamlanmadan bir satış konuşması gerektirdiğini görürler.

Yalnızca Barkod Gereksinimleri

OCR, DICOM görüntüleme, doküman açıklama veya LEADTOOLS suite'nin diğer yeteneklerini gerektirmeden barkod okumak veya oluşturmak zorunda olan uygulamalar, gereksinimlerinin talep ettiğinden daha geniş bir platform için ödeme yaparlar. LEADTOOLS'un entegrasyon değeri - verileri OCR, barkod ve belge işleme modülleri arasında aktarma yeteneği - gerçek, ancak bu suite'den birden fazla özellik kullanımda olduğunda geçerlidir. Bir web API'sinde barkod tarama veya bir belge işleme hattında oluşturma gereksinimi sınırlı olduğunda, odaklanmış bir barkod kitaplığı gereksinimi doğrudan karşılar ve geniş kapsamlı bir görüntüleme platformunun ağırlığını taşımaz.

Genel Geçiş Dusunceleri

Lisans Başlatma Değişimi

LEADTOOLS başlatma bloğunun tamamı — dosya yolu, süre kontrolü ve özellik başına kilit doğrulaması — tek bir satırla değiştirilir.IronBarcodelisans anahtarı, dize saklayan herhangi bir sır yönetim sisteminde saklanabilir:

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

Herhangi bir Dockerfile'daki COPY LEADTOOLS.LIC satiri tamamen kaldırilir. Lisans çalışma zamanında bir ortam değişkeniyle sağlanır, bu da 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 isteğe bağlı PDF codec'i — kaldırılmış ve tek bir paketle değiştirilmiştir:

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 IronBarcode
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 IronBarcode
SHELL

EkIronBarcodeIlkeler

Yukarıdaki bölümlerde ele alınan yeteneklerin ötesinde,IronBarcodeortak .NET barkod senaryolarına uygun olan aşağıdaki özellikleri sağlar:

  • PDF Barkod Cikarma: Çok sayfali PDF belgelerinden barkodlari okuyun, otomatik sayfa yinelemesi ve her sonucta PageNumber raporlama ile — sayfa dongusu gerekmez.
  • ML Tabanlı Hata Düzeltme: Makine öğrenimi görüntü ön işlemesi, ek yapılandırma gerektirmeden hasarlı, düşük kontrastlı veya döndürülmüş barkod görüntülerinde okuma doğruluğunu artırır.
  • Async Batch İşleme: BarcodeReader.ReadAsync() asinron okumayi destekler, iplikleri engellemeden yuksek gecis hacimli toplu işlemeyi etkinlestirir.
  • QR Kod Logosu Markalama: QRCodeWriter tek bir metod cagrisi ile bir QR kodun ortasina bir logo resmi gommeyi destekler, taranabilirligi saglamak icin yerlesik hata düzeltme kullanarak.
  • SVG ve HTML Çiktisi: BarcodeWriter, oluşturulan barkodlari, raster görüntü formatlarina ek olarak olceklenebilir SVG dosyalari veya satir ici HTML elemanlari olarak cikartabilir.
  • BarcodeReaderOptions Ayarlama: Okuma hızı, beklenen semboloji ipuçları, çoklu barkod algılama ve görüntü ön işleme, küresel durumu etkilemeden her okuma başına ayarlanabilir.

.NET Uyumlulugu ve Gelecek Hazirikligi

IronBarcode, .NET Framework 4.6.2 ve üstü, .NET 5, .NET 6, .NET 7, .NET 8 ve .NET 9 üzerinde uyumluluk sağlayarak.NET Standard 2.0hedefler. Kütüphane, platforma özgü yerel çalışma zamanı gereksinimlerine sahip olmadığı için Windows, Linux ve macOS'da ek sağlama adımları olmadan dağıtım yapılabilmektedir. .NET 10'un benimsenmesi 2026'ya kadar ilerledikçe, IronBarcode'un düzenli yayın döngüsü mevcut ve gelecek .NET sürümleriyle uyumluluğu sağlar. Statik API tasarımı ve tek paket dağıtım modeli sürümler arasında kararlıdır, bu nedenle sürüm yükseltmeleri uygulama başlatma kodunda veya dağıtım yapılandırmasında değişiklik gerektirmez.

Sonuç

LEADTOOLS Barcode ve IronBarcode, .NET barkod kütüphaneleri için tasarım alanında farklı noktaları temsil eder. LEADTOOLS, dosya tabanlı lisanslama yapısı, çoklu paket kurulumu ve inşa edildiği dönemin mühendislik normlarını yansıtan eski bir API tasarımına sahip 30 yıllık kapsamlı bir görüntüleme SDK'sı içinde bir modüldür. IronBarcode, modern .NET için özel olarak geliştirilmiş bir barkod kütüphanesi olup, tek paket kurulumu, string anahtar lisanslama ve başlatma nesneleri gerektirmeyen statik bir API'ye sahiptir.

LEADTOOLS Barcode, bir uygulama LEADTOOLS'u diğer yetenekler — OCR, DICOM görüntüleme, belge açıklama veya form tanıma — için zaten kullandığında doğru seçimdir. Bu bağlamlarda, aynı SDK üzerinden barkod işlevselliği eklemek, yeni bir satıcı veya yeni bir lisanslama ilişkisi tanıtmadan mevcut bir yatırımı genişletir. Mevcut LEADTOOLS şirket anlaşmasına sahip olan kuruluşlar, düşük marjinal maliyetle barkod yeteneklerini bulabilir. Gerçekten de LEADTOOLS görüntüleme platformunun genişliğine ihtiyaç duyan uygulamalar için, modüller arasında entegrasyon değeri gerçektir.

IronBarcode, bir hizmetin birincil veya tek gereksinimi olarak barkod okuma veya üretme olduğunda, uygulama konteynerlere veya bulut yerel altyapıya dağıtıldığında veya ekip, geliştirme başlamadan önce öngörülebilir fiyatlamaya ihtiyaç duyduğunda doğru 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çeklendirildiği ile uyumludur. Fluent statik API, barkod işlevselliğinin gerektirdiği başlatma ve işlem kodunu azaltır.

İki kütüphane arasındaki pratik fark en belirgin şekilde dağıtım senaryolarında ortaya çıkar. Bir ekip yeni bir ortam eklediğinde, yeni bir bulut bölgesine ölçeklendirdiğinde veya bir lisans kimliği döndürdüğünde,IronBarcodebir gizli yönetici içinde bir dize güncellenmesini gerektirir. LEADTOOLS bir dosyanın sağlanmasını gerektirir. Bu farklılık LEADTOOLS mühendisliğine yönelik bir eleştiri değil, her mimarinin gerektirdiğinin bir tanımıdır. Dürüst bir değerlendirme yapan ekipler, bu tanımı doğrudan kendi dağıtım modellerine uygulamalı ve hangi mimarinin uygun olduğunu belirlemelidir.

Sıkça Sorulan Sorular

LEADTOOLS Barcode nedir?

LEADTOOLS Barcode, C# uygulamalarinda barkod oluşturmak ve okuma için .NET bir barkod kütüphanesidir. .NET projeleri için bir barkod çözümu secen geliştiricilerin degerlendirdigi birkac alternatiftir.

LEADTOOLS Barcode ve IronBarcode arasindaki temel farklar nelerdir?

IronBarcode, statik, durumsuz bir API kullanir ve örnek yönetimi gerektirmezken, LEADTOOLS Barcode tipik olarak kullanımdan önce örnek oluşturma ve konfigure etme gerektirir. IronBarcode, ayrica tüm ortamlarda yerel PDF desteği, otomatik format tanima ve tek anahtarla lisanslama sunar.

IronBarcode, LEADTOOLS Barcode'dan daha kolay mi lisanslaniyor?

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

IronBarcode, LEADTOOLS Barcode'un desteği olan tüm barkod formatlarini destekliyor mu?

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

IronBarcode yerel PDF barkod okuma desteği veriyor mu?

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

IronBarcode, LEADTOOLS Barcode'a kiyasla toplu işleme nasil yaklasir?

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

IronBarcode hangi .NET sürümlerini destekliyor?

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

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

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

LEADTOOLS'ten farkli olarak IronBarcode'u satın almadan önce degerlendirebilir miyim?

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

LEADTOOLS Barcode ve IronBarcode arasindaki fiyat farki nedir?

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

LEADTOOLS Barcode'dan IronBarcode'a geçiş yapmak kolay mi?

LEADTOOLS Barcode'dan IronBarcode'a geçiş yaptiginizda, temel olarak örnek tabanli API cagri'larini IronBarcode'un statik metodlari ile değiştirmek, lisanslamakla ilgili gereklilikleri kaldirir ve sonuc özellik adlarini guncellersiniz. Cogu geçiş, kod eklemekten ziyade azaltilmasi için yapılır.

IronBarcode, logolu QR kodları üretiyor mu?

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

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

Iron Destek Ekibi

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