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

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

Dynamsoft Barcode Reader, tasarlandığı konuda gerçekten mükemmeldir: canlı bir kamera beslemesinden saniyede 30 kare barkod okuma. Algoritmalar hızlıdır, semboloji desteği geniştir ve iOS ve Android'de onu sarak mobil SDK mevcut alandaki en iyi seçeneklerden biridir. Ürününüz bir çalışan tarafından telefonun bir palet etiketine doğruluğu bekleyerek yönlendirildiği bir depo tarama uygulamasıysa, Dynamsoft güvenilir bir seçenektir.

Eğer barkodlarınız internete erişemeyen bir sunucudaki PDF dosyalarında ise, kütüphane kullanım senaryosuna uygun değildir — ve lisans aktivasyonu, dağıtım yaptığınız ilk seferde size hatırlatacaktır. LicenseManager.InitLicense, ilk aktivasyonda Dynamsoft'un lisans sunucusuyla çevrimiçi bir el sıkışması gerçekleştirir ve periyodik olarak yeniden doğrular. İzole bir veri merkezinde, izole bir VPC'de veya outbound internet erişiminin kısıtlandığı herhangi bir ortamda, bu ilk aktivasyon için bir alternatif gerekir. Çevrimdışı yol — Dynamsoft'tan bir lisans içeriği bloğu elde etmek ve bunu InitLicenseFromLicenseContent üzerinden tekrar oynatmak — çalışır, fakat çoğu belge işleme iş akışı için bütçelenmiş olan operasyonel yükü arttırır.

Bu karşılaştırma kütüphane kalitesinden çok, kullanım durumu uyumuyla ilgilidir. Dynamsoft bir kamera odaklı kütüphane oluşturdu ve bunu iyi yaptı. Soru, kamera merkezli varsayımların bir sunucu tarafı belge işleme iş akışına çeviri yapıp yapamayacağıdır.

Dynamsoft Barcode Reader'ı Anlamak

Dynamsoft'un mimarisi kamera kökenini yansıtır. Başlangıç dizisi çevrimiçi bir lisans aktivasyonu gerektirir, ayar modeli, gerçek zamanlı kare işleme için uygun zaman aşımı değerlerini içerir ve API, elde taşınabilir kameranın değişken odak ve hareket bulanıklığı koşullarına ayarlı ayarları açığa çıkarır:

// Dynamsoft: license activation required at startup
using Dynamsoft.CVR;
using Dynamsoft.DBR;
using Dynamsoft.License;
using Dynamsoft.Core;

// LicenseManager.InitLicense performs an online activation on first run
int errorCode = LicenseManager.InitLicense("YOUR-DYNAMSOFT-LICENSE-KEY", out string errorMsg);
if (errorCode != (int)EnumErrorCode.EC_OK)
    throw new InvalidOperationException($"License activation failed: {errorMsg}");

using var router = new CaptureVisionRouter();

// Settings tuned for camera frame processing
SimplifiedCaptureVisionSettings settings = router.GetSimplifiedSettings(
    PresetTemplate.PT_READ_BARCODES);
settings.BarcodeSettings.ExpectedBarcodesCount = 1; // single barcode per frame
settings.Timeout = 100;                              // 100ms suits a 30fps pipeline
router.UpdateSettings(PresetTemplate.PT_READ_BARCODES, settings);
// Dynamsoft: license activation required at startup
using Dynamsoft.CVR;
using Dynamsoft.DBR;
using Dynamsoft.License;
using Dynamsoft.Core;

// LicenseManager.InitLicense performs an online activation on first run
int errorCode = LicenseManager.InitLicense("YOUR-DYNAMSOFT-LICENSE-KEY", out string errorMsg);
if (errorCode != (int)EnumErrorCode.EC_OK)
    throw new InvalidOperationException($"License activation failed: {errorMsg}");

using var router = new CaptureVisionRouter();

// Settings tuned for camera frame processing
SimplifiedCaptureVisionSettings settings = router.GetSimplifiedSettings(
    PresetTemplate.PT_READ_BARCODES);
settings.BarcodeSettings.ExpectedBarcodesCount = 1; // single barcode per frame
settings.Timeout = 100;                              // 100ms suits a 30fps pipeline
router.UpdateSettings(PresetTemplate.PT_READ_BARCODES, settings);
Imports Dynamsoft.CVR
Imports Dynamsoft.DBR
Imports Dynamsoft.License
Imports Dynamsoft.Core

' Dynamsoft: license activation required at startup

' LicenseManager.InitLicense performs an online activation on first run
Dim errorCode As Integer = LicenseManager.InitLicense("YOUR-DYNAMSOFT-LICENSE-KEY", errorMsg:=Nothing)
If errorCode <> CType(EnumErrorCode.EC_OK, Integer) Then
    Throw New InvalidOperationException($"License activation failed: {errorMsg}")
End If

Using router As New CaptureVisionRouter()

    ' Settings tuned for camera frame processing
    Dim settings As SimplifiedCaptureVisionSettings = router.GetSimplifiedSettings(PresetTemplate.PT_READ_BARCODES)
    settings.BarcodeSettings.ExpectedBarcodesCount = 1 ' single barcode per frame
    settings.Timeout = 100                              ' 100ms suits a 30fps pipeline
    router.UpdateSettings(PresetTemplate.PT_READ_BARCODES, settings)
End Using
$vbLabelText   $csharpLabel

Bu amacı için iyi tasarlanmış bir API'dır. Timeout = 100 ayarı, bir kameradan saniyede 30 kare işlediğinizde ve tek bir karede 500ms harcayamayacağınızda mantıklıdır. Yüklenen bir PDF'yi işleyen bir sunucu için, 100ms zaman aşımı işe yaramaz ve daha yoğun barkodlarda okumaların başarısız olmasına sebep olabilir.

Yönlendirici ve oturum tasarımı — new CaptureVisionRouter(), router.Dispose() — kamera oturumu semantiklerini takip eder: bir yönlendirici açarsınız, kareler işlersiniz, atarsınız. Dosya işleme için, bu yaşam döngüsü yararı olmayan gereksiz kod ekler.

PDF Sorunu

Dynamsoft Barcode Reader bazı PDF girdilerini doğrudan Windows yapılarında kabul edebilir, ancak çapraz platform dağıtımları için birçok ekip hala her PDF sayfasını CaptureVisionRouter.Capture'ye geçmeden önce bir resme önceden çevirir. Bu genellikle ayrı bir PDF işleme kütüphanesini — yaygın olarak PdfiumViewer kullanılır — entegre eder, bu da bir NuGet bağımlılığı, platforma özel yerel bir binary bağımlılığı (Windows'da pdfium.dll veya Linux'ta libpdfium) ve her PDF işlemi etrafında bir render döngüsü ekler:

// Dynamsoft PDF processing — typical cross-platform pattern with PdfiumViewer
// dotnet add package PdfiumViewer
using PdfiumViewer;
using System.Drawing.Imaging;
using Dynamsoft.CVR;
using Dynamsoft.DBR;

public List<string> ReadBarcodesFromPdf(string pdfPath)
{
    var results = new List<string>();

    using (var pdfDoc = PdfDocument.Load(pdfPath))
    using (var router = new CaptureVisionRouter())
    {
        for (int page = 0; page < pdfDoc.PageCount; page++)
        {
            // Render each page at 300 DPI
            using var image = pdfDoc.Render(page, 300, 300, true);
            using var ms = new MemoryStream();
            image.Save(ms, ImageFormat.Png);
            byte[] imageBytes = ms.ToArray();

            // Now pass rendered image bytes to the Capture Vision Router
            CapturedResult result = router.Capture(imageBytes,
                PresetTemplate.PT_READ_BARCODES);
            foreach (var item in result.GetDecodedBarcodesResult().GetItems())
                results.Add(item.GetText());
        }
    }

    return results;
}
// Dynamsoft PDF processing — typical cross-platform pattern with PdfiumViewer
// dotnet add package PdfiumViewer
using PdfiumViewer;
using System.Drawing.Imaging;
using Dynamsoft.CVR;
using Dynamsoft.DBR;

public List<string> ReadBarcodesFromPdf(string pdfPath)
{
    var results = new List<string>();

    using (var pdfDoc = PdfDocument.Load(pdfPath))
    using (var router = new CaptureVisionRouter())
    {
        for (int page = 0; page < pdfDoc.PageCount; page++)
        {
            // Render each page at 300 DPI
            using var image = pdfDoc.Render(page, 300, 300, true);
            using var ms = new MemoryStream();
            image.Save(ms, ImageFormat.Png);
            byte[] imageBytes = ms.ToArray();

            // Now pass rendered image bytes to the Capture Vision Router
            CapturedResult result = router.Capture(imageBytes,
                PresetTemplate.PT_READ_BARCODES);
            foreach (var item in result.GetDecodedBarcodesResult().GetItems())
                results.Add(item.GetText());
        }
    }

    return results;
}
Imports PdfiumViewer
Imports System.Drawing.Imaging
Imports Dynamsoft.CVR
Imports Dynamsoft.DBR
Imports System.IO

Public Function ReadBarcodesFromPdf(pdfPath As String) As List(Of String)
    Dim results As New List(Of String)()

    Using pdfDoc = PdfDocument.Load(pdfPath)
        Using router = New CaptureVisionRouter()
            For page As Integer = 0 To pdfDoc.PageCount - 1
                ' Render each page at 300 DPI
                Using image = pdfDoc.Render(page, 300, 300, True)
                    Using ms As New MemoryStream()
                        image.Save(ms, ImageFormat.Png)
                        Dim imageBytes As Byte() = ms.ToArray()

                        ' Now pass rendered image bytes to the Capture Vision Router
                        Dim result As CapturedResult = router.Capture(imageBytes, PresetTemplate.PT_READ_BARCODES)
                        For Each item In result.GetDecodedBarcodesResult().GetItems()
                            results.Add(item.GetText())
                        Next
                    End Using
                End Using
            Next
        End Using
    End Using

    Return results
End Function
$vbLabelText   $csharpLabel

Bu, üç bağımlılığın (Dynamsoft, PdfiumViewer ve platforma özel yerel bir binary), sayfa başına bir render döngüsü ve sayfa sayısıyla ölçeklenen bellek yükü oluşturur.

IronBarcode doğrudan bir PDF dosyasından okur:

// IronBarcode: PDF is native — no extra library, no render loop
// NuGet: dotnet add package BarCode
var results = BarcodeReader.Read("invoice.pdf");
foreach (var result in results)
{
    Console.WriteLine($"{result.Format}: {result.Value}");
}
// IronBarcode: PDF is native — no extra library, no render loop
// NuGet: dotnet add package BarCode
var results = BarcodeReader.Read("invoice.pdf");
foreach (var result in results)
{
    Console.WriteLine($"{result.Format}: {result.Value}");
}
Imports IronBarCode

' IronBarcode: PDF is native — no extra library, no render loop
' NuGet: dotnet add package BarCode
Dim results = BarcodeReader.Read("invoice.pdf")
For Each result In results
    Console.WriteLine($"{result.Format}: {result.Value}")
Next
$vbLabelText   $csharpLabel

Tek bir çağrı. PDF renderine ihtiyaç yok. Sayfa başına döngü yok. PDF desteği için platforma özgü yerel bir ikili yok.

Lisans Karmaşıklığı

Sunucunun internet erişimi olduğunda çevrimiçi lisans aktivasyonu basittir. Olmadığında — veya ağ politikaları dışa doğru ev sahiplerinin açıkça beyaz listeye alınmasını gerektirdiğinde — doğrulama başarısızlık yüzeyi büyür:

// Dynamsoft: error code pattern required
int errorCode = LicenseManager.InitLicense("YOUR-DYNAMSOFT-LICENSE-KEY", out string errorMsg);
if (errorCode != (int)EnumErrorCode.EC_OK)
{
    // Possible causes: network timeout, license server unreachable,
    // invalid key, expired key, activation quota exceeded, etc.
    throw new InvalidOperationException($"Dynamsoft license failed [{errorCode}]: {errorMsg}");
}
// Dynamsoft: error code pattern required
int errorCode = LicenseManager.InitLicense("YOUR-DYNAMSOFT-LICENSE-KEY", out string errorMsg);
if (errorCode != (int)EnumErrorCode.EC_OK)
{
    // Possible causes: network timeout, license server unreachable,
    // invalid key, expired key, activation quota exceeded, etc.
    throw new InvalidOperationException($"Dynamsoft license failed [{errorCode}]: {errorMsg}");
}
Imports System

' Dynamsoft: error code pattern required
Dim errorCode As Integer = LicenseManager.InitLicense("YOUR-DYNAMSOFT-LICENSE-KEY", errorMsg)
Dim errorMsg As String
If errorCode <> CType(EnumErrorCode.EC_OK, Integer) Then
    ' Possible causes: network timeout, license server unreachable,
    ' invalid key, expired key, activation quota exceeded, etc.
    Throw New InvalidOperationException($"Dynamsoft license failed [{errorCode}]: {errorMsg}")
End If
$vbLabelText   $csharpLabel

Dynamsoft ile çevrimdışı lisanslama ayrı bir iş akışıdır. Bağlantılı bir makinede, bir lisans paketi almak için başlangıçta çevrimiçi bir aktivasyon gerçekleştirilir, saklanır ve ardından bu paketi InitLicenseFromLicenseContent üzerinden tekrar oynatarak çevrimdışı makine aktive edilir:

// Dynamsoft offline license — replay a pre-fetched license bundle
int errorCode = LicenseManager.InitLicenseFromLicenseContent(
    licenseContent, out string errorMsg);
if (errorCode != (int)EnumErrorCode.EC_OK)
    throw new InvalidOperationException($"Offline activation failed: {errorMsg}");
// Dynamsoft offline license — replay a pre-fetched license bundle
int errorCode = LicenseManager.InitLicenseFromLicenseContent(
    licenseContent, out string errorMsg);
if (errorCode != (int)EnumErrorCode.EC_OK)
    throw new InvalidOperationException($"Offline activation failed: {errorMsg}");
Imports System

' Dynamsoft offline license — replay a pre-fetched license bundle
Dim errorCode As Integer = LicenseManager.InitLicenseFromLicenseContent(licenseContent, errorMsg)
Dim errorMsg As String = Nothing
If errorCode <> CType(EnumErrorCode.EC_OK, Integer) Then
    Throw New InvalidOperationException($"Offline activation failed: {errorMsg}")
End If
$vbLabelText   $csharpLabel

Bu yolla elde edilen lisans paketlerinin bir sona erme penceresi (genellikle günler ila bir yıl) vardır ve süreleri dolmadan önce yenilenmeleri gerekir, bu da bir bağlı makinenin iş akışına periyodik olarak katılması gerektiği anlamına gelir.

IronBarcode lisans etkinleştirmesi yerel olarak değerlendirilen tek bir atama:

// IronBarCode: local validation, no network required
IronBarCode.License.LicenseKey = "YOUR-LICENSE-KEY";
// IronBarCode: local validation, no network required
IronBarCode.License.LicenseKey = "YOUR-LICENSE-KEY";
' IronBarCode: local validation, no network required
IronBarCode.License.LicenseKey = "YOUR-LICENSE-KEY"
$vbLabelText   $csharpLabel

Kontrol edilecek hata kodu yok. Ağ bağımlılığı yok. Hiçbir lisans-paketi yenileme döngüsü yok. Aynı satır, bir geliştirme makinesinde, bir CI/CD çalışmasında, bir Docker konteynerında ve izole bir sunucuda çalışır.

Kamera vs Dosya Kullanım Durumları

Dynamsoft ve IronBarcode farklı birincil senaryolar için optimize edilmiştir. Aşağıdaki tablo, bu durumu evrensel olarak daha iyi bir kütüphane ilan etmek yerine açıklar:

Senaryo Dynamsoft Barcode Reader IronBarcode
Canlı kamera beslemesi (30fps) Gerçek zamanlı için optimize edilmiştir Ana kullanım durumu değil
Mobil SDK (iOS/Android) Tam SDK mevcut Sadece .NET
Sunucu tarafı dosya işleme CaptureVisionRouter üzerinden desteklenir Ana kullanım durumu
PDF barkod okuma Doğrudan Windows üzerinde; render loop common cross-platform Yerel destek
İzole konuşlandırma Çevrimdışı lisans paketi iş akışı gerektirir Kutudan çıkar çıkmaz çalışır
Docker / geçici kaplar Ortam başına lisans paketi yenileme Tek bir ortam değişkeni
Çevrimdışı lisans Önceki çevrimiçi etkinleştirmeden lisans içeriği bloğu Standart lisans anahtarı
ASP.NET Core API Destekleniyor (ekstra lisans şablonu) Desteklenen
Azure Fonksiyonları İlk etkinleştirme için giden ağ Ağ gereksinimi yok
Barkod oluşturma Sadece Barcode Reader paketinde okuma Evet — üretim ve okuma
QR kod üretimi Barcode Reader paketinde değil Evet — QRCodeWriter

IronBarcode Anlama

IronBarcode hem barkod üretimi hem de okuma için bir .NET kütüphanesidir. API statiktir — örnek yok, imha çağrısı yok, oturum yaşam döngüsü yok. Lisans etkinleştirmesi yereldir. PDF desteği dahili olarak sağlanmıştır:

// NuGet: dotnet add package BarCode
using IronBarCode;

// License — local validation, no network call
IronBarCode.License.LicenseKey = "YOUR-LICENSE-KEY";

// Read from an image file
var results = BarcodeReader.Read("label.png");
foreach (var result in results)
    Console.WriteLine($"{result.Format}: {result.Value}");

// Read from a PDF — native, no extra library
var pdfResults = BarcodeReader.Read("manifest.pdf");

// Read with options for high-accuracy or high-throughput scenarios
var options = new BarcodeReaderOptions
{
    Speed = ReadingSpeed.Balanced,
    ExpectMultipleBarcodes = true,
   MaxParallelThreads= 4
};
var multiResults = BarcodeReader.Read("multi-barcode-sheet.png", options);
// NuGet: dotnet add package BarCode
using IronBarCode;

// License — local validation, no network call
IronBarCode.License.LicenseKey = "YOUR-LICENSE-KEY";

// Read from an image file
var results = BarcodeReader.Read("label.png");
foreach (var result in results)
    Console.WriteLine($"{result.Format}: {result.Value}");

// Read from a PDF — native, no extra library
var pdfResults = BarcodeReader.Read("manifest.pdf");

// Read with options for high-accuracy or high-throughput scenarios
var options = new BarcodeReaderOptions
{
    Speed = ReadingSpeed.Balanced,
    ExpectMultipleBarcodes = true,
   MaxParallelThreads= 4
};
var multiResults = BarcodeReader.Read("multi-barcode-sheet.png", options);
Imports IronBarCode

' License — local validation, no network call
IronBarCode.License.LicenseKey = "YOUR-LICENSE-KEY"

' Read from an image file
Dim results = BarcodeReader.Read("label.png")
For Each result In results
    Console.WriteLine($"{result.Format}: {result.Value}")
Next

' Read from a PDF — native, no extra library
Dim pdfResults = BarcodeReader.Read("manifest.pdf")

' Read with options for high-accuracy or high-throughput scenarios
Dim options As New BarcodeReaderOptions With {
    .Speed = ReadingSpeed.Balanced,
    .ExpectMultipleBarcodes = True,
    .MaxParallelThreads = 4
}
Dim multiResults = BarcodeReader.Read("multi-barcode-sheet.png", options)
$vbLabelText   $csharpLabel

Üretim de aynı şekilde basittir:

// Generate Code 128
BarcodeWriter.CreateBarcode("SHIP-7734-X", BarcodeEncoding.Code128)
    .ResizeTo(400, 100)
    .SaveAsPng("shipping-label.png");

// Generate QR with error correction and embedded logo
QRCodeWriter.CreateQrCode("https://track.example.com/7734", 500, QRCodeWriter.QrErrorCorrectionLevel.Highest)
    .AddBrandLogo("company-logo.png")
    .SaveAsPng("tracking-qr.png");

// Get bytes for HTTP response
byte[] bytes = BarcodeWriter.CreateBarcode("ITEM-001", BarcodeEncoding.Code128)
    .ResizeTo(400, 100)
    .ToPngBinaryData();
// Generate Code 128
BarcodeWriter.CreateBarcode("SHIP-7734-X", BarcodeEncoding.Code128)
    .ResizeTo(400, 100)
    .SaveAsPng("shipping-label.png");

// Generate QR with error correction and embedded logo
QRCodeWriter.CreateQrCode("https://track.example.com/7734", 500, QRCodeWriter.QrErrorCorrectionLevel.Highest)
    .AddBrandLogo("company-logo.png")
    .SaveAsPng("tracking-qr.png");

// Get bytes for HTTP response
byte[] bytes = BarcodeWriter.CreateBarcode("ITEM-001", BarcodeEncoding.Code128)
    .ResizeTo(400, 100)
    .ToPngBinaryData();
Imports System

' Generate Code 128
BarcodeWriter.CreateBarcode("SHIP-7734-X", BarcodeEncoding.Code128) _
    .ResizeTo(400, 100) _
    .SaveAsPng("shipping-label.png")

' Generate QR with error correction and embedded logo
QRCodeWriter.CreateQrCode("https://track.example.com/7734", 500, QRCodeWriter.QrErrorCorrectionLevel.Highest) _
    .AddBrandLogo("company-logo.png") _
    .SaveAsPng("tracking-qr.png")

' Get bytes for HTTP response
Dim bytes As Byte() = BarcodeWriter.CreateBarcode("ITEM-001", BarcodeEncoding.Code128) _
    .ResizeTo(400, 100) _
    .ToPngBinaryData()
$vbLabelText   $csharpLabel

Özellik Karşılaştırması

Özellik Dynamsoft Barcode Reader IronBarcode
Barkod okuma Evet — kamera optimasyonlu Evet — dosya ve belge optimasyonlu
Barkod oluşturma Hayır Evet
QR kod üretimi Hayır Evet — QRCodeWriter
Yerel PDF desteği Doğrudan Windows üzerinde; render loop common cross-platform Evet — BarcodeReader.Read(pdf)
Lisans doğrulama Çevrimiçi etkinleştirme + periyodik yeniden kontrol Yerel
İzole / çevrimdışı Lisans içeriği bloğu iş akışı Standart anahtar, çevrimdışı çalışır
Docker / kabı Ortam başına lisans paketi iş akışı Tek bir ortam değişkeni
Azure Fonksiyonları İlk etkinleştirme için giden ağ Ağ gereksinimi yok
AWS Lambda İlk etkinleştirme için giden ağ Ağ gereksinimi yok
Mobil SDK iOS ve Android mevcut Sadece .NET
Anlık kamera (30fps) Ana tasarım hedefi Bunun için tasarlanmamıştır
Kod 128 Evet Evet
QR Kodu Evet (okuma) Evet (okuma ve üretim)
Veri Matrisi Evet Evet
PDF417 Evet Evet
Aztek Evet Evet
EAN / UPC Evet Evet
Örnek yönetimi new CaptureVisionRouter() + Dispose() Statik — örnek yok
Çoklu barkod okuma BarcodeSettings üzerinde ExpectedBarcodesCount ExpectMultipleBarcodes = true
Okuma hızı kontrolü Zaman aşımı + şablon ayarlama ReadingSpeed enum
Paralel okuma Manuel iş parçacığı MaxParallelThreads
Fiyatlandırma modeli Yıllık abonelik / müzakere edilmiş süresiz $749'dan itibaren süresiz
.NET desteği .NET 6.0+ and .NET Framework 3.5+ .NET 4.6.2'dan .NET 9'a kadar
Platformlar Windows (x86/x64), Linux (x64) Windows, Linux, macOS, Docker, Azure, AWS Lambda

API Eşleme Başvurusu

Dynamsoft kodu olan ve kavramların nasıl çeviri yapıldığını anlaması gereken ekipler için:

Dynamsoft Barcode Reader IronBarcode
LicenseManager.InitLicense(key, out errorMsg) IronBarCode.License.LicenseKey = "key"
errorCode != (int)EnumErrorCode.EC_OK kontrolü Gerekli değil
LicenseManager.InitLicenseFromLicenseContent(content, out msg) Gerekli değil
new CaptureVisionRouter() Statik — örnek yok
router.Dispose() Gerekli değil
router.Capture(imagePath, PresetTemplate.PT_READ_BARCODES) BarcodeReader.Read(imagePath)
router.Capture(imageBytes, PresetTemplate.PT_READ_BARCODES) BarcodeReader.Read(imageBytes)
BarcodeResultItem.GetText() result.Value
BarcodeResultItem.GetFormatString() result.Format
SimplifiedCaptureVisionSettings üzerinden GetSimplifiedSettings() new BarcodeReaderOptions { ... }
settings.Timeout = 100 Speed = ReadingSpeed.Balanced
settings.BarcodeSettings.ExpectedBarcodesCount = 1 ExpectMultipleBarcodes = false (varsayılan)
router.UpdateSettings(template, settings) Read() 'a parametre olarak geçildi
Harici PDF kütüphanesi + sayfa işleme döngüsü BarcodeReader.Read("doc.pdf")

Takımlar Geçiş Yaptığında

Sunucu tarafı belge işleme, kamera taraması değil. En yaygın geçiş senaryosu, itibar temelinde Dynamsoft'u seçen, entegre eden ve ardından kamera merkezli API ve PDF işleme adımının belge işleme iş akışlarını uygunsuz hale getirdiğini keşfeden bir takımdır. Web uygulamasında yüklenen PDF'lerden barkod okuma, Dynamsoft'ta ekstra işlem gerektiren ancak IronBarcode'da tek bir çağrı olan temel bir kullanım örneğidir.

İzole veya sınırlı ağ ortamları. Finansal kurumlar, sağlık sistemleri ve hükümet konuşlandırmaları genellikle uygulama sunucularından dışa doğru internet bağlantılarını yasaklar. Dynamsoft'un çevrimiçi etkinleştirmesi, çevrimdışı lisans paketi iş akışı olmadan bu ortamlarda çalışmaz, bu da operasyonel adımlar ekler. Bu ortamlardaki ekipler, özel lisans doğrulamasında ağ bileşeni olmadığı için sıklıkla IronBarcode'a geçiş yaparlar.

Docker ve Kubernetes geçici konteynerler. Sık sık ölçeklenen konteyner tabanlı dağıtımlar, yinelenen lisans paketi yenilemelerini yönetmeyi zorlaştırır. IronBarcode'un lisans anahtarı, örneğe bağlı kayıt olmaksızın standart bir ortam değişkeni olarak çalışır.

Okumanın yanı sıra üretim ihtiyacı.Dynamsoft Barcode Readerpaketi sadece okuyucudur. Barkod etiketleri üretmesi, ürünler için QR kodları yazdırması veya gömülü barkodlarla gönderi manifestoları oluşturması gereken uygulamalar ikinci bir kütüphane gerektirir. Bu durumda olan ekipler, iki ayrı barkod bağımlılığı yönetimini önlemek için genellikle IronBarcode'a konsolide olur.

Basitleştirilmiş operasyonel ayak izi. Dynamsoft lisans sunucusunu erişilmesi gereken dış bağımlılıklar listesinden kaldırmak, PDF işleme kütüphanesini çıkarmak ve yönlendirici yaşam döngüsü yönetimini statik çağrılarla değiştirmek, üretimde yanlış gidebilecek şeylerin sayısını azaltır.

Sonuç

Dynamsoft Barcode Reader, özellikle mobil uygulamalarda, gerçek zamanlı kamera tabanlı barkod tarama için tasarlanmış yüksek kaliteli bir kütüphanedir. Algoritmalar, elde taşınan taramalar için değişken aydınlatma, hareket bulanıklığı ve kısmi örtülme koşulları için iyi ayarlanmıştır. Eğer bu kullanım durumunuzsa, Dynamsoft iyi rekabet eder.

Sunucu tarafı belge işleme için — PDF'lerden barkod okuma, barkod etiketleri oluşturma, izole ortamlarda çalıştırma veya Docker geçici konteynerlerinde dağıtma — kitaplığın mimarisi, her adımda daha fazla kurulum gerektiriyor. Çevrimiçi lisans etkinleştirme, çapraz platform PDF işleme deseni, kameraya optimize edilmiş zaman aşımı ayarları ve çevrimdışı lisans paketi iş akışı, mobil kamera kullanımı için oluşturmanın sonuçlarıdır. Bunlar hata değildir; farklı bir bağlam için kasıtlı tasarım seçimleridir.

IronBarcode, belge ve sunucu tarafı bağlamı için inşa edilmiştir. Yerel lisans doğrulama, yerel PDF okuma, statik API ve üretim desteği, çalışmak için çözümler yerine birinci sınıf özelliklerdir. Karar, barkodlarınızın gerçekten hangi ortamda yaşadığına bağlıdır.

Sıkça Sorulan Sorular

Dynamsoft Barcode Reader nedir?

Dynamsoft Barcode Reader, C# uygulamalarında barkod oluşturma ve okuma için bir .NET barkod kütüphanesidir. Geliştiricilerin .NET projeleri için barkod çözümü seçerken değerlendirdiği birkaç alternatiftir.

Dynamsoft Barcode Reader ile IronBarcode arasındaki temel farklar nelerdir?

IronBarcode, örnek yönetimi gerektirmeyen statik, durumsuz bir API kullanırken, Dynamsoft Barcode Reader genellikle kullanım öncesi örnek oluşturma ve yapılandırmayı gerektirir. IronBarcode ayrıca tüm ortamlarda yerel PDF desteği, otomatik format algılama ve tek anahtar lisans sunar.

IronBarcode, Dynamsoft Barcode Reader'a göre lisanslanması daha kolay mı?

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, Dynamsoft Barcode Reader'ın 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, Dynamsoft Barcode Reader'a kıyasla toplu işlemi nasıl ele alır?

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.

IronBarcode'u satın almadan önce değerlendirebilir miyim, Dynamsoft'tan farklı olarak?

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.

Dynamsoft Barcode Reader ve 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.

Dynamsoft Barcode Reader'dan IronBarcode'a geçiş yapmak kolay mı?

Dynamsoft Barcode Reader'dan IronBarcode'a geçiş esas olarak, örnek tabanlı API çağrılarını IronBarcode'un statik yöntemleriyle değiştirmeyi, lisans gerekliliklerini kaldırmayı ve sonuç özelliği adlarını güncellemeyi içerir. Çoğu geçiş, kodun azaltılmasını 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