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
.LICdosyası 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.PngveLeadtools.Codecs.Jpeggerektirir. 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
BarcodeSymbologyenum 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
BarcodeEngineoluş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()
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
IronBarcodeiçinde yer alır. Ek codec paketleri gerekli değildir. - Statik Akıcı API:
BarcodeReader.Read()veBarcodeWriter.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()
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"
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()
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()
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
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)
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")
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
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
PageNumberraporlama 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.

