푸터 콘텐츠로 바로가기
다른 구성 요소와 비교

DevExpress 바코드와 IronBarcode: C# 바코드 라이브러리 비교

DevExpress는 평판이 좋은 .NET UI 툴킷입니다. 그리드, 스케줄러, 차트 및 피벗 테이블 컨트롤은 정말 훌륭하며 수천 개의 Enterprise 팀에서 사용되고 있습니다. 하지만 바코드 지원은 전혀 다른 이야기입니다. DevExpress는 디자인 시 양식에 바코드를 렌더링할 수 있는 BarCodeControl(WinForms 컨트롤과 Blazor DxBarCode 태그)를 함께 제공합니다. 지원팀에 바코드 인식에 대해 문의했을 때 돌아오는 일관된 답변은 바코드 인식 기능은 존재하지 않으며 현재 추가할 계획이 없다는 것이었습니다. 바코드가 백그라운드 작업, 웹 API, PDF 문서 또는 사용자 인터페이스 양식이 없는 환경에 있는 경우 이 제어는 적용되지 않습니다.

이러한 제약 조건으로 인해 DevExpress의 바코드 기능은 DevExpress WinForms 또는 Blazor UI 내에서 바코드를 시각적으로 렌더링하는 특정 틈새 시장으로 제한됩니다. 해당 특정 분야에서는 잘 작동합니다. 하지만 서버 측 생성, 이미지 또는 PDF 읽기, Azure Functions 또는 Docker 컨테이너에서의 헤드리스 처리와 같은 다른 모든 작업에는 다른 도구가 필요합니다.

DevExpress 바코드 컨트롤 이해하기

DevExpress 바코드 기능은 DevExpress.XtraBars.BarCode 및 관련 심볼 네임스페이스에 있습니다. 독립형 라이브러리가 아닙니다. 이 서비스는 연간 약 2,499달러 이상인 DXperience Suite 에 포함되어 있습니다. 바코드 전용 NuGet 패키지는 별도로 설치할 수 없습니다.

BarCodeControl은 컨트롤 계층구조를 상속하는 WinForms 컨트롤입니다. 심볼 객체를 사용하여 구성하고 속성을 설정하면 화면에 렌더링됩니다. 렌더링을 파일로 저장하려면 DrawToBitmap를 호출해야 하며, 적절한 크기의 Bitmap가 미리 할당되어 있어야 합니다:

// DevExpress WinForms: UI control, not a library
using DevExpress.XtraBars.BarCode;
using DevExpress.XtraBars.BarCode.Symbologies;
using System.Drawing;
using System.Drawing.Imaging;

var barCode = new BarCodeControl();
var symbology = new Code128Generator();
symbology.CharacterSet = Code128CharacterSet.CharsetAuto;
barCode.Symbology = symbology;
barCode.Text = "ITEM-12345";
barCode.Module = 0.02f;  // document units, not pixels
barCode.ShowText = true;

// File output requires DrawToBitmap — you must size the Bitmap manually
barCode.Width = 400;
barCode.Height = 100;
var bitmap = new Bitmap(barCode.Width, barCode.Height);
barCode.DrawToBitmap(bitmap, new Rectangle(0, 0, barCode.Width, barCode.Height));
bitmap.Save("barcode.png", ImageFormat.Png);
bitmap.Dispose();
// DevExpress WinForms: UI control, not a library
using DevExpress.XtraBars.BarCode;
using DevExpress.XtraBars.BarCode.Symbologies;
using System.Drawing;
using System.Drawing.Imaging;

var barCode = new BarCodeControl();
var symbology = new Code128Generator();
symbology.CharacterSet = Code128CharacterSet.CharsetAuto;
barCode.Symbology = symbology;
barCode.Text = "ITEM-12345";
barCode.Module = 0.02f;  // document units, not pixels
barCode.ShowText = true;

// File output requires DrawToBitmap — you must size the Bitmap manually
barCode.Width = 400;
barCode.Height = 100;
var bitmap = new Bitmap(barCode.Width, barCode.Height);
barCode.DrawToBitmap(bitmap, new Rectangle(0, 0, barCode.Width, barCode.Height));
bitmap.Save("barcode.png", ImageFormat.Png);
bitmap.Dispose();
Imports DevExpress.XtraBars.BarCode
Imports DevExpress.XtraBars.BarCode.Symbologies
Imports System.Drawing
Imports System.Drawing.Imaging

Dim barCode As New BarCodeControl()
Dim symbology As New Code128Generator()
symbology.CharacterSet = Code128CharacterSet.CharsetAuto
barCode.Symbology = symbology
barCode.Text = "ITEM-12345"
barCode.Module = 0.02F ' document units, not pixels
barCode.ShowText = True

' File output requires DrawToBitmap — you must size the Bitmap manually
barCode.Width = 400
barCode.Height = 100
Dim bitmap As New Bitmap(barCode.Width, barCode.Height)
barCode.DrawToBitmap(bitmap, New Rectangle(0, 0, barCode.Width, barCode.Height))
bitmap.Save("barcode.png", ImageFormat.Png)
bitmap.Dispose()
$vbLabelText   $csharpLabel

여기에는 몇 가지 마찰 지점이 있습니다. 첫째, barCode.Module은 픽셀 단위가 아닌 문서 단위이므로 픽셀 단위로 생각하는 경우 불일치가 발생할 수 있습니다. 둘째, Bitmap를 할당하기 전에 최종 픽셀 크기를 알고 있어야 합니다. 셋째, 해당 컨트롤을 사용하려면 WinForms 어셈블리가 로드되어야 합니다. 즉, ASP.NET Core 최소 API 또는 콘솔 백그라운드 서비스는 바코드 이미지를 생성하기 위해서라도 Windows Forms 인프라를 로드해야 합니다.

Blazor DxBarCode 태그는 개념적으로 유사하지만 서버 측 생성 API가 아닌 UI 렌더링을 위한 Razor 컴포넌트입니다.

읽기 기능 없음

DevExpress의 공식 입장은 바코드 인식 또는 스캔 기능을 제공하지 않는다는 것입니다. 이는 향후 출시될 버전에서 채워질 공백이 아니라, 수년간 변함없이 유지되어 온 해답입니다.

DevExpress WinForms 애플리케이션으로 시작한 팀이 나중에 업로드된 이미지에서 바코드를 스캔하거나 PDF 첨부 파일에서 QR 코드를 읽어야 하는 요구 사항을 받게 되는 경우 DevExpress 툴박스는 도움이 되지 않습니다. 읽기 처리를 위해 별도의 라이브러리를 가져와야 하는데, 이로 인해 API 일관성을 유지하기 위해 이미지 생성 부분도 해당 라이브러리로 옮겨야 하는지에 대한 의문이 생깁니다.

IronBarcode 양방향으로 처리합니다.

//IronBarcodereading — works on images, PDFs, and byte arrays
// NuGet: dotnet add package IronBarcode
using IronBarCode;

var results = BarcodeReader.Read("scanned-label.png");
foreach (var result in results)
{
    Console.WriteLine($"Format: {result.Format}");
    Console.WriteLine($"Value: {result.Value}");
}
//IronBarcodereading — works on images, PDFs, and byte arrays
// NuGet: dotnet add package IronBarcode
using IronBarCode;

var results = BarcodeReader.Read("scanned-label.png");
foreach (var result in results)
{
    Console.WriteLine($"Format: {result.Format}");
    Console.WriteLine($"Value: {result.Value}");
}
Imports IronBarCode

' IronBarcode reading — works on images, PDFs, and byte arrays
' NuGet: dotnet add package IronBarcode

Dim results = BarcodeReader.Read("scanned-label.png")
For Each result In results
    Console.WriteLine($"Format: {result.Format}")
    Console.WriteLine($"Value: {result.Value}")
Next
$vbLabelText   $csharpLabel

PDF 파일을 읽는 데에는 추가 라이브러리가 필요하지 않습니다.

// Reading barcodes from a PDF — no PdfiumViewer or similar required
var pdfResults = BarcodeReader.Read("shipping-manifest.pdf");
foreach (var result in pdfResults)
{
    Console.WriteLine($"Page barcode: {result.Value}");
}
// Reading barcodes from a PDF — no PdfiumViewer or similar required
var pdfResults = BarcodeReader.Read("shipping-manifest.pdf");
foreach (var result in pdfResults)
{
    Console.WriteLine($"Page barcode: {result.Value}");
}
Imports System

' Reading barcodes from a PDF — no PdfiumViewer or similar required
Dim pdfResults = BarcodeReader.Read("shipping-manifest.pdf")
For Each result In pdfResults
    Console.WriteLine($"Page barcode: {result.Value}")
Next
$vbLabelText   $csharpLabel

Suite 패키지 문제

DevExpress 바코드 구성 요소는 단독 제품으로 판매되지 않습니다. 프로젝트에서 BarCodeControl를 사용하려면 개발자당 연간 약 2,499달러의 DXperience 제품군 라이선스가 필요합니다. 이 Suite 에는 그리드, 차트, 스케줄러, 피벗 및 기타 여러 컨트롤이 포함되어 있어 DevExpress WinForms 또는 Blazor 애플리케이션을 완벽하게 구축하는 경우에 적합합니다. 만약 백엔드 서비스에 바코드 생성 기능만 필요한 경우라면, 해당 서비스에서 전혀 사용하지 않을 UI 툴킷 전체에 대한 비용을 지불하는 셈입니다.

IronBarcode 는 독립 실행형 패키지입니다.

dotnet add package IronBarcode
dotnet add package IronBarcode
SHELL

영구 Lite 라이선스는 개발자 1인 기준 749달러부터 시작합니다. UI 툴킷은 포함되어 있지 않습니다. 바코드 생성 및 판독, 크로스 플랫폼 지원 기능만 제공되며, 그 외에는 요청하지 않은 기능은 포함되어 있지 않습니다.

헤드리스 사용 제한

서버 측 시나리오에서 BarCodeControl의 근본적인 문제는 WinForms 컨트롤이라는 점입니다. .NET 6 이상 ASP.NET Core 최소 API 프로젝트에서는 WinForms 어셈블리가 기본적으로 참조되지 않습니다. 코드-51186--@@를 인스턴스화하려면 API 프로젝트가 명시적으로 Windows를 대상으로 하고 Windows Forms 런타임을 로드하거나, API가 렌더링하지 않는 UI 인프라를 가져오는 해결 방법 참조를 추가해야 합니다.

Azure Function 소비 계획에는 UI 레이어가 전혀 없습니다. Linux 기반 이미지를 실행하는 Docker 컨테이너에서는 Windows Forms GDI+ 종속성이 완전히 누락될 수 있습니다. DevExpress는 이러한 헤드리스 환경에서의 BarCodeControl 사용을 공식적으로 지원하지 않습니다.

IronBarcode 완전한 프로그래밍 방식의 정적 API를 사용합니다.

// IronBarcode: works in WinForms, ASP.NET Core, Azure Function, console — same code
// NuGet: dotnet add package IronBarcode
using IronBarCode;

BarcodeWriter.CreateBarcode("ITEM-12345", BarcodeEncoding.Code128)
    .SaveAsPng("barcode.png");
// IronBarcode: works in WinForms, ASP.NET Core, Azure Function, console — same code
// NuGet: dotnet add package IronBarcode
using IronBarCode;

BarcodeWriter.CreateBarcode("ITEM-12345", BarcodeEncoding.Code128)
    .SaveAsPng("barcode.png");
Imports IronBarCode

' IronBarcode: works in WinForms, ASP.NET Core, Azure Function, console — same code
' NuGet: dotnet add package IronBarcode

BarcodeWriter.CreateBarcode("ITEM-12345", BarcodeEncoding.Code128) _
    .SaveAsPng("barcode.png")
$vbLabelText   $csharpLabel

이 호출은 콘솔 애플리케이션, ASP.NET Core 컨트롤러, 서비스 버스 메시지에 의해 트리거되는 Azure Function 또는 Linux에서 실행되는 Docker 컨테이너에서 모두 작동합니다. API는 환경에 따라 변경되지 않습니다. UI 어셈블리 종속성이 없습니다.

바코드를 PNG 파일 응답으로 반환하는 ASP.NET Core 엔드포인트는 다음과 같습니다.

app.MapGet("/barcode/{sku}", (string sku) =>
{
    var bytes = BarcodeWriter.CreateBarcode(sku, BarcodeEncoding.Code128)
        .ResizeTo(400, 100)
        .ToPngBinaryData();

    return Results.File(bytes, "image/png");
});
app.MapGet("/barcode/{sku}", (string sku) =>
{
    var bytes = BarcodeWriter.CreateBarcode(sku, BarcodeEncoding.Code128)
        .ResizeTo(400, 100)
        .ToPngBinaryData();

    return Results.File(bytes, "image/png");
});
Imports Microsoft.AspNetCore.Builder
Imports Microsoft.AspNetCore.Http

app.MapGet("/barcode/{sku}", Function(sku As String)
                                Dim bytes = BarcodeWriter.CreateBarcode(sku, BarcodeEncoding.Code128) _
                                    .ResizeTo(400, 100) _
                                    .ToPngBinaryData()

                                Return Results.File(bytes, "image/png")
                             End Function)
$vbLabelText   $csharpLabel

상당한 해결 방법 없이 BarCodeControl와 동등한 패턴이 없습니다.

IronBarcode이해하기

IronBarcode 바코드를 생성하고 읽는 독립형 .NET 라이브러리입니다. 이 API는 완전히 정적입니다. 관리해야 할 인스턴스도 없고, 라이프사이클을 제어할 필요도 없으며, UI에 대한 의존성도 없습니다. 생성과 읽기 작업이 모두 동일한 호출에서 이루어집니다.

// NuGet: dotnet add package IronBarcode
using IronBarCode;

// Generate Code 128
BarcodeWriter.CreateBarcode("ORDER-9921", BarcodeEncoding.Code128)
    .ResizeTo(450, 120)
    .SaveAsPng("order-label.png");

// Generate and get bytes (for HTTP responses, blob storage, etc.)
byte[] pngBytes = BarcodeWriter.CreateBarcode("ORDER-9921", BarcodeEncoding.Code128)
    .ResizeTo(450, 120)
    .ToPngBinaryData();

// Read from an image file
var results = BarcodeReader.Read("order-label.png");
Console.WriteLine(results.First().Value); // ORDER-9921
// NuGet: dotnet add package IronBarcode
using IronBarCode;

// Generate Code 128
BarcodeWriter.CreateBarcode("ORDER-9921", BarcodeEncoding.Code128)
    .ResizeTo(450, 120)
    .SaveAsPng("order-label.png");

// Generate and get bytes (for HTTP responses, blob storage, etc.)
byte[] pngBytes = BarcodeWriter.CreateBarcode("ORDER-9921", BarcodeEncoding.Code128)
    .ResizeTo(450, 120)
    .ToPngBinaryData();

// Read from an image file
var results = BarcodeReader.Read("order-label.png");
Console.WriteLine(results.First().Value); // ORDER-9921
Imports IronBarCode

' Generate Code 128
BarcodeWriter.CreateBarcode("ORDER-9921", BarcodeEncoding.Code128) _
    .ResizeTo(450, 120) _
    .SaveAsPng("order-label.png")

' Generate and get bytes (for HTTP responses, blob storage, etc.)
Dim pngBytes As Byte() = BarcodeWriter.CreateBarcode("ORDER-9921", BarcodeEncoding.Code128) _
    .ResizeTo(450, 120) _
    .ToPngBinaryData()

' Read from an image file
Dim results = BarcodeReader.Read("order-label.png")
Console.WriteLine(results.First().Value) ' ORDER-9921
$vbLabelText   $csharpLabel

라이선스 활성화는 시작 시 한 줄의 코드로 이루어집니다.

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

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

네트워크 통화가 아닙니다. 오류 처리 관련 정형화된 코드가 없습니다. 로컬 유효성 검사.

QR 코드 나란히

QR 코드는 UI 컨트롤과 프로그래밍 라이브러리 간의 API 격차를 보여줍니다.

DevExpress QR 코드 — WinForms 컨트롤:

// DevExpress: QR via BarCodeControl + QRCodeGenerator symbology
using DevExpress.XtraBars.BarCode;
using DevExpress.XtraBars.BarCode.Symbologies;

var barCode = new BarCodeControl();
var symbology = new QRCodeGenerator();
symbology.ErrorCorrectionLevel = QRCodeErrorCorrectionLevel.H;
symbology.CompactionMode = QRCodeCompactionMode.AlphaNumeric;
barCode.Symbology = symbology;
barCode.Text = "https://example.com";
barCode.Width = 500;
barCode.Height = 500;

var bitmap = new Bitmap(barCode.Width, barCode.Height);
barCode.DrawToBitmap(bitmap, new Rectangle(0, 0, barCode.Width, barCode.Height));
bitmap.Save("qr.png", ImageFormat.Png);
bitmap.Dispose();
// DevExpress: QR via BarCodeControl + QRCodeGenerator symbology
using DevExpress.XtraBars.BarCode;
using DevExpress.XtraBars.BarCode.Symbologies;

var barCode = new BarCodeControl();
var symbology = new QRCodeGenerator();
symbology.ErrorCorrectionLevel = QRCodeErrorCorrectionLevel.H;
symbology.CompactionMode = QRCodeCompactionMode.AlphaNumeric;
barCode.Symbology = symbology;
barCode.Text = "https://example.com";
barCode.Width = 500;
barCode.Height = 500;

var bitmap = new Bitmap(barCode.Width, barCode.Height);
barCode.DrawToBitmap(bitmap, new Rectangle(0, 0, barCode.Width, barCode.Height));
bitmap.Save("qr.png", ImageFormat.Png);
bitmap.Dispose();
Imports DevExpress.XtraBars.BarCode
Imports DevExpress.XtraBars.BarCode.Symbologies
Imports System.Drawing
Imports System.Drawing.Imaging

Dim barCode As New BarCodeControl()
Dim symbology As New QRCodeGenerator()
symbology.ErrorCorrectionLevel = QRCodeErrorCorrectionLevel.H
symbology.CompactionMode = QRCodeCompactionMode.AlphaNumeric
barCode.Symbology = symbology
barCode.Text = "https://example.com"
barCode.Width = 500
barCode.Height = 500

Dim bitmap As New Bitmap(barCode.Width, barCode.Height)
barCode.DrawToBitmap(bitmap, New Rectangle(0, 0, barCode.Width, barCode.Height))
bitmap.Save("qr.png", ImageFormat.Png)
bitmap.Dispose()
$vbLabelText   $csharpLabel

IronBarcode QR 코드 - 동일한 결과, UI 구성 필요 없음:

// IronBarcode: QR in one method chain
QRCodeWriter.CreateQrCode("https://example.com", 500, QRCodeWriter.QrErrorCorrectionLevel.Highest)
    .SaveAsPng("qr.png");
// IronBarcode: QR in one method chain
QRCodeWriter.CreateQrCode("https://example.com", 500, QRCodeWriter.QrErrorCorrectionLevel.Highest)
    .SaveAsPng("qr.png");
$vbLabelText   $csharpLabel

QR 코드 중앙에 브랜드 로고 추가하기:

QRCodeWriter.CreateQrCode("https://example.com", 500, QRCodeWriter.QrErrorCorrectionLevel.Highest)
    .AddBrandLogo("company-logo.png")
    .SaveAsPng("qr-branded.png");
QRCodeWriter.CreateQrCode("https://example.com", 500, QRCodeWriter.QrErrorCorrectionLevel.Highest)
    .AddBrandLogo("company-logo.png")
    .SaveAsPng("qr-branded.png");
QRCodeWriter.CreateQrCode("https://example.com", 500, QRCodeWriter.QrErrorCorrectionLevel.Highest) _
    .AddBrandLogo("company-logo.png") _
    .SaveAsPng("qr-branded.png")
$vbLabelText   $csharpLabel

DevExpress에는 내장 로고에 해당하는 기능이 없습니다. 해당 컨트롤은 표준 QR 코드만 렌더링할 뿐입니다.

기능 비교

기능 DevExpress 바코드 IronBarcode
바코드 생성 예 (WinForms 컨트롤, Blazor 태그) 예 (프로그래밍 API, 모든 환경)
바코드 판독/스캔 아니요, 공식적으로 확인되었습니다. 예, 이미지, PDF, 바이트 배열 모두 가능합니다.
PDF 바코드 읽기 아니요 예, 네이티브 앱이며 추가 라이브러리가 필요하지 않습니다.
독립 실행 NuGet 패키지 아니요 — DXperience Suite 필요합니다. 예 - IronBarcode 전용
Suite 비용 연간 약 2,499달러 이상 (전체 UI Suite) 해당 없음 — 독립형
라이선스 비용 구독만 가능 퍼페추얼 가격은 749달러부터 시작합니다.
ASP.NET Core / 최소 API WinForms 관련 해결 방법이 필요합니다. 네이티브 지원
Azure Functions 헤드리스 모드는 지원되지 않습니다. 전체 지원
도커/리눅스 Linux 기본 이미지에서 GDI+ 관련 문제 전체 지원
콘솔 애플리케이션 WinForms 어셈블리 로딩이 필요합니다. 네이티브 지원
QR 코드 생성 예 (QRCodeGenerator 심볼을 통해) 예 (QRCodeWriter)
로고가 포함된 QR 코드 아니요 예 — .AddBrandLogo()
QR 오류 수정 수준 H, Q, M, L 최고, 높음, 중간, 낮음
코드 128
데이터 매트릭스
PDF417
아즈텍
파일 출력 DrawToBitmap — 수동 비트맵 할당 .SaveAsPng(), .SaveAsGif(), .SaveAsSvg()
이진 출력(HTTP 응답) 수동 비트맵 → 메모리 스트림 .ToPngBinaryData()
멀티스레드 읽기 해당 없음 — 읽을 수 없음 최대 병렬 스레드 수 = 4
멀티 바코드 판독 해당 없음 — 읽을 수 없음 ExpectMultipleBarcodes = true
플랫폼 윈도우(윈폼/ Blazor) 윈도우, 리눅스, macOS, 도커, Azure, AWS Lambda
.NET 버전 지원 .NET Framework + 최신 .NET (Windows) .NET 4.6.2부터 .NET 9까지

API 매핑 참조

DevExpress BarCodeControl 패턴에 익숙한 팀이라면 이러한 등가 관계가 유용할 것입니다:

DevExpress 바코드 IronBarcode
@@--코드-51191--@@ 정적 — 인스턴스가 필요하지 않음
@@--코드-51192--@@ + @@--코드-51193--@@ BarcodeEncoding.Code128 매개변수로 전달됨
@@--코드-51195--@@ + @@--코드-51196--@@ @@--코드-51197--@@
@@--코드-51198--@@ + @@--코드-51199--@@ @@--코드-51200--@@
@@--코드-51201--@@ @@--코드-51202--@@
@@--코드-51203--@@ @@--코드-51204--@@
barCode.Module = 0.02f (문서 단위) .ResizeTo(width, height) (픽셀)
@@--코드-51207--@@ @@--코드-51208--@@
DrawToBitmap(bitmap, rect) - 수동 비트맵 할당 .SaveAsPng(path) - 크기 조정 자동 처리
수동 @@--코드-51211--@@ → @@--코드-51212--@@ HTTP 응답용 @@--코드-51213--@@
읽기 API 없음 @@--코드-51214--@@
TextResult 유형 .Value (문자열), .Format (바코드 인코딩)
모든 프로젝트에 UI 어셈블리가 필요합니다. 모든 .NET 프로젝트 유형에서 작동합니다.
스위트룸 전용 (~$2,499+/년) 독립형 (영구 라이선스, $749부터)

팀 전환 시

DevExpress 바코드 컨트롤에서IronBarcode로 전환하는 데에는 일반적으로 몇 가지 특정 시나리오가 있습니다.

바코드 판독 요구 사항이 발생합니다. 가장 일반적인 시나리오는 수년 동안 바코드를 생성해 온 WinForms 애플리케이션에 새로운 기능 요청이 들어온 경우입니다. 즉, 이제 애플리케이션이 업로드된 이미지나 카메라로 촬영한 이미지에서 바코드를 스캔하거나 검증해야 한다는 것입니다. DevExpress에는 읽기 API가 없습니다. 어쨌든 팀에는 새로운 라이브러리가 필요하고, 모든 생성 기능을 동일한 라이브러리로 통합하는 것이 합리적입니다.

웹 API 엔드포인트가 필요합니다. 한 팀에서 웹 프런트엔드, 모바일 앱 또는 다른 서비스에서 호출될 수 있는, 필요에 따라 바코드 라벨을 생성하는 마이크로서비스를 개발하고 있습니다. 이 ASP.NET Core 프로젝트는 WinForms 종속성이 없으며, 팀에서는 WinForms를 추가할 계획도 없습니다. IronBarcode의 정적 API는 UI 구성 요소 없이 HTTP 엔드포인트에 통합됩니다.

Azure Function 또는 Lambda 배포. 서버리스 배포는 일반적으로 Linux 기본 이미지와 최소한의 런타임을 사용합니다. BarCodeControl은 이 환경을 위해 설계되지 않았습니다.IronBarcodeLinux, Docker 컨테이너, Azure Functions 및 AWS Lambda에서 구성 변경 없이 실행됩니다.

단일 기능에 대한 제품군 리뉴얼 비용 리뉴얼 시기가 도래하여 팀이 DXperience 제품군에서 실제로 사용하는 것을 감사할 때 특정 서비스의 유일한 DevExpress 구성 요소가 BarCodeControl라는 것을 발견하면 비용에 대한 논의가 시작됩니다. 바코드 생성용 독립형 라이브러리 가격이 영구 사용료로 749달러인 상황에서 전체 Suite 구독 서비스를 이용하는 것은 설득력이 떨어집니다.

PDF 파일에서 여러 바코드를 읽는 기능. 송장 PDF, 배송 명세서 또는 스캔한 양식에서 바코드를 읽는 등의 문서 처리 워크플로에는 PDF 지원 및 읽기 기능이 모두 필요합니다.IronBarcode별도의 라이브러리 없이 PDF 파일에서 직접 읽어옵니다. DevExpress는 이러한 기능을 제공하지 않습니다.

결론

DevExpress의 바코드 솔루션은 UI 툴킷에 포함된 UI 렌더링 기능으로 이해하는 것이 가장 좋습니다. 애플리케이션이 그리드 및 차트 컨트롤에 이미 DevExpress를 사용하고 있고 양식에 바코드를 시각적으로 표시하는 것만 필요한 WinForms 또는 Blazor 애플리케이션인 경우 BarCodeControl가 합리적인 선택이며, 이미 라이선스를 보유하고 있습니다.

바코드 판독, 서버 측 컨텍스트에서 바코드 생성, 헤드리스 환경에서 실행, Linux에서 작업, WinForms 어셈블리 참조 없이 작동 등 다음 중 하나라도 필요한 순간 BarCodeControl는 더 이상 올바른 도구가 되지 못합니다. DevExpress 지원팀은 읽기 기능이 없으며 추가할 계획도 없다고 확인했습니다. 헤드리스 모드 사용의 제한은 아키텍처적인 문제이지 설정 문제가 아닙니다. UI 컨트롤은 UI 컨트롤입니다.

IronBarcode 는 프로그래밍 방식으로 바코드를 생성하고 읽는 작업을 위해 설계되었으며, 어떤 환경이나 플랫폼에서도 정적 API를 통해 작동합니다. 두 도구는 서로 다른 문제를 해결합니다. DevExpress 바코드는 폼 내부에 렌더링하기 위한 것입니다.IronBarcode는 바코드를 코드로 처리하는 프로그램입니다.

자주 묻는 질문

DevExpress 바코드란 무엇인가요?

DevExpress 바코드는 C# 애플리케이션에서 바코드를 생성하고 판독하기 위한 .NET 바코드 라이브러리입니다. 개발자가 .NET 프로젝트용 바코드 솔루션을 선택할 때 평가하는 여러 대안 중 하나입니다.

DevExpress 바코드와 IronBarcode의 주요 차이점은 무엇인가요?

DevExpress 바코드는 일반적으로 사용하기 전에 인스턴스 생성 및 구성이 필요한 반면, IronBarcode는 인스턴스 관리가 필요 없는 정적 상태 비저장 API를 사용합니다. 또한 IronBarcode는 모든 환경에서 기본 PDF 지원, 자동 형식 감지, 단일 키 라이선싱을 제공합니다.

IronBarcode가 DevExpress 바코드보다 라이선스 취득이 더 쉬운가요?

IronBarcode는 개발 및 프로덕션 배포를 모두 포괄하는 단일 라이선스 키를 사용합니다. 따라서 SDK 키와 런타임 키를 분리하는 라이선싱 시스템에 비해 CI/CD 파이프라인 및 Docker 구성이 간소화됩니다.

IronBarcode는 DevExpress 바코드가 지원하는 모든 바코드 형식을 지원하나요?

IronBarcode는 QR코드, Code 128, Code 39, DataMatrix, PDF417, Aztec, EAN-13, UPC-A, GS1 등 30개 이상의 바코드 심볼로지를 지원합니다. 형식 자동 감지 기능은 명시적인 형식 열거가 필요하지 않음을 의미합니다.

IronBarcode는 네이티브 PDF 바코드 판독을 지원하나요?

예. IronBarcode는 별도의 PDF 렌더링 라이브러리가 필요 없이 BarcodeReader.Read("document.pdf")를 사용하여 PDF 파일에서 직접 바코드를 판독합니다. 페이지별 결과에는 페이지 번호, 바코드 형식, 값 및 신뢰도 점수가 포함됩니다.

IronBarcode는 DevExpress 바코드와 비교하여 일괄 처리를 어떻게 처리하나요?

IronBarcode의 정적 메서드는 상태 저장소가 없고 자연스럽게 스레드에 안전하므로 스레드별 인스턴스 관리 없이 Parallel.ForEach를 직접 사용할 수 있습니다. 어떤 가격대에서도 처리량 상한선이 없습니다.

IronBarcode 어떤 .NET 버전을 지원하나요?

IronBarcode는 단일 NuGet 패키지로 .NET Framework 4.6.2+, .NET Core 3.1 및 .NET 5, 6, 7, 8, 9를 지원합니다. 플랫폼 대상에는 Windows x64/x86, Linux x64, macOS x64/ARM이 포함됩니다.

.NET 프로젝트에 IronBarcode를 설치하려면 어떻게 해야 하나요?

NuGet을 통해 IronBarcode 설치: 패키지 관리자 콘솔에서 'Install-Package IronBarCode'를 실행하거나 CLI에서 '닷넷 추가 패키지 IronBarCode'를 실행합니다. 추가 SDK 인스톨러나 런타임 파일은 필요하지 않습니다.

DevExpress와 달리 구매하기 전에 IronBarcode를 평가할 수 있나요?

예. IronBarcode의 평가판 모드는 완전한 디코딩된 바코드 값을 반환하며 생성된 출력 이미지에만 워터마크가 표시됩니다. 구매를 결정하기 전에 자신의 문서에서 판독 정확도를 벤치마킹할 수 있습니다.

DevExpress 바코드와 IronBarcode의 가격 차이는 무엇인가요?

개발 및 프로덕션을 포함하는 단일 개발자 영구 라이선스의 IronBarcode 가격은 $749부터 시작합니다. 가격 세부 정보 및 볼륨 옵션은 IronBarcode 라이선스 페이지에서 확인할 수 있습니다. 별도의 런타임 라이선스 요구 사항은 없습니다.

DevExpress 바코드에서 IronBarcode로 마이그레이션하는 것은 간단합니까?

DevExpress Barcode에서 IronBarcode로의 마이그레이션에는 주로 인스턴스 기반 API 호출을 IronBarcode의 정적 메서드로 대체하고, 라이선스 상용구를 제거하며, 결과 속성 이름을 업데이트하는 작업이 포함됩니다. 대부분의 마이그레이션에는 코드를 추가하기보다는 줄이는 작업이 포함됩니다.

IronBarcode는 로고가 있는 QR 코드를 생성하나요?

예. QRCodeWriter.CreateQrCode().AddBrandLogo("logo.png")는 구성 가능한 오류 수정을 통해 기본적으로 브랜드 이미지를 QR코드에 임베드합니다. ChangeBarCodeColor()를 통해 컬러 QR 코드도 지원됩니다.

커티스 차우
기술 문서 작성자

커티스 차우는 칼턴 대학교에서 컴퓨터 과학 학사 학위를 취득했으며, Node.js, TypeScript, JavaScript, React를 전문으로 하는 프론트엔드 개발자입니다. 직관적이고 미적으로 뛰어난 사용자 인터페이스를 만드는 데 열정을 가진 그는 최신 프레임워크를 활용하고, 잘 구성되고 시각적으로 매력적인 매뉴얼을 제작하는 것을 즐깁니다.

커티스는 개발 분야 외에도 사물 인터넷(IoT)에 깊은 관심을 가지고 있으며, 하드웨어와 소프트웨어를 통합하는 혁신적인 방법을 연구합니다. 여가 시간에는 게임을 즐기거나 디스코드 봇을 만들면서 기술에 대한 애정과 창의성을 결합합니다.

아이언 서포트 팀

저희는 주 5일, 24시간 온라인으로 운영합니다.
채팅
이메일
전화해