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

메시징 툴킷 바코드와 IronBarcode: C# 바코드 라이브러리 비교

MessagingToolkit.Barcode는 대상 플랫폼으로 Silverlight 5와 Windows Phone 7을 명시하고 있습니다. 두 제품 모두 몇 년 전에 생산이 중단되었습니다. 이 라이브러리가 코드베이스에 있다면, 교체해야 할지 말지가 문제가 아니라, 바로 지금 당신이 기다리고 있는 것입니다.

MessagingToolkit.Barcode 이해하기

MessagingToolkit.Barcode는 Java ZXing 바코드 라이브러리를 .NET 으로 포팅하고 추가적인 메시징 통합 기능을 제공한 버전입니다. 해당 라이브러리는 2011년경에 출시되어 2012년과 2013년까지 활발한 개발이 진행되었습니다. 최종 버전인 1.7.0.2는 2014년에 공개되었습니다. GitHub 저장소는 여전히 접근 가능하지만, 커밋, 이슈 답변, 풀 리퀘스트 검토 등 활동 내역이 전혀 없습니다. 이 프로젝트는 유지 관리되는 것이 아니라 보존되는 것입니다.

이 라이브러리는 .NET Framework 시대와 그 시대를 대표하는 모바일 플랫폼을 위해 설계되었습니다. 인스턴스 기반 API를 통해 바코드 디코딩 및 인코딩을 제공하여 System.Drawing.Bitmap 입력을 받고 .Text.BarcodeFormat 속성을 가진 결과 객체를 반환합니다. 2012년 당시 Windows에서 실행되는 .NET Framework 4.x 애플리케이션의 경우, 이 접근 방식은 실용적이었고 일반적으로 사용되었습니다.

ZXing을 포팅한 MessagingToolkit.Barcode는 해당 Java 라이브러리의 기본 디코딩 엔진을 공유하면서 자체 API 인터페이스와 메시징 중심의 확장 지점을 추가했습니다. 이 라이브러리는 .NET Framework 기반에서 벗어나지 못했습니다. .NET Standard 대상은 게시되지 않았고, .NET Core지원도 추가되지 않았으며, 2014년 릴리스 이후로 어떠한 업데이트도 이루어지지 않았습니다.

MessagingToolkit.Barcode의 주요 특징:

  • 최종 출시 연도: 2014년, 버전 1.7.0.2, 이후 업데이트 없음
  • ZXing 유산: Java ZXing 라이브러리를 .NET 전용 확장 기능으로 포팅한 버전입니다.
  • 인스턴스 기반 API: 각 작업에 대해 BarcodeDecoderBarcodeEncoder 개체를 인스턴스화해야 합니다
  • System.Drawing 종속성: System.Drawing.Bitmap를 수락하고 반환하여 최신 .NET에서 Windows 전용으로 만듭니다
  • 디코딩 호출당 단일 결과: 컬렉션 대신 하나의 결과 객체(또는 null)를 반환합니다.
  • PDF 미지원: 입력은 비트맵 객체로 제한됩니다. 원어민 문서 읽기 불가
  • 자동 형식 감지 기능 없음: 형식은 사전에 구성하거나 라이브러리가 이미지 자체에서 자동으로 감지해야 합니다.
  • 지원이 중단된 플랫폼 대상: Silverlight 3, 4, 5 목록; NuGet 메타데이터에 있는 Windows Phone 7.0, 7.5, 7.8 및 8.0
  • 최신 .NET 대상 프레임워크 명칭이 없습니다. .NET Core, .NET 5 또는 그 이후 버전을 대상으로 하는 프로젝트에서는 컴파일되지 않습니다.

플랫폼 및 유지보수 기록

MessagingToolkit.Barcode의 NuGet 패키지 메타데이터는 해당 패키지의 대상 사용자를 설명합니다. 다음 표의 각 항목은 라이브러리 개발 당시 최신 또는 최신에 가까운 플랫폼을 나타냅니다.

플랫폼 2026년 현황
실버라이트 3 서비스 종료됨 — 브라우저 플러그인이 2021년에 제거되었습니다.
실버라이트 4 서비스 종료됨 — 브라우저 플러그인이 2021년에 제거되었습니다.
실버라이트 5 서비스 종료됨 — 브라우저 플러그인이 2021년에 제거되었습니다.
윈도우 폰 7.0 단종됨 — 2014년 지원 종료
윈도우 폰 7.5 단종됨 — 2014년 지원 종료
윈도우 폰 7.8 단종됨 — 2014년 지원 종료
윈도우 폰 8.0 단종됨 — 2017년 지원 종료
.NET Framework 3.5 보안 패치만 제공되며, 새로운 기능은 추가되지 않습니다.
.NET Framework 4.0 보안 패치만 제공되며, 새로운 기능은 추가되지 않습니다.
.NET Framework 4.5 보안 패치만 제공되며, 새로운 기능은 추가되지 않습니다.

이 라이브러리는 .NET Core, .NET 5, .NET 6, .NET 7, .NET 8 또는 .NET 9와 호환되는 대상 프레임워크를 지원하지 않습니다. 이러한 런타임을 대상으로 하는 프로젝트는 패키지가 호환되는 프레임워크 이름을 확인할 수 없을 때 빌드 시 오류가 발생합니다. 이는 런타임 경고가 아니라 컴파일 오류입니다.

IronBarcode이해하기

IronBarcode 는 Iron Software 에서 개발 및 유지 관리하는 .NET 용 상용 바코드 읽기 및 생성 라이브러리입니다. 정적 API 모델을 통해 작동합니다: 디코딩의 경우 BarcodeReader.Read(), 인코딩의 경우 BarcodeWriter.CreateBarcode()로 인스턴스화된 리더 또는 라이터 객체가 필요하지 않습니다. 이 라이브러리는 자체 이미지 처리 파이프라인을 번들로 제공하며 System.Drawing에 의존하지 않으므로 Windows, Linux, macOS 및 컨테이너 환경 전반에서 호환됩니다.

IronBarcode는 파일 경로, Stream 개체, 바이트 배열, PDF 문서 경로 등 다양한 입력 유형을 읽을 수 있습니다. 결과는 단일 null 허용 객체가 아닌 컬렉션 형태로 반환되므로 별도의 구성 없이 여러 바코드가 포함된 이미지를 처리할 수 있습니다. 형식 감지는 자동입니다. 라이브러리는 호출자가 사전에 지정할 필요 없이 이미지 내용에서 바코드 유형을 식별합니다.

생성 시 IronBarcode는 BarcodeWriter.CreateBarcode()의 유창한 결과 객체를 반환하며 PNG, JPEG, SVG, PDF 및 base64 인코딩 문자열을 비롯한 여러 출력 형식을 지원합니다. 해당 라이브러리는 정기적으로 업데이트되며 새로운 NuGet 릴리스를 적극적으로 게시합니다.

IronBarcode 의 주요 특징:

  • 정적 API 디자인: BarcodeReader.Read()BarcodeWriter.CreateBarcode()에는 인스턴스화된 객체가 필요하지 않습니다
  • 크로스 플랫폼: Windows, Linux, macOS, Docker 컨테이너 및 클라우드 함수에서 실행됩니다.
  • System.Drawing에 대한 종속성 없음: 모든 최신 .NET 플랫폼과 호환되는 내부 이미지 파이프라인을 사용합니다.
  • 다중 결과 읽기: 모든 디코딩 호출에서 컬렉션을 반환하며, 여러 바코드 이미지를 지원합니다.
  • PDF 읽기: 외부 추출 과정 없이 PDF 문서에서 바코드를 직접 읽습니다.
  • 자동 형식 감지: 호출자 설정 없이 이미지 내용에서 바코드 유형을 식별합니다.
  • Fluent 생성 출력: 단일 결과 객체에서 PNG, JPEG, SVG, PDF 또는 바이트 배열로 저장할 수 있습니다.
  • 활발한 유지 관리: 보안 패치 및 새로운 기능이 포함된 정기적인 NuGet 릴리스 제공
  • 상업용 라이선스: 프로덕션 용도로 사용하려면 라이선스 키가 필요합니다. 평가판 없이 평가판 모드로 작동

기능 비교

다음 표는 MessagingToolkit.Barcode와IronBarcode의 근본적인 차이점을 간략하게 보여줍니다.

기능 MessagingToolkit.Barcode IronBarcode
최종 업데이트됨 2014 2026년 (활성)
최신 .NET 지원 아니요 예 (.NET 6, 7, 8, 9)
크로스 플랫폼 아니요 (Windows 전용) 예 (Windows, Linux, macOS)
PDF 바코드 읽기 아니요
자동 형식 감지 아니요
활성 보안 패치 아니요
상업적 지원 없음 전문적인 지원 가능

상세 기능 비교

기능 MessagingToolkit.Barcode IronBarcode
유지보수
최종 업데이트됨 2014 2026년 (활성)
NuGet 버전 1.7.0.2 (최종) 최신 정보이며 정기적으로 업데이트됩니다.
활성 개발 아니요
보안 패치 2014년 이후로는 없음 정기적인 패치
플랫폼
.NET Framework 3.5~4.5 아니요
.NET Framework 4.6.2 이상 아니요
.NET Core 아니요
.NET 5 / 6 / 7 / 8 / 9 아니요
ASP.NET Core 아니요
.NET MAUI 아니요
Blazor 아니요
리눅스/macOS 아니요
도커/컨테이너 아니요
독서
입력 유형 비트맵 전용 경로, 스트림, 바이트 배열, PDF
PDF 읽기 아니요 예 (원어민)
자동 형식 감지 아니요
이미지당 여러 개의 바코드 아니요
System.Drawing 종속성 필요함 없음
세대
출력 형식 비트맵 전용 PNG, JPEG, SVG, PDF, 바이트 배열
Fluent 출력 API 아니요
System.Drawing 종속성 필요함 없음
라이선스
상업적 지원 없음 전문적인 지원 가능
규정 준수 감사 결과 버려진 것으로 표시됨 표준 감사를 통과합니다

플랫폼 및 프레임워크 지원

이 두 라이브러리의 플랫폼 역사는 12년의 간격을 두고 전개됩니다. MessagingToolkit.Barcode는 .NET 역사의 특정 시점을 위해 설계되었습니다.IronBarcode현재를 위해 설계되었습니다.

메시징툴킷.바코드 접근법

MessagingToolkit.Barcode는 .NET Framework 3.5, 4.0 및 4.5만 대상으로 합니다. 이 애플리케이션은 .NET Standard 명칭도 없고, .NET Core대상으로 하지도 않으며, 최신 런타임과의 호환성을 위한 별도의 도구도 없습니다. 프로젝트 파일에서 이 패키지를 참조하고 최신 .NET 버전을 대상으로 하는 경우 NuGet 복원 작업이 프레임워크 호환성 오류와 함께 실패하고 빌드가 진행되지 않습니다.

NuGet 메타데이터의 플랫폼 테이블이 이를 구체화합니다. Silverlight 3, 4, 5가 목표물로 지정되어 있습니다. 이 세 가지 버전 모두 2021년 이후 단종되었습니다. 윈도우 폰 7.0, 7.5, 7.8, 8.0이 목록에 있습니다. 모든 버전은 2014년에서 2017년 사이에 지원이 종료되었습니다. 나머지 대상인 .NET Framework 3.5, 4.0 및 4.5는 기술적으로 Windows에서 계속 작동하지만 Microsoft에서 보안 패치만 제공하며 새로운 기능 개발은 더 이상 이루어지지 않습니다.

실질적인 결과는 MessagingToolkit.Barcode가 프레임워크 현대화의 걸림돌 역할을 한다는 것입니다. 이 패키지를 참조하는 net472을 대상으로 하는 프로젝트 파일은 패키지를 먼저 제거하지 않고는 net8.0으로 변경할 수 없습니다. 해당 패키지는 단순히 구식일 뿐만 아니라, 프로젝트가 최신 .NET 기능을 활용할 수 있도록 해주는 대상 프레임워크 변경을 적극적으로 차단합니다.

지원되는 프레임워크 및 배포 대상의 전체 목록은 IronBarcode 플랫폼 문서를 참조하십시오.

IronBarcode접근법

IronBarcode .NET Framework 4.6.2부터 .NET 9까지 지원하며, 기존 Windows 애플리케이션과 최신 크로스 플랫폼 배포를 모두 지원합니다. 별도의 그래픽 라이브러리나 플랫폼별 구성 없이 단일 NuGet 패키지로 지원되는 모든 플랫폼에 설치할 수 있습니다.

크로스 플랫폼 지원은 실제로 의미가 있습니다. IronBarcode의 내부 이미지 파이프라인은 .NET 6에서 Windows 전용이 된 System.Drawing에 의존하지 않습니다. Linux 또는 macOS를 대상으로 하는 애플리케이션(Docker 컨테이너, Linux의 Azure App Service 또는 AWS Lambda에서 실행되는 애플리케이션 포함)은 Windows 배포와 동일한IronBarcodeAPI 및 동작을 사용합니다.

API 설계

메시징 툴킷.바코드의 API 표면은 인스턴스 기반 객체와 System.Drawing.Bitmap 입력을 중심으로 설계되었습니다. IronBarcode의 API는 정적이며 여러 입력 유형을 허용합니다. 두 라이브러리 모두 바코드를 인코딩 및 디코딩하지만 호출 방식은 상당히 다릅니다.

메시징툴킷.바코드 접근법

메시징 툴킷 바코드로 읽으려면 BarcodeDecoder 인스턴스를 만들고, 이미지 파일에서 Bitmap를 구성하고, 비트맵을 .Decode()에 전달하고, .Text에 액세스하기 전에 결과가 null인지 확인해야 합니다. 생성은 BarcodeEncoder를 생성하고, .Format 속성을 설정하고, .Encode()를 호출하여 Bitmap를 받은 다음 해당 비트맵에서 .Save()를 호출하는 동일한 인스턴스 패턴을 따랐습니다.

// Only compiles on .NET Framework 4.5or earlier
using MessagingToolkit.Barcode;
using System.Drawing;

// Reading
var barcodeReader = new BarcodeDecoder();
var bitmap = new Bitmap("barcode.png");
var result = barcodeReader.Decode(bitmap);
string value = result?.Text;
string format = result?.BarcodeFormat.ToString();

// Writing
var barcodeWriter = new BarcodeEncoder();
barcodeWriter.Format = BarcodeFormat.QrCode;
var outputBitmap = barcodeWriter.Encode("Hello World");
outputBitmap.Save("output.png");
// Only compiles on .NET Framework 4.5or earlier
using MessagingToolkit.Barcode;
using System.Drawing;

// Reading
var barcodeReader = new BarcodeDecoder();
var bitmap = new Bitmap("barcode.png");
var result = barcodeReader.Decode(bitmap);
string value = result?.Text;
string format = result?.BarcodeFormat.ToString();

// Writing
var barcodeWriter = new BarcodeEncoder();
barcodeWriter.Format = BarcodeFormat.QrCode;
var outputBitmap = barcodeWriter.Encode("Hello World");
outputBitmap.Save("output.png");
Imports MessagingToolkit.Barcode
Imports System.Drawing

' Reading
Dim barcodeReader As New BarcodeDecoder()
Dim bitmap As New Bitmap("barcode.png")
Dim result = barcodeReader.Decode(bitmap)
Dim value As String = If(result?.Text, Nothing)
Dim format As String = If(result?.BarcodeFormat.ToString(), Nothing)

' Writing
Dim barcodeWriter As New BarcodeEncoder()
barcodeWriter.Format = BarcodeFormat.QrCode
Dim outputBitmap = barcodeWriter.Encode("Hello World")
outputBitmap.Save("output.png")
$vbLabelText   $csharpLabel

Bitmap 종속성은 부수적인 것이 아닙니다. System.Drawing.Bitmap는 Windows에서 GDI+가 필요합니다. .NET 6 이상에서 Linux 또는 macOS에서 System.Drawing를 사용하려고 하면 런타임에 PlatformNotSupportedException가 발생합니다. 메시징 툴킷.바코드 어셈블리를 최신 .NET 프로젝트에서 로드할 수 있더라도 프레임워크 타깃이 누락되어 로드할 수 없는 경우 Bitmap 종속성으로 인해 크로스 플랫폼 배포가 불가능합니다.

IronBarcode접근법

IronBarcode 전체적으로 정적 메서드를 사용합니다. BarcodeReader.Read()는 파일 경로, Stream, 바이트 배열 또는 PDF 파일 경로를 허용하며, Bitmap는 필요하지 않습니다. 결과는 null 값을 허용하는 단일 객체가 아니라 컬렉션입니다. 생성은 매개변수로 전달된 인코딩 유형과 함께 BarcodeWriter.CreateBarcode()을 사용하며 결과 객체는 저장 메서드를 직접 노출합니다.

// Works on .NET 6, 7, 8, 9 — Windows, Linux, macOS, Docker
using IronBarCode;

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

// Reading
var results = BarcodeReader.Read("barcode.png");
string value = results.FirstOrDefault()?.Value;
string format = results.FirstOrDefault()?.Format.ToString();

// Writing
BarcodeWriter.CreateBarcode("Hello World", BarcodeEncoding.QRCode)
    .SaveAsPng("output.png");
// Works on .NET 6, 7, 8, 9 — Windows, Linux, macOS, Docker
using IronBarCode;

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

// Reading
var results = BarcodeReader.Read("barcode.png");
string value = results.FirstOrDefault()?.Value;
string format = results.FirstOrDefault()?.Format.ToString();

// Writing
BarcodeWriter.CreateBarcode("Hello World", BarcodeEncoding.QRCode)
    .SaveAsPng("output.png");
Imports IronBarCode

' Works on .NET 6, 7, 8, 9 — Windows, Linux, macOS, Docker
IronBarCode.License.LicenseKey = "YOUR-KEY"

' Reading
Dim results = BarcodeReader.Read("barcode.png")
Dim value As String = results.FirstOrDefault()?.Value
Dim format As String = results.FirstOrDefault()?.Format.ToString()

' Writing
BarcodeWriter.CreateBarcode("Hello World", BarcodeEncoding.QRCode) _
    .SaveAsPng("output.png")
$vbLabelText   $csharpLabel

이미지에서 바코드를 읽는 방법에 대한 자세한 지침은 이미지에서 바코드를 읽는 방법을 참조하세요. Code 128, EAN-13, UPC 형식을 포함한 1D 바코드를 생성하는 방법에 대해서는 1D 바코드 생성 방법을 참조하십시오.

보안 및 유지 관리

방치된 도서관은 활발하게 관리되는 도서관과는 근본적으로 다른 보안 상태를 지니고 있다. 차이점은 CVE가 제출되었는지 여부가 아니라, CVE가 실제로 해결될 수 있는지 여부입니다.

메시징툴킷.바코드 접근법

MessagingToolkit.Barcode는 2014년 이후로 업데이트되지 않았습니다. 따라서 해당 날짜 이후에 발견된 취약점(라이브러리 자체의 이미지 파싱 로직, ZXing 기반 디코딩 구현 또는 관련 종속성에서 발생한 취약점)은 영구적으로 패치되지 않은 상태로 남아 있습니다. 알림을 보낼 유지 관리자가 없고, 모니터링할 보안 권고 프로세스도 없으며, 수정 사항이 개발되더라도 사용자에게 전달될 수 있는 배포 메커니즘도 없습니다.

보안 스캔 도구(Snyk, WhiteSource, GitHub Dependabot, NuGet audit)는 버려진 패키지를 고위험군으로 표시합니다. 해당 플래그 지정은 CVE가 확정되었는지 여부와 관계가 없습니다. 이는 확인된 취약점을 해결할 수 있는 절차가 전혀 없음을 반영합니다. 이는 활발한 관리자와 문서화된 보안 대응 프로세스를 갖춘 라이브러리와는 완전히 다른 위험 프로필입니다.

PCI DSS, HIPAA, SOC 2, ISO 27001과 같은 규정 준수 체계 하에서 운영되는 팀의 경우 이는 실질적인 감사 결과에 영향을 미칩니다. 이러한 프레임워크는 타사 소프트웨어에 대한 적극적인 패치 관리가 필요합니다. 취약점에 대한 대응 메커니즘이 없는 방치된 패키지는 특정 CVE가 보고되었는지 여부와 관계없이 규정 준수 감사를 통과하지 못합니다. 감사 결과는 유지 관리 가능한 종속성이 없다는 것이지, 알려진 취약점이 있다는 것이 아닙니다.

IronBarcode접근법

IronBarcode 보안 패치, 종속성 업데이트 및 새로운 기능을 포함하는 정기적인 NuGet 업데이트를 받습니다. 이 라이브러리는 Iron Software 에서 개발했으며, Iron Software는 문서화된 지원 프로세스를 유지하고 각 업데이트에 대한 릴리스 노트를 게시합니다. 보안 권고 사항은 해당되는 경우 패치 릴리스에서 해결됩니다.

IronBarcode MessagingToolkit.Barcode에서 지원했던 모든 형식(QR 코드, Code 128, EAN-13, EAN-8, UPC-A 등)을 포함하여 50개 이상의 바코드 형식을 지원합니다. 또한 이전 라이브러리에서 지원하지 않았던 형식(DataMatrix, Aztec, PDF417, 다양한 최신 2D 심볼)도 지원합니다.

API 매핑 참조

다음 표는 MessagingToolkit.Barcode API 요소를 해당IronBarcode요소에 매핑한 것입니다.

MessagingToolkit.Barcode IronBarcode 노트
@@--코드-51559--@@ 정적 - BarcodeReader.Read() 인스턴스가 필요하지 않습니다.
@@--코드-51561--@@ @@--코드-51562--@@ 경로, 스트림 또는 바이트 배열을 허용합니다.
@@--코드-51563--@@ @@--코드-51564--@@ 부동산 이름 변경됨
@@--코드-51565--@@ @@--코드-51566--@@ 부동산 이름 변경됨
@@--코드-51567--@@ 정적 - BarcodeWriter.CreateBarcode() 인스턴스가 필요하지 않습니다.
@@--코드-51569--@@ @@--코드-51577--@@(매개변수) 형식이 속성이 아니라 매개변수로 전달됩니다.
barcodeWriter.Encode("data")Bitmap를 반환합니다 @@--코드-51573--@@ 비트맵이 아닌 플루언트 결과를 반환합니다.
@@--코드-51574--@@ @@--코드-51575--@@ 결과 객체에 대한 Fluent 메서드
@@--코드-51576--@@ @@--코드-51577--@@ 열거형 네임스페이스와 값의 이름이 변경되었습니다.
@@--코드-51578--@@ @@--코드-51579--@@ 동일한 상징적 이름
찾을 수 없으면 null을 반환합니다. 빈 컬렉션을 반환합니다. .Any() 또는 .FirstOrDefault()를 확인하세요
.NET Framework 3.5~4.5에서만 사용 가능 .NET 4.6.2부터 .NET 9까지 완벽한 최신 .NET 지원

MessagingToolkit.Barcode에서IronBarcode로 전환을 고려할 때 팀에 중요한 사항

팀이 이러한 전환을 평가하게 되는 시나리오는 공통적인 구조를 가지고 있습니다. 즉, 프로젝트 요구 사항이 2014년 프레임워크 시대의 라이브러리가 수용할 수 있는 범위를 넘어섰다는 것입니다.

프레임워크 현대화 요구사항

가장 흔한 원인은 계획되었거나 진행 중인 .NET 업그레이드입니다. 팀에서 프로젝트를 .NET Framework 4.x에서 .NET 6 이상으로 마이그레이션하기로 결정하면 최신 프레임워크를 지원하지 않는 패키지가 있는지 종속성 그래프를 검토해야 합니다. MessagingToolkit.Barcode는 최신 대상 프레임워크 명칭에 대해 해결할 수 없는 차단 종속성으로 해당 감사 보고서에 표시됩니다. 따라서IronBarcode로의 마이그레이션은 별도의 작업이 아니라 더 광범위한 .NET 업그레이드를 위한 필수 조건입니다. 애플리케이션 현대화를 진행하는 팀은 일반적으로 업그레이드 분석 단계 초기에 이러한 종속성을 발견합니다.

보안 및 규정 준수 의무

두 번째 시나리오는 보안 검토 및 규정 준수 감사와 관련이 있습니다. PCI DSS, HIPAA, SOC 2 또는 ISO 27001 프레임워크에 따라 운영되는 팀은 제3자 의존성 상태를 검사하는 정기적인 감사를 받습니다. 보안 대응 메커니즘이 없는 방치된 패키지는 특정 취약점이 발견되었는지 여부와 관계없이 프로세스상의 이유로 이러한 감사를 통과하지 못합니다. 보안 팀에서 MessagingToolkit.Barcode를 규정을 준수하지 않는 종속성으로 표시하는 경우 해결 방법은 교체입니다. 적용할 패치도 없고, 업그레이드할 버전도 없으며, 보안 권고를 위해 공급업체에 연락할 필요도 없습니다.IronBarcode로의 마이그레이션은 유지 관리 경로가 없는 종속성을 정기적인 보안 업데이트를 받는 종속성으로 교체함으로써 감사 결과를 해결합니다.

역량 확장

세 번째 시나리오는 새로운 요구 사항이 MessagingToolkit.Barcode가 제공할 수 있는 범위를 넘어설 때 발생합니다. 스캔한 문서나 PDF 파일을 처리하는 애플리케이션은 해당 형식에서 바코드를 읽어야 합니다. MessagingToolkit.Barcode는 비트맵 입력만 허용했기 때문에 별도의 추출 레이어 없이는 PDF를 읽을 수 없었습니다. 웹 전송용 바코드를 생성하는 애플리케이션은 SVG 또는 base64 출력이 필요합니다. MessagingToolkit.Barcode는 Bitmap를 반환하므로 추가 변환 단계와 System.Drawing.Imaging 의존성이 필요합니다. 제품 요구 사항이 이러한 영역으로 확장되면 기존 라이브러리의 한계는 API 표면 내에서 해결할 수 없는 엔지니어링 제약 조건이 됩니다.

플랫폼 목표 성장률

네 번째 시나리오는 새로운 배포 대상을 추가하는 것입니다. 처음에는 Windows 전용 애플리케이션을 구축했다가 Linux 호스팅, macOS 개발 환경, Docker 컨테이너 또는 Linux 런타임의 클라우드 기능으로 확장하는 팀은 System.Drawing 종속성을 차단하는 문제에 직면하게 됩니다. 메시징툴킷.바코드는 모든 입력 및 출력 작업에 @@--코드-51585--@@가 필요하며, @@--코드-51586--@@는 .NET 6 이상에서 Windows 전용입니다. Windows 이외의 배포 대상을 사용하는 경우, 이 종속성은 단순한 호환성 문제가 아니라 런타임 오류로 이어집니다. IronBarcode로 마이그레이션하면 System.Drawing 요구 사항이 완전히 제거되어 팀이 달성하고자 하는 크로스 플랫폼 배포가 가능합니다.

일반적인 마이그레이션 고려사항

MessagingToolkit.Barcode에서IronBarcode로 전환하는 팀은 마이그레이션 방식에 영향을 미치는 몇 가지 기술적 차이점을 숙지해야 합니다.

네임스페이스 교체

코드-51588--@@가 포함된 모든 파일은 @@--코드-51589--@@로 업데이트해야 합니다. 이전 네임스페이스 문자열을 코드베이스 전체에서 검색하는 것이 마이그레이션 범위를 파악하는 가장 확실한 시작점입니다. 메시징 툴킷.바코드에 사용되는 System.Drawing 유형만을 위해 Bitmap를 가져오는 파일은 IronBarcode가 적용되면 IronBarcode가 필요하지 않으므로 해당 가져오기를 완전히 제거할 수 있습니다.

목표 프레임워크 변경

프로젝트 파일에서 MessagingToolkit.Barcode를 제거하면 대상 프레임워크의 모니커를 업데이트할 수 있습니다. 차단 종속성이 제거되면 <TargetFramework>net472</TargetFramework>에서 <TargetFramework>net8.0</TargetFramework>로 변경할 수 있습니다.IronBarcode이러한 변경 사항의 양면을 모두 지원합니다. .NET Framework 4.6.2 및 .NET 8과 호환되므로 프레임워크 업그레이드가 완료되기 전에 설치할 수 있어 마이그레이션을 한 번에 수행하는 대신 단계적으로 진행할 수 있습니다.

BarcodeWriter 네임스페이스 차이점

메시징 툴킷 바코드는 BarcodeEncoder를 생성 클래스로 사용하고 .Encode()를 호출하기 전에 형식을 속성(barcodeWriter.Format = BarcodeFormat.QrCode)으로 설정했습니다. IronBarcode는 BarcodeWriter.CreateBarcode()를 정적 메서드로 사용하며 인코딩 유형을 매개변수로 전달합니다. 열거형 이름이 다릅니다: BarcodeFormat.QrCodeBarcodeEncoding.QRCode으로, BarcodeFormat.Code128BarcodeEncoding.Code128으로 바뀝니다. CreateBarcode()의 결과는 .SaveAsPng(), .SaveAsJpeg(), .SaveAsSvg() 및 기타 출력 메서드가 있는 유창한 객체이며 Bitmap을 반환하지 않습니다.

IronBarcode추가 기능

IronBarcode 위 섹션에서 설명한 기능 외에도 다양한 기능을 제공합니다.

  • PDF 바코드 읽기: BarcodeReader.Read("document.pdf")는 PDF 문서의 모든 페이지에서 바코드를 읽고 페이지 번호 메타데이터가 포함된 결과를 반환합니다. 별도의 PDF 추출 과정이 필요하지 않습니다.
  • 일괄 처리: 이미지와 PDF를 포함한 여러 파일을 한 번에 읽을 수 있습니다. 자동 형식 감지는 파일 형식뿐만 아니라 바코드 유형에도 적용됩니다.
  • QR 코드 사용자 지정: 생성된 QR 코드에는 QRCodeWriter API를 통해 임베디드 로고, 사용자 지정 색상 및 조정 가능한 조용한 영역이 포함될 수 있습니다.
  • 비동기 멀티스레딩: BarcodeReader.ReadAsync()은 ASP.NET Core및 기타 비동기 .NET 애플리케이션의 비동기/대기 패턴과의 통합을 위한 네이티브 비동기 오버로드를 제공합니다.
  • 다양한 출력 형식 지원: 생성된 바코드는 PNG, JPEG, SVG, PDF 형식으로 저장하거나, HTML 응답 또는 데이터베이스 저장에 직접 삽입할 수 있도록 base64로 인코딩된 문자열로 가져올 수 있습니다.

.NET 호환성 및 미래 준비

IronBarcode .NET Framework 4.6.2부터 .NET 9까지 모든 최신 .NET 버전을 지원하며, 새로운 .NET 릴리스가 출시되면 그에 맞춰 업데이트를 받습니다. 라이브러리의 내부 이미지 파이프라인은 System.Drawing 또는 기타 플랫폼별 그래픽 API에 대한 종속성을 피하므로 동일한 패키지와 API가 Windows, Linux, macOS 및 컨테이너 환경 전반에서 동일하게 작동합니다. .NET 10 및 이후 버전이 출시됨에 따라 IronBarcode의 활발한 개발 주기는 라이브러리 제약으로 인해 팀이 .NET 업그레이드를 연기할 필요 없이 호환성을 유지하도록 보장합니다.

결론

MessagingToolkit.Barcode와IronBarCode.NET 라이브러리 개발의 매우 다른 두 시점을 나타냅니다. MessagingToolkit.Barcode는 .NET Framework 4.x 및 2011년부터 2014년까지의 모바일 플랫폼을 위해 개발되었습니다.IronBarcode2026년의 .NET 환경을 위해 개발되었으며, 크로스 플랫폼, 컨테이너 친화적이고 활발하게 유지 관리되고 있습니다. 둘 사이의 기술적 격차는 기능적 동등성의 문제가 아닙니다. 이는 런타임 호환성 문제입니다. MessagingToolkit.Barcode는 최신 .NET 프로젝트에서 컴파일되지 않으므로 대부분의 실제 시나리오에서 두 가지 경쟁 옵션 간의 비교가 아닙니다.

MessagingToolkit.Barcode는 다음과 같은 제한적이고 합법적인 사용 사례를 차지합니다. .NET Framework 4.x만을 대상으로 하고, Windows에서만 실행되며, 더 최신 런타임으로 업그레이드되지 않고, 보안 감사 요구 사항이 적용되지 않는 환경에서 작동하는 프로젝트입니다. 해당 특정 구성에서는 라이브러리가 출력을 생성하며 기술적 차단 요인이 적용되지 않습니다. 그러한 구성은 2026년에 활발히 진행 중인 프로젝트 중 극히 일부만을 설명하며, 12년 동안 패치가 제공되지 않았다는 보안 문제는 구성과 관계없이 모든 경우에 적용됩니다.

IronBarcode .NET 6, 7, 8 또는 9와 같은 최신 .NET 환경에서 바코드 기능이 필요한 팀에 적합합니다. Linux 또는 macOS 배포; Docker 또는 클라우드 호스팅 환경; ASP.NET Core애플리케이션; 또는 PDF를 처리하거나 Windows 비트맵 이외의 출력 형식의 바코드가 필요한 모든 프로젝트에 적합합니다. 정적 API는 인스턴스 기반 모델의 인스턴스화 오버헤드를 줄이고 System.Drawing 종속성이 없기 때문에 의미 있는 크로스 플랫폼 제약이 제거됩니다.

기본적인 평가 방법은 간단합니다. .NET Framework 4.x를 사용하고 있으며 변경 계획이 없는 팀의 경우 MessagingToolkit.Barcode는 해당 제약 조건 내에서 계속 작동합니다. 현대화, 규정 준수, 크로스 플랫폼 배포 또는 기능 확장과 같은 다른 모든 시나리오에서는 MessagingToolkit.Barcode는 적합한 옵션이 아니며,IronBarcode간결하고 잘 정의된 마이그레이션 경로를 통해 MessagingToolkit.Barcode를 완벽하게 대체할 수 있습니다.

자주 묻는 질문

메시징 툴킷 바코드란 무엇인가요?

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

메시징툴킷 바코드와 아이언바코드의 주요 차이점은 무엇인가요?

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

메시징툴킷 바코드보다 IronBarcode가 라이선스 취득이 더 쉬운가요?

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

IronBarcode는 메시징툴킷 바코드가 지원하는 모든 바코드 형식을 지원하나요?

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는 일괄 처리를 어떻게 처리하나요?

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 인스톨러나 런타임 파일은 필요하지 않습니다.

메시징툴킷과 달리 구매하기 전에 IronBarcode를 평가할 수 있나요?

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

메시징툴킷 바코드와 IronBarcode의 가격 차이는 무엇인가요?

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

메시징툴킷 바코드에서 아이언바코드로 마이그레이션하는 것은 간단하나요?

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

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

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

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

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

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

아이언 서포트 팀

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