Barcode4.NET과 IronBarcode: C# 바코드 라이브러리 비교
Barcode4NET은 공식 발표 없이 서비스 종료를 선언했습니다. ComponentSource를 통한 새 라이선스 판매가 중단되었고, NuGet 패키지도 게시되지 않았으며, 해당 라이브러리는.NET Framework만을 대상으로 합니다. Barcode4NET에 의존해야 하는 팀을 위해 이 글에서는 해당 라이브러리가 제공했던 기능과 현재IronBarcode제공하는 기능을 비교합니다. 플랫폼 지원 범위, API 설계, 바코드 판독 기능, 그리고 라이선스 문제로 인해 두 라이브러리를 직접 비교 평가하기가 다소 어려운 상황까지 다룹니다.
바코드4NET 이해하기
Barcode4NET은 ComponentSource 및 유사한 소프트웨어 판매업체를 통해 배포되는 상용 바코드 생성 라이브러리였습니다. 이 프로그램은 윈도우 기반.NET Framework애플리케이션, 주로 윈도우 폼과 ASP.NET 웹 폼을 위해 설계되었으며, 당시 핵심 1D 심볼에 대해 깔끔한 비트맵 출력을 제공했습니다.
해당 라이브러리는 NuGet 패키지로 제공된 적이 없습니다. 개발자들이 소스 코드 관리 시스템에 커밋하거나 공유 아티팩트 위치에 배치하는 DLL 파일 형태로 배포되었습니다. 이를 사용하는 모든 프로젝트에는 디스크의 DLL을 가리키는 .csproj 파일에 수동 <Reference> 요소가 있어야 합니다. 이는 Barcode4NET이 활동하던 시절에는 일반적인 관행이었지만, 최신 CI/CD 워크플로우에서는 상당한 마찰을 일으킵니다.
Barcode4NET의 주요 아키텍처 특징:
- 프로퍼티 설정자 API: 개발자가
Barcode개체를 생성하고Symbology,Data,Width,Height를 속성으로 지정한 다음GenerateBarcode()를 호출하여System.Drawing.Bitmap을 수신합니다 - 1D 심볼 지원: Code128, Code39, EAN-13 및 UPC-A 지원; QR 코드 지원은 버전에 따라 제한적이었습니다.
- 생성 전용: 이 제품에는 바코드 판독 또는 스캔 기능이 포함되어 있지 않았습니다.
- Windows 및.NET Framework만 지원합니다. .NET Core, .NET 5 이상, Linux, macOS, Docker또는 클라우드 런타임은 지원하지 않습니다.
- NuGet 배포 없음: 모든 프로젝트 파일 및 빌드 파이프라인에서 DLL을 수동으로 참조해야 합니다.
- 지원 종료: 신규 라이선스 발급 불가, 보안 패치 제공 불가, 버그 수정 불가, 공급업체로부터의 마이그레이션 경로 없음
바코드4NET 생성 API
Barcode4NET의 전체 생성 워크플로는 속성 설정자 패턴을 사용했습니다.
// 바코드4NET — manual DLL,.NET Frameworkonly
// 아니요 NuGet 패키지 — requires ThirdParty/Barcode4NET/Barcode4NET.dll in source control
using Barcode4NET;
using System.Drawing;
using System.Drawing.Imaging;
var barcode = new Barcode4NET.Barcode();
barcode.Symbology = Symbology.Code128;
barcode.Data = "ITEM-12345";
barcode.Width = 300;
barcode.Height = 100;
Bitmap barcodeImage = barcode.GenerateBarcode();
barcodeImage.Save(outputPath, ImageFormat.Png);
// 바코드4NET — manual DLL,.NET Frameworkonly
// 아니요 NuGet 패키지 — requires ThirdParty/Barcode4NET/Barcode4NET.dll in source control
using Barcode4NET;
using System.Drawing;
using System.Drawing.Imaging;
var barcode = new Barcode4NET.Barcode();
barcode.Symbology = Symbology.Code128;
barcode.Data = "ITEM-12345";
barcode.Width = 300;
barcode.Height = 100;
Bitmap barcodeImage = barcode.GenerateBarcode();
barcodeImage.Save(outputPath, ImageFormat.Png);
Imports Barcode4NET
Imports System.Drawing
Imports System.Drawing.Imaging
Dim barcode As New Barcode4NET.Barcode()
barcode.Symbology = Symbology.Code128
barcode.Data = "ITEM-12345"
barcode.Width = 300
barcode.Height = 100
Dim barcodeImage As Bitmap = barcode.GenerateBarcode()
barcodeImage.Save(outputPath, ImageFormat.Png)
이는 바코드4NET API의 모든 기능을 나타냅니다. 해당 라이브러리는 원활한 링크 연결, 읽기 기능, PDF 출력 기능은 물론 로고 삽입이나 오류 수정 제어와 같은 고급 QR 코드 옵션도 제공하지 않았습니다.
IronBarcode이해하기
IronBarcode 는 Iron Software 에서 개발한 상용 .NET 바코드 라이브러리로, 바코드 생성과 바코드 읽기 기능을 하나의 패키지에 모두 포함하고 있습니다. 이 제품은 NuGet 통해서만 배포되며,.NET Framework4.6.2부터 .NET 9까지를 대상으로 하고, Windows, Linux, macOS, Docker, Azure 및 AWS Lambda에서 실행됩니다.
이 라이브러리는 유려한 정적 API를 중심으로 구축되었습니다. 생성은 데이터 문자열 및 인코딩 유형과 함께 BarcodeWriter.CreateBarcode()를 사용하고 크기, 색상 및 형식에 대해 체인 가능한 옵션을 사용합니다. 읽기에서는 별도의 PDF 라이브러리 없이도 이미지 파일 경로, 스트림 및 PDF 문서를 허용하는 BarcodeReader.Read()을 사용합니다.
IronBarcode 의 주요 특징:
- 유창한 정적 생성 API:
BarcodeWriter.CreateBarcode().ResizeTo(),.AddAnnotationTextAboveBarcode()를 하나의 식에 연결하고 메서드를 저장합니다 - 바코드 판독:
BarcodeReader.Read()이미지와 PDF에서 바코드를 기본적으로 디코딩합니다 - 다양한 포맷 지원: Code128, Code39, EAN-13, UPC-A, QR 코드, Data Matrix, PDF417, Aztec 등
- QR 코드 전문성:
QRCodeWriter.CreateQrCode()로고 삽입 및 오류 수정 수준 등 QR 관련 옵션을 제공합니다 - NuGet 배포: 표준
dotnet add package IronBarcode설치;dotnet restore는 모든 종속성을 처리합니다 - 크로스 플랫폼: Windows, Linux, macOS에서 .NET 5, 6, 7, 8, 9를 지원하며, Docker컨테이너 및 서버리스 클라우드 런타임도 포함합니다.
- 활발히 판매 중인 상용 제품: 정기적인 업데이트, 보안 패치, .NET 버전 호환성 업데이트, 그리고 정해진 가격으로 구매 가능한 라이선스를 제공합니다.
기능 비교
다음 표는 Barcode4NET과IronBarcode의 가장 중요한 차이점을 보여줍니다.
| 기능 | 바코드4NET | IronBarcode |
|---|---|---|
| NuGet 패키지 | 아니요, 수동 DLL만 사용 가능합니다. | 예(IronBarcode) |
| 바코드 생성 | 예 | 예 |
| 바코드 판독 | 아니요 | 예 |
| 크로스 플랫폼 지원 | 아니요, 윈도우에서만 사용 가능합니다. | 예 — 윈도우, 리눅스, macOS |
| 활성 유지 관리 | 아니요 (단종) | 예 |
| 새로운 라이선스가 있습니다 | 아니요 | 예 |
상세 기능 비교
| 기능 | 바코드4NET | IronBarcode |
|---|---|---|
| 세대 | ||
| 코드128 생성 | 예 | 예 |
| 코드39 생성 | 예 | 예 |
| EAN-13 / UPC-A 세대 | 예 | 예 |
| QR 코드 생성 | 제한적 | 예 - QRCodeWriter.CreateQrCode() |
| 로고가 포함된 QR 코드 | 아니요 | 예 - .AddBrandLogo() |
| 데이터 매트릭스 / PDF417 / 아즈텍 | 아니요 | 예 |
| Fluent 체인형 API | 아니요 | 예 |
| 독서 | ||
| 이미지에서 바코드 읽기 | 아니요 | 예 - BarcodeReader.Read() |
| PDF 파일에서 바코드 읽기 | 아니요 | 예, 네이티브 앱이며 추가 라이브러리가 필요하지 않습니다. |
| 다중 바코드 감지 | 아니요 | 예 - ExpectMultipleBarcodes |
| 읽기 속도 설정 | 아니요 | 예 - ReadingSpeed 열거형 |
| 플랫폼 | ||
| .NET Framework | 예 | 예 (.NET Framework 4.6.2 이상) |
| .NET 5 / 6 / 7 / 8 / 9 | 아니요 | 예 |
| 리눅스/macOS | 아니요 | 예 |
| Docker | 아니요 | 예 |
| Azure / AWS Lambda | 아니요 | 예 |
| 분포 | ||
| NuGet 패키지 | 아니요 | 예 |
dotnet restore 호환 가능 |
아니요 | 예 |
| CI/CD 통합 | 수동 DLL 단계 | 표준 복원 |
| 유지보수 | ||
| 활성 개발 | 아니요 (단종) | 예 |
| 보안 패치 | 아니요 | 예 |
| 버그 수정 | 아니요 | 예 |
| 새로운 라이선스 | 아니요 | 예 — Lite 749달러, Plus 1,499달러, Professional 버전 2,999달러, 언리미티드 버전 5,999달러 |
세대 API 디자인
바코드 생성 API는 이 두 라이브러리를 가장 직접적으로 비교할 수 있는 부분인데, 바코드4NET이 제공하는 유일한 기능이 바로 생성 기능이었기 때문입니다.
바코드4NET 접근 방식
Barcode4NET은 명령형 속성 설정자 패턴을 사용했습니다. 개발자는 Barcode 개체를 인스턴스화하고 개별 속성을 할당하고 GenerateBarcode()를 호출하여 System.Drawing.Bitmap를 수신합니다:
using Barcode4NET;
using System.Drawing;
using System.Drawing.Imaging;
public Bitmap GenerateLabel(string sku)
{
var barcode = new Barcode4NET.Barcode();
barcode.Symbology = Symbology.Code128;
barcode.Data = sku;
barcode.Width = 400;
barcode.Height = 120;
return barcode.GenerateBarcode();
}
using Barcode4NET;
using System.Drawing;
using System.Drawing.Imaging;
public Bitmap GenerateLabel(string sku)
{
var barcode = new Barcode4NET.Barcode();
barcode.Symbology = Symbology.Code128;
barcode.Data = sku;
barcode.Width = 400;
barcode.Height = 120;
return barcode.GenerateBarcode();
}
Imports Barcode4NET
Imports System.Drawing
Imports System.Drawing.Imaging
Public Function GenerateLabel(sku As String) As Bitmap
Dim barcode As New Barcode4NET.Barcode()
barcode.Symbology = Symbology.Code128
barcode.Data = sku
barcode.Width = 400
barcode.Height = 120
Return barcode.GenerateBarcode()
End Function
반환 유형인 System.Drawing.Bitmap은 호출 코드가 이미지 저장, 표시 또는 스트리밍을 담당한다는 의미입니다. 이는 @@--코드-50722--@@를 @@--코드-50723--@@에 직접 할당할 수 있지만 다른 출력 대상에 대해서는 추가 변환 단계가 필요한 WinForms 애플리케이션에 적합했습니다.
IronBarcode접근법
IronBarcode 유연한 정적 API를 사용합니다. 단일 메서드 호출로 생성이 시작되며, 여러 메서드를 연결하여 최종 저장 또는 변환 메서드 실행 전에 결과를 구성할 수 있습니다.
// NuGet: dotnet add package IronBarcode
using IronBarCode;
public byte[] GenerateLabel(string sku)
{
return BarcodeWriter.CreateBarcode(sku, BarcodeEncoding.Code128)
.ResizeTo(400, 120)
.ToPngBinaryData();
}
// NuGet: dotnet add package IronBarcode
using IronBarCode;
public byte[] GenerateLabel(string sku)
{
return BarcodeWriter.CreateBarcode(sku, BarcodeEncoding.Code128)
.ResizeTo(400, 120)
.ToPngBinaryData();
}
Imports IronBarCode
Public Function GenerateLabel(sku As String) As Byte()
Return BarcodeWriter.CreateBarcode(sku, BarcodeEncoding.Code128) _
.ResizeTo(400, 120) _
.ToPngBinaryData()
End Function
코드 50724--@@ 열거형은 @@--코드 50725--@@ 열거형에 직접 대응합니다. .ResizeTo()은 Width 및 Height 속성 할당을 대체합니다. 터미널 메서드 - .SaveAsPng(), .SaveAsJpeg(), .ToPngBinaryData() - 별도의 GenerateBarcode() 및 비트맵 저장 호출을 대체합니다. 보다 고급 생성 시나리오에 대해서는 IronBarcode 바코드 생성 설명서를 참조하십시오.
바코드 판독 기능
읽기 능력은 이 두 라이브러리 간의 가장 큰 성능 차이입니다. Barcode4NET은 어떤 버전에서도 바코드 읽기 기능을 제공한 적이 없습니다.IronBarcode바코드 생성 기능과 판독 기능을 동일한 패키지에 포함하고 있습니다.
바코드4NET 접근 방식
Barcode4NET에는 읽기 API가 없었습니다. 이미지나 스캔한 문서에서 바코드를 해독해야 하는 팀은 ZXing .NET 과 같은 오픈 소스 대안이나 상용 스캐너 SDK와 같은 별도의 라이브러리를 통합해야 했습니다. 그 결과, 바코드 생성을 위한 Barcode4NET과 읽기를 위한 두 번째 라이브러리, 이렇게 두 개의 별개의 종속성 체인이 생성되었습니다.
IronBarcode접근법
IronBarcode는 이미지 파일 경로, 스트림 개체 및 PDF 문서를 허용하는 정적 메서드로 BarcodeReader.Read()을 제공합니다:
using IronBarCode;
// Read from an image file
var results = BarcodeReader.Read("barcode.png");
foreach (var result in results)
{
Console.WriteLine($"Value: {result.Value}");
Console.WriteLine($"Format: {result.Format}");
}
// Read all barcodes from a multi-page PDF — no extra PDF library required
var pdfResults = BarcodeReader.Read("invoice-batch.pdf");
foreach (var result in pdfResults)
{
Console.WriteLine($"Page {result.PageNumber}: {result.Value}");
}
using IronBarCode;
// Read from an image file
var results = BarcodeReader.Read("barcode.png");
foreach (var result in results)
{
Console.WriteLine($"Value: {result.Value}");
Console.WriteLine($"Format: {result.Format}");
}
// Read all barcodes from a multi-page PDF — no extra PDF library required
var pdfResults = BarcodeReader.Read("invoice-batch.pdf");
foreach (var result in pdfResults)
{
Console.WriteLine($"Page {result.PageNumber}: {result.Value}");
}
Imports IronBarCode
' Read from an image file
Dim results = BarcodeReader.Read("barcode.png")
For Each result In results
Console.WriteLine($"Value: {result.Value}")
Console.WriteLine($"Format: {result.Format}")
Next
' Read all barcodes from a multi-page PDF — no extra PDF library required
Dim pdfResults = BarcodeReader.Read("invoice-batch.pdf")
For Each result In pdfResults
Console.WriteLine($"Page {result.PageNumber}: {result.Value}")
Next
대용량 또는 노이즈가 많은 이미지 시나리오의 경우 BarcodeReaderOptions 클래스는 판독 속도와 다중 바코드 감지에 대한 제어 기능을 제공합니다. 설정 옵션에 대한 자세한 내용은 바코드 판독 설명서를 참조하십시오.
플랫폼 및 배포 범위
플랫폼 지원 여부는 .NET 현대화 프로젝트를 진행하는 팀에게 가장 중요한 차이점입니다.
바코드4NET 접근 방식
Barcode4NET은.NET Framework어셈블리를 대상으로 컴파일되었습니다. 이 프로그램은 Windows 운영 체제에서.NET Framework애플리케이션, IIS에서 호스팅되는 웹 폼 및 윈도우 폼 프로젝트에서 실행되었습니다. 리눅스 빌드도, .NET Core 빌드도, 클라우드 런타임 지원도 없었습니다. 마이크로소프트가 .NET Core 출시하고 나중에 플랫폼을 .NET 5+로 통합했을 때, Barcode4NET에는 그에 상응하는 업데이트가 없었습니다. 코드 50735--@@ 이상을 대상으로 하는 프로젝트는 라이브러리를 전혀 참조할 수 없습니다.
DLL 배포 모델은 플랫폼 제약을 더욱 악화시켰습니다. 개발자 워크스테이션, 빌드 에이전트, Docker컨테이너 등 모든 빌드 환경에서 DLL 파일이 알려진 경로에 있어야 했습니다. 컨테이너 기반 배포의 경우, 이는 사용자 지정 기본 이미지로 DLL을 베이킹하거나 컨테이너 빌드 중에 복사하는 것을 의미하며, 둘 다 표준 dotnet restore 워크플로와 호환되지 않습니다.
IronBarcode접근법
IronBarcode 단일 NuGet 패키지를 통해 다양한 프레임워크를 지원합니다..NET Framework4.6.2부터 .NET 9까지, 그리고 Windows, Linux, macOS의 모든 최신 .NET 버전을 지원합니다. Docker컨테이너로 배포할 때는 표준 .NET 런타임 이미지를 수정 없이 사용합니다. Azure Functions, AWS Lambda 및 기타 서버리스 런타임은 동일한 NuGet 패키지를 통해 지원됩니다. dotnet restore 명령은 수동 DLL 관리 없이 모든 종속성을 해결합니다.
라이선스 아키텍처 및 공급업체 현황
Barcode4NET의 라이선스 상황은 경쟁적인 요소가 아니라, 라이브러리 사용을 계속할지 여부에 대한 모든 결정에 영향을 미치는 실질적인 제약 조건입니다.
바코드4NET 접근 방식
Barcode4NET은 지원이 종료되었습니다. ComponentSource 또는 다른 어떤 채널을 통해서도 새로운 라이선스를 구할 수 없습니다. Barcode4NET을 사용하는 팀에 개발자가 합류하는 경우, 개발자를 위한 라이선스 구매 메커니즘은 없습니다. 기존 라이선스 구조에 따라 신규 개발자는 개발 과정에서 바코드 관련 코드를 실행하거나 디버깅하는 것이 법적으로 허용되지 않을 수 있습니다. 문제 추적 시스템도 없고, 지원 채널도 없으며, 결함에 대해 문의할 수 있는 공급업체도 없습니다. 최근 릴리스 이후 발견된 보안 취약점은 영구적으로 해결되지 않은 채 남아 있습니다.
IronBarcode접근법
IronBarcode 는 지속적으로 유지 관리되는 상용 제품이며 영구 라이선스가 제공됩니다. 단일 개발자용 Lite 라이선스는 749달러부터 시작하며, Plus (1,499달러, 개발자 3명), Professional (2,999달러, 개발자 10명), Unlimited(5,999달러) 등급이 있습니다. 모든 요금제에는 로열티 없는 배포가 포함됩니다. 보안 패치, 버그 수정 및 .NET 버전 호환성 업데이트는 정기적인 릴리스 주기에 따라 제공됩니다. 라이선스 키 없이 30일 동안 무료로 평가해 볼 수 있는 체험판이 제공됩니다.
API 매핑 참조
| 바코드4NET | IronBarcode |
|---|---|
| @@--코드-50738--@@ | @@--코드-50739--@@ |
| @@--코드-50740--@@ | BarcodeEncoding.Code128(CreateBarcode에 대한 매개변수) |
| @@--코드-50743--@@ | 코드 50744--@@의 첫 번째 매개변수는 CreateBarcode()입니다 |
| 바코드.너비 = 300; 바코드 높이 = 100` | @@--코드-50745--@@ |
barcode.GenerateBarcode()은 Bitmap을 반환합니다 |
@@--코드-50748--@@ / @@--코드-50749--@@ |
| @@--코드-50750--@@ | @@--코드-50751--@@ |
| @@--코드-50752--@@ | @@--코드-50753--@@ |
| @@--코드-50754--@@ | @@--코드-50755--@@ |
| @@--코드-50756--@@ | @@--코드-50757--@@ |
수동 DLL <Reference Include="Barcode4NET"> |
@@--코드-50759--@@ |
| 읽기 API 없음 | @@--코드-50760--@@ |
| PDF를 지원하지 않습니다. | BarcodeReader.Read("doc.pdf") 네이티브 |
| .NET Framework만 해당 | .NET Framework4.6.2부터 .NET 9까지 |
팀이 Barcode4NET에서IronBarcode로 이전을 고려할 때
.NET 업그레이드가 차단되었습니다
가장 흔한 강제적인 계기는 .NET 현대화 프로젝트입니다. 한 팀이 net8.0에서 .csproj을 대상으로 빌드를 실행했는데 Barcode4NET이 더 이상 참조되지 않는.NET Framework어셈블리에 대해 컴파일되었기 때문에 컴파일 오류가 발생했습니다. 오류는 명확합니다. 해당 라이브러리는 새로운 대상 프레임워크에서 로드되지 않습니다. 이 시점에서 팀은 두 가지 선택에 직면합니다. 대상 프레임워크 변경을 되돌리고.NET Framework유지하거나, Barcode4NET을 교체하는 것입니다. 이러한 이주를 미루면 더 광범위한 현대화 노력을 저해하게 됩니다.
인프라 변경 후 CI/CD 파이프라인 오류 발생
Barcode4NET의 DLL 배포 모델은 빌드 파이프라인에 잠재적인 취약점을 초래합니다. 빌드 에이전트를 다시 프로비저닝하거나, 컨테이너 이미지를 업데이트하거나, 새 CI 환경을 구성할 때, 바코드4NET DLL 파일을 프로젝트 파일이 예상하는 경로에 수동으로 배치해야 합니다. 이 단계를 꼼꼼하게 문서화하지 않은 팀은 파이프라인이 실패했을 때에야 비로소 문제를 발견하게 됩니다. IronBarcode로 전환하면 dotnet restore가 모든 것을 처리하므로 DLL 위치 문제가 더 이상 존재하지 않습니다.
신규 팀원은 라이선스를 취득할 수 없습니다.
계약업체가 프로젝트에 참여하거나 두 번째 개발자가 바코드 기능을 개발해야 하는 경우, 라이선스를 구매할 필요가 없습니다. 팀은 이러한 제약 조건을 해결해야 합니다. 새로운 개발자가 바코드 코드를 완전히 피하거나, 원래 약관에 따라 법적으로 양도할 수 없는 라이선스를 누군가 양도하는 방법이 있습니다. 두 상황 모두 제품 개발에 적극적으로 나서는 팀에게는 지속 가능하지 않습니다.
보안 및 규정 준수 감사
소프트웨어 BOM(자재 명세서) 생성을 실행하거나 단종된 데이터베이스에 대한 종속성을 확인하는 조직은 Barcode4NET을 발견 항목으로 접하게 됩니다. 이는 특정 공급업체가 없고, CVE 추적 시스템이 없으며, 패치도 제공되지 않는 상용 제품입니다. 보안 감사자는 수명이 다한 상용 종속성을 성숙한 오픈 소스 라이브러리와는 다르게 취급합니다. 공급업체의 대응 프로세스가 없다는 것은 모든 취약점이 영구적으로 해결되지 않은 상태로 남아 있음을 의미합니다. 이는 일반적으로 연기된 위험이 아니라 공식적인 시정 조치 항목으로 간주됩니다.
기존 워크플로에 읽기 기능 추가
원래 바코드 생성 워크플로에만 Barcode4NET을 사용하던 팀들은 나중에 스캔한 문서에서 바코드를 검증하거나, 사용자가 업로드한 이미지를 처리하거나, PDF 송장에서 데이터를 추출해야 할 필요성을 느끼게 됩니다. Barcode4NET을 사용하려면 두 번째 라이브러리를 통합해야 합니다. IronBarcode의 BarcodeReader.Read()는 이미지와 PDF를 모두 기본적으로 처리하여 종속성을 유지 관리되는 단일 패키지로 통합합니다.
일반적인 마이그레이션 고려사항
DLL 참조 제거
Barcode4NET은 NuGet 패키지로 배포된 적이 없으므로 dotnet remove package 명령이 없습니다. 라이브러리를 참조하는 모든 .csproj 파일에는 <Reference Include="Barcode4NET"> 요소와 함께 디스크의 DLL을 가리키는 <HintPath>가 포함되어 있습니다. 이러한 요소들은 각각 수동으로 찾아서 제거해야 합니다. 솔루션 전체를 대상으로 grep 명령을 실행하면 해당 항목들을 찾을 수 있습니다.
grep -rl "Barcode4NET" --include="*.csproj" .
grep -rl "Barcode4NET" --include="*.csproj" .
소스 제어의 DLL 디렉터리(일반적으로 ThirdParty/Barcode4NET/ 또는 lib/)도 git rm로 삭제할 수 있도록 스테이징해야 합니다.
반환 형식이 비트맵에서 바이트 배열로 변경됨
Barcode4NET의 GenerateBarcode()은 System.Drawing.Bitmap을 반환합니다. IronBarcode의 유창한 체인은 .ToPngBinaryData()가 byte[]를 반환하거나 .SaveAsPng()가 디스크에 직접 쓰는 것으로 끝납니다. 반환값을 Bitmap 타입의 변수에 할당하거나 Bitmap를 예상하는 메서드에 전달하는 코드(예: WinForms PictureBox)는 호출 사이트에서 한 줄 조정이 필요합니다: 바이트 배열을 MemoryStream로 감싸고 Image.FromStream() 호출합니다.
심볼 열거형 이름 변경
Barcode4NET의 Symbology 열거형은 IronBarcode의 BarcodeEncoding 열거형에 직접 매핑됩니다. 모든 공통 값(Code128, Code39, EAN13, UPCA, QRCode)은 해당 이름을 유지합니다. 솔루션 전체에서 @@--코드-50790--@@을 @@--코드-50791--@@으로 찾기 및 바꾸기는 대부분의 경우에 적용되지만, 각 교체는 문맥을 확인하기 위해 검토해야 합니다.
빌드 스크립트 정리
Barcode4NET DLL을 출력 디렉터리 또는 빌드 에이전트로 복사하는 빌드 스크립트와 CI/CD 구성 파일을 업데이트해야 합니다. 이러한 단계는 NuGet 마이그레이션 이후에는 dotnet restore가 모든 수동 DLL 관리를 대체하므로 이에 상응하는 단계가 없습니다. 마이그레이션 후 오래된 DLL 복사 단계를 그대로 두어도 빌드 오류는 발생하지 않지만, 이는 더 이상 사용되지 않는 구성으로 향후 유지 관리자에게 혼란을 야기할 수 있습니다.
IronBarcode추가 기능
IronBarcode 에서 사용할 수 있는 기능 중 바코드4NET 개발 기간 동안에는 포함되지 않았던 기능은 다음과 같습니다.
- 이미지에서 바코드 읽기:
BarcodeReader.Read()PNG, JPEG, TIFF 및 기타 이미지 형식의 모든 주요 1D 및 2D 기호를 디코딩합니다 - PDF 바코드 읽기 : PDF 입력 기능을 기본적으로 지원하므로 별도의 PDF 추출 라이브러리가 필요하지 않습니다.
- QR 코드 로고 임베딩:
QRCodeWriter.CreateQrCode()브랜드 QR 코드의 경우.AddBrandLogo()포함 - 2D 형식 생성 : QR 코드 외에도 Data Matrix, PDF417, Aztec 형식을 지원합니다.
- 멀티 바코드 감지:
BarcodeReaderOptions.ExpectMultipleBarcodes단일 이미지에서 모든 바코드 찾기 - 읽기 속도 튜닝:
ReadingSpeed열거형은 대량 처리를 위해 처리량과 정확도의 균형을 맞춥니다 - ASP.NET Core 통합: 깔끔한 컨트롤러 동작 응답을 위해
byte[]에서 직접.ToPngBinaryData()를 반환합니다
.NET 호환성 및 미래 준비
IronBarCode.NET Framework4.6.2부터 .NET 9까지 지원하며, 새로운 .NET 버전이 출시될 때마다 호환성 업데이트를 받습니다. 2026년 말 .NET 10 출시를 앞두고 Iron Software 정식 출시 전에 미리 보기 호환 빌드를 배포합니다. Barcode4NET은.NET Framework이후의 .NET 버전을 지원하지 않으며 향후 업데이트도 제공되지 않습니다..NET Framework4.x를 사용하는 팀은IronBarcode로 마이그레이션한 후 바코드 라이브러리 제약 없이 대상 프레임워크를 현재 또는 향후의 모든 .NET 버전으로 자유롭게 업그레이드할 수 있습니다.
결론
Barcode4NET과IronBarCode.NET 바코드 개발 역사에서 서로 다른 시점을 나타냅니다. Barcode4NET은 당시로서는 기능적이고 범위가 명확한 라이브러리였습니다..NET Framework기반의 Windows Forms 및 Web Forms 애플리케이션용으로 깔끔한 비트맵 출력을 생성하는 속성 설정 API였습니다.IronBarcode는 직관적인 정적 API, 완벽한 바코드 판독 지원, 크로스 플랫폼 런타임 지원 및 표준 NuGet 배포를 제공하는 현재 상용 제품입니다.
Barcode4NET은 더 이상 활발하게 개발되고 있는 제품이 아니기 때문에 이러한 비교는 이례적입니다. 이 제품은 업데이트, 보안 패치 또는 신규 라이선스 판매를 받지 않습니다. 새 프로젝트에 어떤 라이브러리를 도입할지 평가하는 팀은 해당 평가 과정에서 Barcode4NET을 접하지 않게 됩니다. Barcode4NET은 이미 해당 라이브러리를 사용 중이며 언제 어떻게 마이그레이션할지 결정하는 팀에게만 관련이 있습니다.
이미 Barcode4NET을 운영 중인 팀의 경우IronBarcode자연스러운 대체재가 될 수 있습니다. API 매핑은 직접적이며, 코드 변경은 표면적인 수준이고, 생성 의미론은 동일합니다. 이점은 실제로 유지 관리되고, 새로운 팀 구성원이 설치할 수 있으며, 최신 .NET 버전 및 배포 환경과 호환되는 종속성이라는 점입니다.
솔직히 말해서, 이것은 두 가지 실행 가능한 선택지 사이의 경쟁적인 선택이 아닙니다. Barcode4NET은 새로운 팀 구성원에게 확장할 수 없고, 최신 .NET 환경에서 실행할 수 없으며, 보안 문제에 대한 패치를 적용할 수도 없습니다.IronBarcode가능합니다. 마이그레이션을 결정하는 것은 API 선호도나 기능 비교보다는 그러한 실질적인 제약 조건에 의해 좌우됩니다.
자주 묻는 질문
Barcode4.NET이란?
Barcode4.NET은 C# 애플리케이션에서 바코드를 생성하고 판독하기 위한 .NET 바코드 라이브러리입니다. 개발자가 .NET 프로젝트용 바코드 솔루션을 선택할 때 평가하는 여러 대안 중 하나입니다.
Barcode4.NET과 IronBarcode의 주요 차이점은 무엇인가요?
Barcode4.NET은 일반적으로 사용하기 전에 인스턴스 생성 및 구성이 필요한 반면, IronBarcode는 인스턴스 관리가 필요 없는 정적 상태 비저장 API를 사용합니다. 또한 IronBarcode는 모든 환경에서 기본 PDF 지원, 자동 형식 감지, 단일 키 라이선싱을 제공합니다.
IronBarcode가 Barcode4.NET보다 라이선스 취득이 더 쉬운가요?
IronBarcode는 개발 및 프로덕션 배포를 모두 포괄하는 단일 라이선스 키를 사용합니다. 따라서 SDK 키와 런타임 키를 분리하는 라이선싱 시스템에 비해 CI/CD 파이프라인 및 Docker 구성이 간소화됩니다.
IronBarcode는 Barcode4.NET이 지원하는 모든 바코드 형식을 지원하나요?
IronBarcode는 QR코드, Code 128, Code 39, DataMatrix, PDF417, Aztec, EAN-13, UPC-A, GS1 등 30개 이상의 바코드 심볼로지를 지원합니다. 형식 자동 감지 기능은 명시적인 형식 열거가 필요하지 않음을 의미합니다.
IronBarcode는 네이티브 PDF 바코드 판독을 지원하나요?
예. IronBarcode는 별도의 PDF 렌더링 라이브러리가 필요 없이 BarcodeReader.Read("document.pdf")를 사용하여 PDF 파일에서 직접 바코드를 판독합니다. 페이지별 결과에는 페이지 번호, 바코드 형식, 값 및 신뢰도 점수가 포함됩니다.
Barcode4.NET과 비교했을 때 일괄 처리는 어떻게 처리하나요?
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 인스톨러나 런타임 파일은 필요하지 않습니다.
Barcode4.NET과 달리 구매 전에 IronBarcode를 평가할 수 있나요?
예. IronBarcode의 평가판 모드는 완전한 디코딩된 바코드 값을 반환하며 생성된 출력 이미지에만 워터마크가 표시됩니다. 구매를 결정하기 전에 자신의 문서에서 판독 정확도를 벤치마킹할 수 있습니다.
Barcode4.NET과 IronBarcode의 가격 차이는 무엇인가요?
개발 및 프로덕션을 포함하는 단일 개발자 영구 라이선스의 IronBarcode 가격은 $749부터 시작합니다. 가격 세부 정보 및 볼륨 옵션은 IronBarcode 라이선스 페이지에서 확인할 수 있습니다. 별도의 런타임 라이선스 요구 사항은 없습니다.
Barcode4.NET에서 IronBarcode로 마이그레이션하는 것은 간단합니까?
Barcode4.NET에서 IronBarcode로의 마이그레이션에는 주로 인스턴스 기반 API 호출을 IronBarcode의 정적 메서드로 대체하고, 라이선스 상용구를 제거하고, 결과 속성 이름을 업데이트하는 작업이 포함됩니다. 대부분의 마이그레이션에는 코드를 추가하기보다는 줄이는 작업이 포함됩니다.
IronBarcode는 로고가 있는 QR 코드를 생성하나요?
예. QRCodeWriter.CreateQrCode().AddBrandLogo("logo.png")는 구성 가능한 오류 수정을 통해 기본적으로 브랜드 이미지를 QR코드에 임베드합니다. ChangeBarCodeColor()를 통해 컬러 QR 코드도 지원됩니다.

