.NET用Aspose.BarCodeとIronBarcodeの比較:C#バーコードライブラリの比較
バーコード vs IronBarcode: 複数パッケージ生成 vs 単一パッケージ生成と読み取り
Barcoderで単一のPNGを生成するには、2つのパッケージをインストールし、3つの名前空間をインポートし、フォーマット固有のクラスでエンコードし、オプションオブジェクトを使用してレンダラーを作成し、ストリームを開き、そこにレンダリングし、ストリームを破棄します。 それが幸福への道のりの全てであり、しかもそれは執筆活動のみを対象としている。 Barcoderには読み取りAPIが一切ありません。 このライブラリはMITライセンスを採用しており、オープンソースであるため、特に商用依存を避けたいチームにとっては、一見魅力的に映る。 しかし、断片化されたアーキテクチャ(最低でも2つのNuGetパッケージが必要で、バーコード形式ごとに異なるエンコーダークラスを使用し、エンコードと出力を完全に分離するレンダラーパイプラインを採用している)は、最も単純な単一フォーマット生成シナリオを超えて要件が複雑化すると、すぐに大きな摩擦を生む。
バーコードを理解する
Barcoderは、MITライセンスの下でNuGetから入手可能なオープンソース for .NETバーコード生成ライブラリです。 Code128、QR、DataMatrix、EAN-13、PDF417などのバーコード形式にデータをエンコードします。 設計哲学は、エンコードとレンダリングを完全に分離しています。コアライブラリはIBarcodeオブジェクト(データ構造)を生成し、別のレンダラーパッケージがそのオブジェクトを画像に変換します。
この設計の実際的な影響は、最初の設置時から明らかになる。 PNG出力が可能になる前に2つのNuGetパッケージが必要です: エンコード用のBarcoder.Renderer.Image。 SVG出力も必要な場合は、3番目のパッケージ — Barcoder.Renderer.Svg — を追加する必要があります。 これらのパッケージはそれぞれ独立してバージョン管理されているため、一方のアップデートが他方のアップデートと自動的に同期するわけではなく、プロジェクト全体で同期を維持するには定期的なメンテナンス作業が必要となります。
Barcoderの主なアーキテクチャ特性:
- PNG出力に必要な2つのNuGetパッケージ: エンコード用の
Barcoder.Renderer.Image。 - フォーマット固有のエンコーダークラス: 各バーコードタイプには自身の名前空間内に独自のエンコーダーがあります —
Code128Encoder,QrEncoder,DataMatrixEncoderなど。 IBarcodeには出力メソッドがありません: エンコードの結果はプレーンなデータオブジェクトです。 レンダラーは別途構築する必要があり、ストリームを開いてレンダリングし、閉じる必要があります。 -画像レンダラー for .NET Frameworkサポートが終了しました: .NET Framework上のTeamsでは画像レンダラーパッケージを使用できません -読み取り機能なし:バーコーダーは画像、ファイル、またはその他のソースからのバーコードをデコードできません- 独立したパッケージのバージョン管理:
BarcoderとBarcoder.Renderer.Imageは依存関係の更新中に互いにずれ込む可能性があります。
複数パッケージ生成ワークフロー
インストール事例を見れば、その規模の違いがすぐに分かるだろう。 Barcoderでは、基本的なPNG出力には2つの別々のパッケージが必要です。
dotnet add package Barcoder
dotnet add package Barcoder.Renderer.Image
dotnet add package Barcoder
dotnet add package Barcoder.Renderer.Image
Code128バーコードを生成してPNGとして保存する完全なワークフローには、3つの名前空間インポート、フォーマット固有のエンコーダ呼び出し、オプションオブジェクトを使用したレンダラーの構築、ファイルストリーム、およびレンダリング呼び出しが必要です。
using Barcoder;
using Barcoder.Code128;
using Barcoder.Renderers;
IBarcode barcode = Code128Encoder.Encode("PRODUCT-12345", false);
var renderer = new ImageRenderer(new ImageRendererOptions
{
ImageFormat = ImageFormat.Png,
PixelSize = 2,
BarHeightFor1DBarcode = 50
});
using var stream = File.OpenWrite("barcode.png");
renderer.Render(barcode, stream);
using Barcoder;
using Barcoder.Code128;
using Barcoder.Renderers;
IBarcode barcode = Code128Encoder.Encode("PRODUCT-12345", false);
var renderer = new ImageRenderer(new ImageRendererOptions
{
ImageFormat = ImageFormat.Png,
PixelSize = 2,
BarHeightFor1DBarcode = 50
});
using var stream = File.OpenWrite("barcode.png");
renderer.Render(barcode, stream);
Imports Barcoder
Imports Barcoder.Code128
Imports Barcoder.Renderers
Imports System.IO
Dim barcode As IBarcode = Code128Encoder.Encode("PRODUCT-12345", False)
Dim renderer = New ImageRenderer(New ImageRendererOptions With {
.ImageFormat = ImageFormat.Png,
.PixelSize = 2,
.BarHeightFor1DBarcode = 50
})
Using stream As FileStream = File.OpenWrite("barcode.png")
renderer.Render(barcode, stream)
End Using
バーコード形式の切り替えはパラメータの変更ではなく、別の名前空間をインポートして別のクラスを呼び出す必要があります。 DataMatrixEncoder.Encodeは文字列のみを受け取ります。 特定の形式でバーコードを作成するための統一されたインターフェースは存在しない。
IronBarcodeを理解する
IronBarcodeは、単一のNuGetパッケージでバーコードの生成と読み取りを網羅する商用.NETバーコードライブラリです。 それは、BarcodeEncoding列挙体を経由して行われます。
このライブラリは、バーコードコードの最初の行を記述してから、正常に動作する出力が得られるまでの時間を最小限に抑えるように設計されています。 生成、読み取り、PDFサポート、ロゴ埋め込みQRコード、およびすべての出力タイプが1つのパッケージに含まれており、バージョン管理も1つで済みます。
IronBarcodeの主な特徴:
- 単一のNuGetパッケージ:
IronBarcodeは世代、読み取り、PDF、およびすべての出力フォーマットをカバーしています。 - 統一されたフォーマット選択: すべてのバーコードタイプは
BarcodeEncoding列挙体の値を通じてアドレス指定されます。 no format-specific imports or classes - 結果オブジェクトの出力メソッド:
GeneratedBarcodeはSaveAsPng,ToPngBinaryData,ToStream,SaveAsSvg, およびResizeToを直接公開しています。 - ネイティブの読み取り機能:
BarcodeReader.Read()は、画像ファイル、バイト配列、ストリーム、PDFから外部ライブラリを使わずにデコードします。 - MAUI、Docker、AWS Lambda、Azureのサポート:標準的なデスクトップおよびサーバーシナリオを超えた、文書化されたデプロイメントターゲット
- .NET Frameworkおよび最新 for .NETを完全にサポート:.NET Framework4.6.2 から.NET 9 まで
機能比較
| フィーチャー | バーコード | IronBarcode |
|---|---|---|
| 必要なNuGetパッケージ | 最低2名 | 1 |
| バーコード生成 | はい | はい |
| バーコード読み取り | なし | はい |
| ライセンス | MIT(オープンソース) | 商用 |
| .NET Frameworkのサポート | 画像レンダラーにドロップされました | .NET Framework4.6.2以降 |
| PDFを読む | なし | はい |
| ロゴ入りQRコード | なし | はい |
詳細な機能比較
| フィーチャー | バーコード | IronBarcode |
|---|---|---|
| 世代 | ||
| Code128生成 | はい | はい |
| QRコード生成 | はい | はい |
| データマトリックスの生成 | はい | はい |
| EAN-13、PDF417 | はい | はい |
| ロゴが埋め込まれたQRコード | なし | はい — .AddBrandLogo(path) |
| 列挙型で選択されたフォーマット | いいえ — フォーマットごとに個別のエンコーダークラス | はい — BarcodeEncoding enum |
| 出力 | ||
| PNG出力 | はい(Barcoder.Renderer.Image経由) | はい — .SaveAsPng() |
| SVG出力 | はい (Barcoder.Renderer.Svg 経由) | はい — .SaveAsSvg() |
| バイナリデータ出力 | はい(MemoryStream経由) | はい — .ToPngBinaryData() |
| ストリーム出力 | はい(手動ストリーム管理) | はい — .ToStream() |
| 直接サイズ変更API | いいえ — PixelSize スケールファクターのみ |
はい — .ResizeTo(width, height) |
| 読む | ||
| 画像ファイルから読み込む | なし | はい |
| PDFから読み込む | なし | はい |
| ストリームから読み込む | なし | はい |
| 複数バーコード検出 | なし | はい — ExpectMultipleBarcodes |
| 読書速度制御 | なし | はい — ReadingSpeed enum |
| プラットフォーム | ||
| .NET Core / .NET 5 以上 | はい | はい |
| .NET Framework | 画像レンダラーにドロップされました | .NET Framework4.6.2以降 |
| .NET 9 | 記録なし | はい |
| MAUI(iOS、Android、Windows、macOS) | なし | はい |
| Docker / Azure / AWS Lambda | 記録なし | はい |
| パッケージ | ||
| 独立したパッケージのバージョン管理リスク | はい | いいえ — シングルパッケージ |
| フォーマットごとの名前空間 | はい | いいえ — 単一のusing IronBarCode |
| ライセンスについて | ||
| ライセンスモデル | MIT(オープンソース) | 商用 |
| 価格 | 無料 | Lite: 749ドル、Plus: 1,499ドル、Professionalプラン:2,999ドル、アンリミテッドプラン:5,999ドル |
フォーマット選択および生成API
バーコードフォーマットの選択方法の構造は、バーコードを生成するコードベースのあらゆる部分に影響を及ぼす。
バーコード方式
バーコード処理では、フォーマット選択は別々の名前空間にある別々のエンコーダークラスを通して行われます。 形式を切り替えるには、新しいusingディレクティブを追加し、異なるメソッドシグネチャを持つ異なるクラスを使用する必要があります。
// Code128
using Barcoder.Code128;
IBarcode barcode = Code128Encoder.Encode("data", false);
// QR Code
using Barcoder.Qr;
IBarcode barcode = QrEncoder.Encode("data", ErrorCorrectionLevel.M, false, false);
// DataMatrix
using Barcoder.DataMatrix;
IBarcode barcode = DataMatrixEncoder.Encode("data");
// Code128
using Barcoder.Code128;
IBarcode barcode = Code128Encoder.Encode("data", false);
// QR Code
using Barcoder.Qr;
IBarcode barcode = QrEncoder.Encode("data", ErrorCorrectionLevel.M, false, false);
// DataMatrix
using Barcoder.DataMatrix;
IBarcode barcode = DataMatrixEncoder.Encode("data");
Imports Barcoder.Code128
Imports Barcoder.Qr
Imports Barcoder.DataMatrix
' Code128
Dim barcode As IBarcode = Code128Encoder.Encode("data", False)
' QR Code
barcode = QrEncoder.Encode("data", ErrorCorrectionLevel.M, False, False)
' DataMatrix
barcode = DataMatrixEncoder.Encode("data")
各エンコーダーは独自のパラメータ契約を持っている。 既存のプロジェクトに新しいフォーマットを追加することは、単語一つ変更するだけで済むような簡単なことではありません。新しい名前空間のインポート、新しいクラスの学習、そして新しいパラメーターの理解が必要になります。
IronBarcodeのアプローチ
IronBarcodeは、統一されたBarcodeEncoding列挙体を通じてすべてのフォーマット選択を行います。 新しいフォーマットを追加するには、列挙値に単語を1つ変更するだけです。
// NuGet: dotnet add package IronBarcode
using IronBarCode;
// Code128
BarcodeWriter.CreateBarcode("data", BarcodeEncoding.Code128).SaveAsPng("code128.png");
// DataMatrix
BarcodeWriter.CreateBarcode("data", BarcodeEncoding.DataMatrix).SaveAsPng("dm.png");
// QR — dedicated method
QRCodeWriter.CreateQrCode("data", 500).SaveAsPng("qr.png");
// QR with logo
QRCodeWriter.CreateQrCode("data", 500)
.AddBrandLogo("logo.png")
.SaveAsPng("qr-branded.png");
// NuGet: dotnet add package IronBarcode
using IronBarCode;
// Code128
BarcodeWriter.CreateBarcode("data", BarcodeEncoding.Code128).SaveAsPng("code128.png");
// DataMatrix
BarcodeWriter.CreateBarcode("data", BarcodeEncoding.DataMatrix).SaveAsPng("dm.png");
// QR — dedicated method
QRCodeWriter.CreateQrCode("data", 500).SaveAsPng("qr.png");
// QR with logo
QRCodeWriter.CreateQrCode("data", 500)
.AddBrandLogo("logo.png")
.SaveAsPng("qr-branded.png");
Imports IronBarCode
' Code128
BarcodeWriter.CreateBarcode("data", BarcodeEncoding.Code128).SaveAsPng("code128.png")
' DataMatrix
BarcodeWriter.CreateBarcode("data", BarcodeEncoding.DataMatrix).SaveAsPng("dm.png")
' QR — dedicated method
QRCodeWriter.CreateQrCode("data", 500).SaveAsPng("qr.png")
' QR with logo
QRCodeWriter.CreateQrCode("data", 500) _
.AddBrandLogo("logo.png") _
.SaveAsPng("qr-branded.png")
実運用環境で使用する場合は、アプリケーション起動時にライセンスキーを追加してください。
IronBarCode.License.LicenseKey = "YOUR-LICENSE-KEY";
IronBarCode.License.LicenseKey = "YOUR-LICENSE-KEY";
Imports IronBarCode
IronBarCode.License.LicenseKey = "YOUR-LICENSE-KEY"
IronBarcodeのバーコード生成に関するドキュメントには、スタイル設定、余白、色のカスタマイズなど、生成オプションの全範囲が記載されています。
レンダリングと出力オプション
バーコードの出力をファイル、バイナリデータ、ストリームなど様々な形式に変換することは一般的な要件ですが、各ライブラリによってその処理方法は大きく異なります。
バーコード方式
Barcoderにおけるエンコードとレンダリングの分離は、アーキテクチャ上の原則としては妥当だが、出力フォーマットを変更するたびにオーバーヘッドが発生する。 ファイルへの保存にはFileStreamを開く必要があります。 バイナリデータを取得するためには、ToArray()を呼び出す必要があります。 すべての出力シナリオにおいて、オプションオブジェクトを使用してレンダラーを構築する必要があります。
// File output
var renderer = new ImageRenderer(new ImageRendererOptions
{
ImageFormat = ImageFormat.Png,
PixelSize = 3,
BarHeightFor1DBarcode = 80
});
using var stream = File.OpenWrite("barcode-large.png");
renderer.Render(barcode, stream);
// Binary data via MemoryStream
using var ms = new MemoryStream();
renderer.Render(barcode, ms);
byte[] pngBytes = ms.ToArray();
// File output
var renderer = new ImageRenderer(new ImageRendererOptions
{
ImageFormat = ImageFormat.Png,
PixelSize = 3,
BarHeightFor1DBarcode = 80
});
using var stream = File.OpenWrite("barcode-large.png");
renderer.Render(barcode, stream);
// Binary data via MemoryStream
using var ms = new MemoryStream();
renderer.Render(barcode, ms);
byte[] pngBytes = ms.ToArray();
Imports System.IO
' File output
Dim renderer = New ImageRenderer(New ImageRendererOptions With {
.ImageFormat = ImageFormat.Png,
.PixelSize = 3,
.BarHeightFor1DBarcode = 80
})
Using stream = File.OpenWrite("barcode-large.png")
renderer.Render(barcode, stream)
End Using
' Binary data via MemoryStream
Using ms = New MemoryStream()
renderer.Render(barcode, ms)
Dim pngBytes As Byte() = ms.ToArray()
End Using
サイズ制御は間接的です: PixelSize はバーコードのモジュールサイズに対するスケール乗数であり、直接的な幅と高さの指定ではありません。
IronBarcodeのアプローチ
IronBarcodeは、どんな出力形式にも連鎖的なメソッド呼び出しによって到達できるGeneratedBarcodeオブジェクトを返します。 レンダラーの構築も、ストリーム管理も不要です。
using IronBarCode;
var barcode = BarcodeWriter.CreateBarcode("PRODUCT-12345", BarcodeEncoding.Code128)
.ResizeTo(400, 100);
// File
barcode.SaveAsPng("barcode.png");
// Bytes
byte[] pngBytes = barcode.ToPngBinaryData();
// Stream
System.IO.Stream stream = barcode.ToStream();
using IronBarCode;
var barcode = BarcodeWriter.CreateBarcode("PRODUCT-12345", BarcodeEncoding.Code128)
.ResizeTo(400, 100);
// File
barcode.SaveAsPng("barcode.png");
// Bytes
byte[] pngBytes = barcode.ToPngBinaryData();
// Stream
System.IO.Stream stream = barcode.ToStream();
Imports IronBarCode
Dim barcode = BarcodeWriter.CreateBarcode("PRODUCT-12345", BarcodeEncoding.Code128) _
.ResizeTo(400, 100)
' File
barcode.SaveAsPng("barcode.png")
' Bytes
Dim pngBytes As Byte() = barcode.ToPngBinaryData()
' Stream
Dim stream As System.IO.Stream = barcode.ToStream()
.ResizeTo(width, height)は、明示的なピクセル寸法を受け取り、同じオブジェクト上の任意の出力メソッドと連鎖します。
バーコードの読み取り
Barcoderに読み取りAPIがないのは、設定上の選択ではなく、アーキテクチャ上の明確な制約によるものです。
バーコード方式
バーコードには読み取り機能やデコード機能はありません。 APIは存在せず、APIの導入予定もなく、ライブラリ内での回避策もありません。 アプリケーションがバーコードを読み取る必要がある場合、Barcoder に加えて、別のライブラリ(独自の API サーフェスと追跡対象の独自のバージョンを持つ、別のNuGet依存関係)を追加する必要があります。 つまり、少なくとも2つの読み取り関連依存関係が必要になるということだ。生成にはBarcoder、そして読み取りには別の何かが必要だ。
IronBarcodeのアプローチ
IronBarcodeは、生成と読み取りの両方を同じパッケージと一貫したAPIパターンでカバーします。 BarcodeReader.Read()メソッドは、画像ファイル、バイト配列、ストリーム、およびPDFをネイティブで受け入れます。
using IronBarCode;
// Read from image file
var results = BarcodeReader.Read("barcode.png");
foreach (var result in results)
{
Console.WriteLine(result.Value);
Console.WriteLine(result.Format);
}
// PDFから読み込む natively
var pdfResults = BarcodeReader.Read("document.pdf");
// Read multiple barcodes from one image
var options = new BarcodeReaderOptions
{
Speed = ReadingSpeed.Balanced,
ExpectMultipleBarcodes = true
};
var multiResults = BarcodeReader.Read("warehouse-label.png", options);
using IronBarCode;
// Read from image file
var results = BarcodeReader.Read("barcode.png");
foreach (var result in results)
{
Console.WriteLine(result.Value);
Console.WriteLine(result.Format);
}
// PDFから読み込む natively
var pdfResults = BarcodeReader.Read("document.pdf");
// Read multiple barcodes from one image
var options = new BarcodeReaderOptions
{
Speed = ReadingSpeed.Balanced,
ExpectMultipleBarcodes = true
};
var multiResults = BarcodeReader.Read("warehouse-label.png", options);
Imports IronBarCode
' Read from image file
Dim results = BarcodeReader.Read("barcode.png")
For Each result In results
Console.WriteLine(result.Value)
Console.WriteLine(result.Format)
Next
' PDFから読み込む natively
Dim pdfResults = BarcodeReader.Read("document.pdf")
' Read multiple barcodes from one image
Dim options As New BarcodeReaderOptions With {
.Speed = ReadingSpeed.Balanced,
.ExpectMultipleBarcodes = True
}
Dim multiResults = BarcodeReader.Read("warehouse-label.png", options)
PDFファイルの読み込みはネイティブで行われ、中間的な画像抽出、変換ライブラリ、追加パッケージは一切不要です。 IronBarcodeのバーコード読み取りに関するドキュメントでは、複数ページのPDF、関心領域の読み取り、およびパフォーマンスチューニングについて説明しています。
APIマッピングリファレンス
| バーコード | IronBarcode |
|---|---|
Code128Encoder.Encode("data", false) |
BarcodeWriter.CreateBarcode("data", BarcodeEncoding.Code128) |
QrEncoder.Encode("data", ErrorCorrectionLevel.M, false, false) |
QRCodeWriter.CreateQrCode("data", 500) |
DataMatrixEncoder.Encode("data") |
BarcodeWriter.CreateBarcode("data", BarcodeEncoding.DataMatrix) |
new ImageRenderer(new ImageRendererOptions { ... }) |
必要ありません — 出力はGeneratedBarcodeから連鎖します。 |
renderer.Render(barcode, stream) |
.SaveAsPng(path) / .ToPngBinaryData() / .ToStream() |
IBarcode(データ構造、出力メソッドなし) |
SaveAsPng, ToPngBinaryData, ToStream, ResizeToなどがあります) |
Barcoder + Barcoder.Renderer.Image(2つのパッケージ) |
IronBarcode(1つのパッケージ) |
using Barcoder.Code128 |
using IronBarCode(単一の名前空間、全フォーマット) |
using Barcoder.Qr |
using IronBarCode |
using Barcoder.DataMatrix |
using IronBarCode |
| 読み取りAPIはありません | BarcodeReader.Read(path / bytes / stream / pdf) |
| .NET Frameworkイメージレンダラーなし | .NET Framework4.6.2以降 |
PixelSize + BarHeightFor1DBarcodeオプション |
.ResizeTo(width, height) |
チームがBarcoderからIronBarcodeへの移行を検討する場合
読書が要件に追加されました
多くのプロジェクトは、ラベルの印刷、文書用のコード生成、レポートへのバーコードの埋め込みなど、純粋な生成パイプラインとして始まります。 Barcoderは、これらのプロジェクトの初期段階から役立ちます。 同じアプリケーションが後で受信したバーコードを検証したり、スキャンしたドキュメントを処理したり、アップロードされたPDFからバーコードをデコードしたりする必要が生じた場合、Barcoderにはそれに対応する手段がありません。 チームは、2つ目のライブラリを評価し、そのAPIを習得し、 NuGetバージョンを個別に管理し、2つのライブラリ間の統合面を処理する必要がある。 この段階に達したチームは、2つの別々のバーコード依存関係を維持するのではなく、両方の側面を処理するライブラリに統合することが多い。
.NET Frameworkの互換性の問題
Barcoder.Renderer.Imageは.NET Frameworkのサポートを終了しました。.NET Framework4.x 上でサービスやデスクトップアプリケーションを保守しているチームが、定期的な依存関係の保守中にイメージレンダラーパッケージを更新すると、ビルドエラーが発生します。 これは設定ミスではなく、図書館によるプラットフォームサポートに関する決定です。 IronBarcodeは、特別なパッケージングや異なるターゲット向けの条件付き依存関係なしに、.NET Framework4.6.2から.NET 9までをサポートします。
パッケージバージョンのずれが調整上の問題を引き起こす
Barcoder.Renderer.Imageが独立してバージョン管理されているため、依存関係の更新中に片方だけを更新すると微妙な互換性の問題が発生する可能性があります。 複数のプロジェクトを含むリポジトリでは、各プロジェクトが異なるバージョンのレンダラーパッケージを使用しているため、プロジェクト間で一貫した動作を確保することは、チームの規模が大きくなるにつれて複雑化する調整上の問題となる。 IronBarcodeに統合したチームは、1つのパッケージと1つのバージョンを管理することで、この種の問題が完全に解消されると報告している。
フォーマットのカバー範囲は時間とともに拡大する
プロジェクトはCode128ラベルから始まり、後から顧客向けリンク用のQRコードを追加し、さらにコンプライアンス要件を満たすためにDataMatrixを追加するといった流れになるかもしれません。 Barcoderでは、フォーマットを追加するたびに、新しい名前空間のインポート、異なるメソッドパラメータを持つ異なるエンコーダクラス、そして場合によっては新しいNuGetパッケージが必要になります。 IronBarcodeでは、フォーマットを追加することは既存の呼び出しでBarcodeEncoding列挙型の値を変更することです。 バーコード形式の対応範囲拡大をロードマップに盛り込んでいるチームは、列挙型ベースのモデルの方がメンテナンスがはるかに容易であることに気づいています。
MAUIとクロスプラットフォーム展開の要件
Barcoderは、MAUI、Docker、AWS Lambda、またはAzureデプロイメントのサポートに関するドキュメントを提供していません。 クロスプラットフォームのMAUIアプリケーションを構築しているチームや、バーコード処理をサーバーレスインフラストラクチャにデプロイしているチームは、Barcoderのドキュメントとテストがこれらの対象を網羅していないことに気づきます。 IronBarcodeは、iOS、Android、Windows、macOS MAUIターゲット、Dockerコンテナ、および主要なクラウドプラットフォーム全体にわたるデプロイメントに関するドキュメントを作成し、積極的にテストを行っています。
一般的な移行の考慮事項
GeneratedBarcodeタイプへの変更
BarcoderコードでIBarcode変数を格納して後でレンダラーに渡す場合はリファクタリングが必要です。 IronBarcodeでは、.ToPngBinaryData()のような直接呼び出しに変更します。 型システムはコンパイル中に必要なすべての更新箇所を表示します。Barcoderパッケージが削除された後、IBarcodeは解決されません。
PixelSizeには直接の同等物がありません
BarcoderのPixelSizeは、バーコードの自然なモジュールサイズに対するスケール乗数であり、明示的なピクセル寸法ではありません。 出力幅は、バーコードの内容、フォーマット、および乗数の組み合わせによって決まります。 IronBarcodeは、明示的なピクセル寸法を使用して.ResizeTo(width, height)を使用します。 移行中に、既存のBarcoderコードが生成する実際の出力寸法を測定し、その値を.ResizeTo()呼び出しで使用します。
BarcodeWriter.CreateBarcode("data", BarcodeEncoding.Code128)
.ResizeTo(300, 80)
.SaveAsPng("barcode.png");
BarcodeWriter.CreateBarcode("data", BarcodeEncoding.Code128)
.ResizeTo(300, 80)
.SaveAsPng("barcode.png");
BarcodeWriter.CreateBarcode("data", BarcodeEncoding.Code128) _
.ResizeTo(300, 80) _
.SaveAsPng("barcode.png")
名前空間の統合
Barcoderプロジェクトは、使用されるフォーマットごとにusing Barcoder.*ステートメントを蓄積します。 移行中に、これらはすべて単一のusing IronBarCode;に統合されます。 ソリューション全体でusing Barcoderを検索すると、更新が必要なすべてのファイルが特定されます。 影響を受けるファイルの数は、通常、チームが予想するよりも多くなります。なぜなら、バーコード形式を使用する各ファイルは、それぞれ独自の形式固有の名前空間をインポートするからです。
SVG出力パスの変更
GeneratedBarcode上の直接メソッド呼び出しに置き換えます。
// Before
var svgRenderer = new SvgRenderer();
using var stream = File.OpenWrite("barcode.svg");
svgRenderer.Render(barcode, stream);
// After
BarcodeWriter.CreateBarcode("data", BarcodeEncoding.Code128)
.SaveAsSvg("barcode.svg");
// Before
var svgRenderer = new SvgRenderer();
using var stream = File.OpenWrite("barcode.svg");
svgRenderer.Render(barcode, stream);
// After
BarcodeWriter.CreateBarcode("data", BarcodeEncoding.Code128)
.SaveAsSvg("barcode.svg");
Imports System.IO
' Before
Dim svgRenderer As New SvgRenderer()
Using stream As FileStream = File.OpenWrite("barcode.svg")
svgRenderer.Render(barcode, stream)
End Using
' After
BarcodeWriter.CreateBarcode("data", BarcodeEncoding.Code128) _
.SaveAsSvg("barcode.svg")
すべてのSVGレンダリングサイトが移行された後、Barcoder.Renderer.Svgパッケージを削除できます。
IronBarcodeの追加機能
上記で挙げた比較点以外にも、 IronBarcodeにはBarcoderにはない機能が備わっています。
- ロゴを埋め込んだQRコード:
.AddBrandLogo(path)は、スキャン可能性を損なうことなくQRコードの中央にブランド画像を埋め込みます。 - ネイティブのPDFバーコード読み取り:
BarcodeReader.Read("document.pdf")は、画像を抽出することなくPDFを直接処理します。 - 複数バーコードの検出:
ExpectMultipleBarcodesオプションは、単一の画像またはPDFページからすべてのバーコードを一度に読み取ります。 - 読み取り速度の制御:
ReadingSpeed.Faster,Balanced,Detailed, およびExtremeDetailは、異なる使用ケースにおける精度と速度のトレードオフを調整します。 - MAUIのクロスプラットフォーム展開: iOS、Android、Windows、macOS向けのMAUIターゲットは積極的にテストされ、ドキュメント化されています。
- Dockerとクラウドへのデプロイ: Dockerコンテナ、AWS Lambda、Azure Functionsのデプロイ手順を文書化
- バーコードのスタイリングとカスタマイズ:
GeneratedBarcode上のカラー、マージン、注釈テキスト、および背景のカスタマイズ。
.NETの互換性と将来の準備
IronBarcodeは.NET Framework 4.6.2、.NET Core 2.x、.NET 5、.NET 6、.NET 7、.NET 8、および.NET 9をサポートし、定期的に更新されます。 バーコード v3はイメージレンダラーパッケージで.NET Frameworkのサポートを中止しました。 .NET Frameworkと最新 for .NETターゲットにわたる長いサポートウィンドウが必要なチームにとっては、IronBarcodeの単一パッケージ互換性マトリックスがターゲットごとの条件付き依存関係を管理する必要性をなくします。
結論
BarcoderとIronBarcodeは、基本的に異なるスコープを反映しています。Barcoderはエンコードとレンダリングを分離した生成のみのライブラリであり、IBarcodeデータ構造とレンダラーパイプラインは意図的に異なるレイヤーです。 IronBarcodeは、バーコードの生成と読み取りが単一のパッケージ、単一の名前空間、そして一貫した静的APIを共有する、完全なバーコードライブラリです。 要件が拡大すると、アーキテクチャ上の違いが最も顕著になります。Barcoderはマルチパッケージ、マルチネームスペース、読み取り不要の設計を採用しているため、追加するたびに構造的な作業が必要になりますが、 IronBarcode新しいフォーマットや機能の追加は構成変更として扱われます。
Barcoderは、プロジェクトが本当に生成機能だけを必要とし、 .NET Coreのみを対象とし、使用するバーコード形式が少なく、MITライセンスが必須条件である場合に最適な選択肢です。 このライブラリは、記載されている範囲内で動作し、読解要件がなく、 .NET Frameworkをターゲットとしない、範囲が限定されたプロジェクトにとっては、費用のかからないオープンソースの選択肢として妥当です。
IronBarcodeは、プロジェクトでバーコードの生成だけでなく読み取りも必要となる場合、 .NET FrameworkまたはクロスプラットフォームのMAUIデプロイメントを対象とする場合、将来的にバーコードフォーマットを追加する予定がある場合、あるいはDockerまたはクラウド環境へのデプロイメントが必要な場合に最適な選択肢です。 単一パッケージモデルと列挙型ベースのフォーマット選択により、プロジェクトの規模が拡大するにつれてBarcoderで蓄積されるオーバーヘッドが解消されます。
実際の判断は、軌道の問題に帰着する。 読み取りを必要としない、単純な単一フォーマット生成器に留まることが確実なプロジェクトであれば、Barcoderは十分に役立つだろう。 バーコードに関する要件に曖昧さがあるプロジェクト(フォーマットの追加、読み取り機能の追加、クロスプラットフォーム展開など)は、予想よりも早くBarcoderのアーキテクチャ上の限界に直面するでしょう。 どちらのライブラリも信頼できるツールです。 問題は、どちらが実際の作業範囲に合致するかということだ。
よくある質問
BarCodeer とは?
BarCodeerは、C#アプリケーションでバーコードを生成および読み取るため for .NETバーコードライブラリです。BarCodeer は、.NET プロジェクトのバーコードソリューションを選択する際に、開発者が評価するいくつかの選択肢の 1 つです。
BarCoderとIronBarcodeの主な違いは何ですか?
IronBarcodeはインスタンス管理を必要としない静的なステートレスAPIを使用しますが、BarCodeは通常、使用前にインスタンスの作成と設定が必要です。IronBarcodeはまた、ネイティブPDFサポート、自動フォーマット検出、およびすべての環境にわたるシングルキーライセンスを提供します。
IronBarcodeはBarcoderよりもライセンス取得が簡単ですか?
IronBarcodeは単一のライセンスキーで開発環境と本番環境の両方をカバーします。これは、SDKキーとランタイムキーを分離するライセンスシステムと比較して、CI/CDパイプラインとDocker構成を簡素化します。
IronBarcodeはBarcoderがサポートしているすべてのバーコードフォーマットをサポートしていますか?
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はBarCoderと比べてどのようにバッチ処理を行いますか?
IronBarcodeの静的メソッドはステートレスで当然スレッドセーフであり、スレッドごとのインスタンス管理なしにParallel.ForEachを直接使用できます。どの価格帯でもスループットの上限はありません。
IronBarcode はど for .NETバージョンをサポートしていますか?
IronBarcodeは.NET Framework 4.6.2+、.NET Core 3.1、.NET 5、6、7、8、9を単一のNuGetパッケージでサポートしています。プラットフォーム・ターゲットには、Windows x64/x86、Linux x64、macOS x64/ARMが含まれます。
.NETプロジェクトにIronBarcodeをインストールするには?
NuGet経由でIronBarcodeをインストールする:パッケージマネージャーコンソールで'Install-Package IronBarCode'を実行するか、CLIで'dotnet add package IronBarCode'を実行する。追加のSDKインストーラーやランタイムファイルは必要ありません。
Barcoderとは異なり、購入前にIronBarcodeを評価することはできますか?
IronBarcodeのトライアルモードでは、完全なデコードされたバーコード値を返します。購入を決定する前に、ご自身のドキュメントで読み取り精度をベンチマークすることができます。
BarCoderとIronBarcodeの価格の違いは何ですか?
IronBarcodeは、開発および量産をカバーする永続的なシングルデベロッパーライセンスで749ドルからご利用いただけます。価格の詳細とボリュームオプションはIronBarcodeのライセンスページでご覧いただけます。別途ランタイムライセンスは必要ありません。
BarCoderからIronBarcodeへの移行は簡単ですか?
BarCodeからIronBarcodeへの移行は、主にインスタンスベースのAPIコールをIronBarcodeの静的メソッドに置き換え、ライセンスの定型文を削除し、結果のプロパティ名を更新します。ほとんどの移行はコードを追加するのではなく、コードを削減します。
IronBarcodeはロゴ入りQRコードを生成できますか?
はい。QRCodeWriter.CreateQrCode().AddBrandLogo("logo.png")は、設定可能なエラー修正機能付きで、ブランド画像をネイティブにQRコードに埋め込みます。カラーQRコードもChangeBarCodeColor()でサポートされています。

