IRONSOFTWAREHOME
ビデオ

Migrating from Accusoft BarcodeXpress to IronBarcode

Curtis Chau
Curtis Chau
Updated: 2026年5月3日

#Accusoft BarcodeXpressから IronBarcode への移行

今回の移行作業の大部分は削除作業です。 2つのキーライセンスシステム ― SetOEMLicenseKeyは完全に消えます。 実際のバーコード操作(画像の読み取り、ファイルへのバーコード書き込み)は、より短いIronBarcodeの同等の操作に置き換えられます。 コードベースにBarcodeXpressをラップするBarcodeServiceクラスがある場合、ライセンスコードはその大部分を占めることがよくあります。 移行後、そのクラスは縮小します。

Accusoft BarcodeXpressから移行する理由

BarcodeXpressから移行するチームは、以下の要因を報告しています。

評価モードが正確なベンチマークを妨げる: 有効なOEM/ランタイムキーがないと、BarcodeXpress はデコードされた結果にリテラル文字列" UNLICENSED accusoft.com "をスタンプし、生成された2Dバーコードにも同じスタンプを適用します。 実際の文書での事前購入精度テストは、この透かし入り出力を生成するため、ライブラリが実際のスキャンタイプを正しく読み取ることを購入前に確認することができません。

2つのキーライセンスが運用のオーバーヘッドを増加させます: BarcodeXpressはSDKライセンス(SetSolutionName + SetOEMLicenseKey)から分離します。 CI/CDパイプライン、Dockerコンテナ、コンテナオーケストレーターはそれぞれ、キーシステムを個別のシークレットとして管理する必要があります。 ランタイムキーが欠如しているか無効であると、エラーを引き起こす代わりに透かし入り出力にフォールバックし、アサーションが非NULLの結果のみをチェックする場合、自動テストに合格する可能性のある障害モードを作り出します。

**本番環境への導入には最低5つのランタイムライセンスが必要です。**単一サーバーの導入であっても、最低5つのランタイムライセンスを購入する必要があります。 本番サーバー1台とステージングサーバー1台を運用するチームは、実際の使用量に関わらず、最低10個のランタイムライセンスを購入する必要があります。

**標準版の処理速度上限:**標準版では、処理速度が毎分40ページに制限されます。 そのペースだと、10万件の文書を処理するのに約41時間かかる。 上限を解除するには、Professionalエディションへのアップグレードが必要となり、既に購入済みのランタイムライセンスに加えて、開発者1人あたりのライセンス料金が高くなります。

ネイティブPDFサポートなし: BarcodeXpressでPDFファイルを読み取るには、別途ライブラリを使用して画像にレンダリングする必要があります。 その外部依存関係は、2つ目のライセンス費用、変換手順、そしてレンダリングされたページ画像を保持することによるメモリ負荷の増加をもたらします。

スレッドセーフ性にはインスタンスの隔離が必要です: BarcodeXpressのreaderオブジェクトはステートフルで、同時アクセスには安全ではありません。 並列バッチ処理には、スレッドごとに完全に初期化されたBarcodeXpressインスタンスが必要で、スレッドコンテキストごとに完全な2層のライセンス初期化が繰り返されます。

基本的な問題

BarcodeXpressは、マルチステップの初期化、ビットマップのロード、およびBarcodeType[]設定を要求します。バーコードが読み取れる前に以下を実行する必要があります:

using var bitmap = new Bitmap(imagePath);
var barcodeXpress = new BarcodeXpress(".");
barcodeXpress.Licensing.SetSolutionName("AcmeCorp");
barcodeXpress.Licensing.SetSolutionKey(1, 2, 3, 4);
barcodeXpress.Licensing.SetOEMLicenseKey("2.0.OEMLicenseStringFromAccusoft...");

barcodeXpress.reader.BarcodeTypes = new[]
{
    BarcodeType.Code128Barcode,
    BarcodeType.DataMatrixBarcode,
    BarcodeType.QRCodeBarcode
};

Result[] results = barcodeXpress.reader.Analyze(bitmap);
var value = results.FirstOrDefault()?.BarcodeValue;

IronBarcodeはこのブロック全体を単一の静的呼び出しに置き換えます。

var value = BarcodeReader.Read(imagePath).First().Value;

IronBarcodeとAccusoft BarcodeXpress:機能比較

フィーチャーAccusoft BarcodeXpressIronBarcode
ライセンスモデルSDKキー + OEM/ランタイムキー(別途購入)永久鍵1本
最小ランタイムライセンス5(サーバー1台の場合も)ランタイムライセンスの概念なし
評価モードデコードされた値と生成された2Dバーコードに" UNLICENSED accusoft.com "のスタンプ全ての値が返されます。 生成された出力にのみ透かしを入れる
スループット制限40 PPM(標準版)どの階層でも制限なし
フォーマット自動検出手動 ― BarcodeTypesに割り当てる必要があります。サポートされているすべてのフォーマットで自動的に
PDFサポートビットマップをレンダリングするために外部ライブラリが必要ネイティブ ― BarcodeReader.Read("doc.pdf")
APIスタイルインスタンスベース ビットマップ入力 プロパティ/メソッド設定静的ファクトリメソッド、流暢なAPI
スレッドセーフスレッドごとにインスタンスが必要ですステートレスな静的メソッド—スレッドセーフ
Dockerライセンス設定ライセンスファイルのマウントまたはライセンスサーバー単一の環境変数
CI/CD シークレットが必要ですSDKキーペア + OEM/ランタイムキー一つの秘密
.NET Framework / .NET Core別々のパッケージ: Accusoft.BarcodeXpress.Net および Accusoft.BarcodeXpress.NetCore単一のIronBarcodeパッケージ (.NET Framework 4.6.2+、.NET Core 3.1+、.NET 5–8)
Linux/macOSはい(.NetCore パッケージを介して)はい — Windows x64/x86、Linux x64、macOS x64/ARM
ロゴ入りQRコード手動のGDI+オーバーレイが必要です組み込みのAddBrandLogo("logo.png")
価格設定のエントリーポイント$1,960+ SDK + 最低5ランタイムライセンス749ドル(永久ライセンス、 Lite、開発者1名)
永久ライセンス標準仕様ではありません - 営業担当者にお問い合わせくださいはい、全ティア

クイックスタート:Accusoft BarcodeXpressからIronBarcodeへの移行

ステップ 1: NuGet パッケージを置き換える

dotnet remove package Accusoft.BarcodeXpress.NetCore
dotnet add package IronBarcode
SHELL

ステップ 2: 名前空間の更新

// Remove
using Accusoft.BarcodeXpressSdk;

// Add
using IronBarCode;

ステップ 3: ライセンスの初期化

アプリケーションのスタートアップ時に、一度だけライセンス初期化をStartup.cs、または依存性注入の設定に追加します。

// Add once at application startup
IronBarCode.License.LicenseKey = "YOUR-LICENSE-KEY";

本番環境では、環境変数またはシークレットマネージャーからキーを読み取ってください。

IronBarCode.License.LicenseKey =
    Environment.GetEnvironmentVariable("IRONBARCODE_LICENSE")
    ?? throw new InvalidOperationException("IronBarcode license key not configured");

サーバごとの実行時アクティベーションがないSetOEMLicenseKeyなし。 以上がライセンス設定の全てです。

コード移行の例

ライセンスの初期化

BarcodeXpressのアプローチ:

using Accusoft.BarcodeXpressSdk;

public class BarcodeService
{
    private readonly BarcodeXpress _barcodeXpress;

    public BarcodeService()
    {
        // Constructor takes the path containing the Barcode Xpress runtime files.
        _barcodeXpress = new BarcodeXpress(".");

        // SDK license
        _barcodeXpress.Licensing.SetSolutionName("AcmeCorp");
        _barcodeXpress.Licensing.SetSolutionKey(1, 2, 3, 4);

        // OEM/runtime license — separate purchase, minimum 5 licenses required.
        // Without this call, decoded values and generated 2D barcodes are
        // stamped with " UNLICENSED accusoft.com ".
        _barcodeXpress.Licensing.SetOEMLicenseKey(
            "2.0.OEMLicenseStringFromAccusoft...");
    }
}

IronBarcodeのアプローチ:

using IronBarCode;

// In Program.cs
IronBarCode.License.LicenseKey = Environment.GetEnvironmentVariable("IRONBARCODE_LICENSE");

// BarcodeService no longer needs a constructor or any license management
public class BarcodeService
{
    // Ready to use — no initialization needed
}

BarcodeXpress のコンストラクターは、二つのライセンスキーシステムとランタイムパスを管理するためだけに存在します。 IronBarcodeがアプリケーションのスタートアップで1行で置き換えます。BarcodeServiceクラスにはコンストラクタがまったく不要です。

バーコード読み取り

BarcodeXpressのアプローチ:

using System.Drawing;
using Accusoft.BarcodeXpressSdk;

public string ReadFirstBarcode(string imagePath)
{
    // Analyze takes a System.Drawing.Bitmap; the SDK does not read PDFs directly.
    using var bitmap = new Bitmap(imagePath);

    _barcodeXpress.reader.BarcodeTypes = new[]
    {
        BarcodeType.Code128Barcode,
        BarcodeType.DataMatrixBarcode,
        BarcodeType.QRCodeBarcode
    };

    Result[] results = _barcodeXpress.reader.Analyze(bitmap);

    return results.FirstOrDefault()?.BarcodeValue;
}

IronBarcodeのアプローチ:

using IronBarCode;

public string ReadFirstBarcode(string imagePath)
{
    var results = BarcodeReader.Read(imagePath);
    return results.First().Value;
}

new Bitmap(...)ロードステップの両方が消えます。 IronBarcode は、すべてのサポートされているシンボロジーにわたってフォーマットを自動検出し、ファイルパスを直接受け入れます。 サプライヤーがコード128からデータマトリックスに切り替えた場合でも、 IronBarcodeはコードを変更することなく引き続き動作します。 結果のプロパティ名も変更されます: Formatになります。 ソリューション全体にわたる検索置換機能により、両方の名前変更が処理されます。

1枚の画像から複数のバーコードを読み取る

BarcodeXpressのアプローチ:

using System.Drawing;
using Accusoft.BarcodeXpressSdk;

public IReadOnlyList<string> ReadAllBarcodes(string imagePath)
{
    using var bitmap = new Bitmap(imagePath);
    _barcodeXpress.reader.BarcodeTypes = new[]
    {
        BarcodeType.Code128Barcode,
        BarcodeType.QRCodeBarcode
    };

    Result[] results = _barcodeXpress.reader.Analyze(bitmap);
    return results.Select(r => r.BarcodeValue).ToList();
}

IronBarcodeのアプローチ:

using IronBarCode;

public IReadOnlyList<string> ReadAllBarcodes(string imagePath)
{
    var options = new BarcodeReaderOptions { ExpectMultipleBarcodes = true };
    var results = BarcodeReader.Read(imagePath, options);
    return results.Select(r => r.Value).ToList();
}

ExpectMultipleBarcodesはIronBarcodeに対して最初の一致後もスキャンを続行するよう指示し、複数のコードが異なる領域にあるドキュメントに便利です。 読み取りオプションの詳細については、 IronBarcodeの読み取りに関するドキュメントを参照してください。

バッチ処理

BarcodeXpressはインスタンスベースでそのreaderオブジェクトはステートフルであるため、並列バッチ処理にはスレッドごとに1つのインスタンスが必要であり、スレッドごとに完全な2層ライセンス初期化が繰り返されます。 IronBarcodeの静的メソッドはステートレスであるため、Parallel.ForEachにはインスタンス管理が不要です。

BarcodeXpressのアプローチ:

using System.Collections.Generic;
using System.Drawing;
using Accusoft.BarcodeXpressSdk;

public Dictionary<string, string> ProcessBatch(IEnumerable<string> imagePaths)
{
    var results = new Dictionary<string, string>();

    foreach (var path in imagePaths)
    {
        using var bitmap = new Bitmap(path);
        _barcodeXpress.reader.BarcodeTypes = new[]
        {
            BarcodeType.Code128Barcode,
            BarcodeType.QRCodeBarcode
        };

        Result[] barcodes = _barcodeXpress.reader.Analyze(bitmap);
        if (barcodes.Length > 0)
            results[path] = barcodes[0].BarcodeValue;
    }

    return results;
}

IronBarcodeのアプローチ:

using IronBarCode;
using System.Collections.Concurrent;
using System.Threading.Tasks;

public Dictionary<string, string> ProcessBatch(string[] imagePaths)
{
    var results = new ConcurrentDictionary<string, string>();

    Parallel.ForEach(imagePaths, file =>
    {
        var r = BarcodeReader.Read(file);
        var first = r.FirstOrDefault();
        if (first != null)
            results[file] = first.Value;
    });

    return new Dictionary<string, string>(results);
}

BarcodeXpress Standard Editionの40ページ/分という上限のために、40ページごとのグループ間にスリープ処理を入れたり、1分あたりのカウンターを追跡したり、遅延処理を追加したりするなど、レート制限処理コードを追加していた場合は、そのコードを完全に削除してください。 IronBarcodeには処理能力の上限がありません。

PDFサポートを追加

BarcodeXpressはPDFファイルから直接バーコードを読み取ることはできません。 一般的な回避策としては、別途PDFレンダリングライブラリを追加し、各ページをメモリ上の画像としてレンダリングし、それらの画像を1つずつバーコードリーダーに渡すという方法がある。

BarcodeXpressのアプローチ:

// Requires a separate PDF library (not shown — varies by team choice)
// Pattern: render each PDF page to a Bitmap, then pass it to Analyze.
foreach (Bitmap pageBitmap in pdfRenderer.RenderPages("document.pdf"))
{
    using (pageBitmap)
    {
        _barcodeXpress.reader.BarcodeTypes = Enum.GetValues(typeof(BarcodeType));
        Result[] barcodes = _barcodeXpress.reader.Analyze(pageBitmap);
        // ... collect results
    }
}

IronBarcodeのアプローチ:

using IronBarCode;

// One call — no rendering step, no external dependency
var results = BarcodeReader.Read("document.pdf");

foreach (var barcode in results)
{
    Console.WriteLine($"Page {barcode.PageNumber}: [{barcode.Format}] {barcode.Value}");
}

BarcodeXpressの読み込みワークフローをサポートする目的だけで追加されたなければ、itext7、またはその他のPDFライブラリを移行後に削除することができます。 IronBarcode PDF 読み取りガイド を参照し、ページ範囲の選択などのオプションを含む追加のオプションを確認してください。

バーコード生成

BarcodeXpressのアプローチ:

using System.Drawing;
using Accusoft.BarcodeXpressSdk;

public void GenerateBarcode(string data, string outputPath)
{
    _barcodeXpress.writer.BarcodeType = BarcodeType.Code128Barcode;
    _barcodeXpress.writer.BarcodeValue = data;

    // CreateBitmap returns a System.Drawing.Bitmap; persist via Bitmap.Save.
    using Bitmap bitmap = _barcodeXpress.writer.CreateBitmap();
    bitmap.Save(outputPath);
}

IronBarcodeのアプローチ:

using IronBarCode;

public void GenerateBarcode(string data, string outputPath)
{
    BarcodeWriter.CreateBarcode(data, BarcodeEncoding.Code128)
        .ResizeTo(400, 100)
        .SaveAsPng(outputPath);
}

流暢なチェーンはプロパティの割り当て、Bitmap.Saveステップを置き換えます。データベースに格納するため、またはAPIから返すためにバイナリデータとしてバーコードを取得するには:

byte[] pngBytes = BarcodeWriter.CreateBarcode(data, BarcodeEncoding.Code128)
    .ToPngBinaryData();

QRコード生成

BarcodeXpressのアプローチ:

_barcodeXpress.writer.BarcodeType = BarcodeType.QRCodeBarcode;
_barcodeXpress.writer.BarcodeValue = data;

using Bitmap bitmap = _barcodeXpress.writer.CreateBitmap();
bitmap.Save("qr.png");
// Logo overlay required manual GDI+ drawing on the returned Bitmap

IronBarcodeのアプローチ:

using IronBarCode;
using IronSoftware.Drawing;

// Simple QR
QRCodeWriter.CreateQrCode("https://example.com", 500)
    .SaveAsPng("qr.png");

// With branded logo
QRCodeWriter.CreateQrCode("https://example.com", 500)
    .AddBrandLogo("logo.png")
    .SaveAsPng("qr-branded.png");

// With high error correction (for logo overlays)
QRCodeWriter.CreateQrCode(
    "https://example.com",
    500,
    QRCodeWriter.QrErrorCorrectionLevel.Highest)
    .AddBrandLogo("logo.png")
    .SaveAsPng("qr-branded-high-ecc.png");

// Colored QR code
QRCodeWriter.CreateQrCode("https://example.com", 300)
    .ChangeBarCodeColor(Color.DarkBlue)
    .SaveAsPng("qr-colored.png");

ロゴの埋め込み、エラー訂正レベル、色のカスタマイズはすべて、流暢なAPIに組み込まれています。 BarcodeXpressでは、これらの機能を利用するには、最初のファイル書き込み後に手動でGDI+による描画を行う必要があります。 より多くのQRコードオプションについては、QRコード生成ガイドをご覧ください。

##Accusoft BarcodeXpressAPI からIronBarcodeへのマッピングリファレンス

Accusoft BarcodeXpressIronBarcode
new BarcodeXpress(".")静的メソッド - インスタンスは不要
Licensing.SetSolutionName("...")IronBarCode.License.LicenseKey = "key"
Licensing.SetSolutionKey(a, b, c, d)(removed — not needed)
Licensing.SetOEMLicenseKey(string)(removed — no OEM/runtime key concept)
new Bitmap(path) + reader.Analyze(bitmap)BarcodeReader.Read(path)
reader.BarcodeTypes = new[] { BarcodeType.Code128Barcode, ... }(removed — auto-detection handles all formats)
result.BarcodeValueresult.Value
result.BarcodeTyperesult.Format
writer.BarcodeType = BarcodeType.Code128BarcodeBarcodeWriter.CreateBarcode("data", BarcodeEncoding.Code128)
writer.BarcodeValue = "data"(first argument to CreateBarcode)
writer.CreateBitmap() + bitmap.Save(path).SaveAsPng(path)
writer.BarcodeType = BarcodeType.QRCodeBarcodeQRCodeWriter.CreateQrCode(data, size)
40 PPM 標準制限値どの階層でもスループット制限はありません

一般的な移行の問題と解決策

問題1:プロパティ名のコンパイルエラー

BarcodeXpress: 結果オブジェクトはIronBarcodeには存在しないBarcodeTypeを公開します。

**解決策:**ビルド前にソリューション全体で検索置換を実行します。

grep -r "\.BarcodeValue" --include="*.cs" .
grep -r "\.BarcodeType" --include="*.cs" .
SHELL

見つかったすべてのファイルでresult.Formatに置き換えます。

問題2: ライセンス構成の呼び出しが孤立

BarcodeXpress: SetOEMLicenseKey呼び出し ― プラス、デコードされた出力に"UNLICENSED accusoft.com"の透かしを検出するカスタム アサーションは、透かし付きの出力障害モードに対する防御として多くのコードベースに存在します。

ソリューション: すべてのこれらの呼び出しサイトを見つけて削除してください — IronBarcode には同等の状態がありません。 ライセンスキーは、有効であるかどうかのいずれかであり、有効でなければ、個々のデコード値を劣化させることなく一様にトライアル制限が適用されます。

grep -r "SetOEMLicenseKey" --include="*.cs" .
grep -r "SetSolutionName" --include="*.cs" .
grep -r "SetSolutionKey" --include="*.cs" .
grep -r "UNLICENSED accusoft" --include="*.cs" .
SHELL

これらの通話サイトはすべて削除できます。

問題3:Dockerライセンスファイルを環境変数にマウントする

BarcodeXpress: Dockerデプロイメントは通常、既知のパスでコンテナにBarcodeXpressライセンス構成ファイルをマウントするCOPYまたはボリューム マウント命令を使用します。

**解決策:**設定ファイルのコピーを削除し、環境変数に置き換えてください。

# Remove this
COPY accusoft-license.lic /app/license/

# Add this
ENV IRONBARCODE_LICENSE=YOUR-LICENSE-KEY
Text

アプリケーションの起動時:

IronBarCode.License.LicenseKey =
    Environment.GetEnvironmentVariable("IRONBARCODE_LICENSE");

Kubernetesでは、ライセンスキーはPod仕様内の秘密参照になります。

env:
  - name: IRONBARCODE_LICENSE
    valueFrom:
      secretKeyRef:
        name: ironbarcode-secrets
        key: license-key
Text

第4号:レート制限処理コード

**BarcodeXpress:**標準版の40PPMの上限内で大量のバッチを処理するチームは、制限内に収まるように、文書のグループ間にスリープモードを追加したり、分単位のカウンターを追跡したり、遅延を導入したりするコードを追加することがよくありました。

**解決策:**レート制限コードをすべて削除してください。 以下の方法で探してください:

grep -r "40\|PPM\|pagesPerMinute\|minuteStart" --include="*.cs" .
SHELL

IronBarcodeには処理能力の上限がありません。お使いのインフラストラクチャがサポートする速度で処理できます。

問題5:スレッドセーフティ - インスタンスプールの削除

BarcodeXpress: 並行処理をサポートするコードベースは、多くの場合、ThreadLocal<BarcodeXpress>パターンを使用して状態のあるリーダーをスレッドごとに分離します。

**解決策:**プーリングロジックを完全に削除する。 IronBarcodeのBarcodeWriter.CreateBarcodeはステートレスな静的メソッドです。 複数のスレッドからの同時呼び出しは、互いに干渉しません。

Accusoft BarcodeXpress移行チェックリスト

マイグレーション前のタスク

コードを変更する前に、コードベースを監査してBarcodeXpressの使用箇所をすべて特定してください。

grep -r "BarcodeXpress" --include="*.cs" .
grep -r "Accusoft" --include="*.cs" .
grep -r "SetSolutionName" --include="*.cs" .
grep -r "SetSolutionKey" --include="*.cs" .
grep -r "SetOEMLicenseKey" --include="*.cs" .
grep -r "reader\.Analyze" --include="*.cs" .
grep -r "writer\.CreateBitmap" --include="*.cs" .
grep -r "\.BarcodeValue" --include="*.cs" .
grep -r "\.BarcodeType" --include="*.cs" .
grep -r "BarcodeType\." --include="*.cs" .
SHELL
  • BarcodeTypesの割り当てに明示的にリストされているバーコード形式に注意してください ― これらは全て、IronBarcodeで自動検出されます。 削除可能なレート制限処理コードを特定してください。
  • BarcodeXpressの読み取りをサポートするためだけに追加されたPDFレンダリングライブラリを特定し、これらも削除できます。 IronBarcodeのライセンスキーを取得し、シークレットマネージャーに追加してください。

コード更新タスク

  1. すべてのAccusoft.BarcodeXpress.NetCoreを削除します
  2. バーコード機能を必要とするすべてのIronBarcodeを追加します
  3. ファイル全体でusing IronBarCode;に置き換えます
  4. アプリケーションの起動時にIronBarCode.License.LicenseKey = ...を追加します
  5. すべてのBarcodeXpressコンストラクタ呼び出しとインスタンス フィールドを削除します
  6. すべてのSetOEMLicenseKeyの呼び出しを削除します 7.デコードされた出力をスキャンして" UNLICENSED accusoft.com "の透かしを検出するカスタムアサーションを削除する 8.new Bitmap(path) + reader.Analyze(bitmap)BarcodeReader.Read(path) に置き換えます
  7. すべてのreader.BarcodeTypes = ...の割り当てを削除します
  8. result.Valueに置き換えます
  9. result.Formatに置き換えます 12.writer.CreateBitmap() + bitmap.Save(path)BarcodeWriter.CreateBarcode(data, encoding).SaveAsPng(path) に置き換えます
  10. レート制限スロットリングコードを削除する
  11. PDFレンダリング中間コードが存在する場合は削除する
  12. BarcodeXpressインスタンスのインスタンスプールまたはThreadLocalパターンを削除します
  13. Dockerfileとdocker-composeファイルからライセンスファイルのマウントを削除します。
  14. Dockerおよびコンテナ構成にIRONBARCODE_LICENSE環境変数を追加します
  15. KubernetesのシークレットとPodの仕様を更新する
  16. CI/CDパイプラインのシークレットを更新します — ACCUSOFT_RUNTIME_KEYを削除します; IRONBARCODE_LICENSEを追加

移行後のテスト

  • ソリューションを構築する — 名前変更されたプロパティから発生する残りのコンパイルエラーを修正する
  • すべてのバーコード読み取り操作に対して単体テストを実行する
  • すべてのバーコード生成操作に対して単体テストを実行する
  • 必要に応じてPDF入力でテストしてください バッチ処理テストを実行して、スループットのスロットリング動作がないことを確認します。 ステージング環境にデプロイし、環境変数からライセンスキーが正しく解決されることを確認します。

IronBarcodeへの移行の主なメリット

2つのキーライセンスの複雑さの排除: SetOEMLicenseKeyのセットアップが完全に消えます。 開発からプロダクションまでのすべての環境をカバーする単一のキーで、試用モードは各デコード値に" UNLICENSED accusoft.com "のスタンプを押さずに完全なデコード値を返すため、実際の文書での事前購入ベンチマークが可能です。

ランタイムライセンスの最小購入数はありません: BarcodeXpressは、本番環境での導入には最低5つのランタイムライセンスが必要です。 IronBarcodeにはランタイムライセンスという概念はありません。単一の永久ライセンスキーで、そのティア内の任意の数の本番環境へのデプロイメントをカバーできます。

**スループットに上限なし:**標準版の40PPMの上限、およびその上限内に収まるように記述されたレート制限コードは削除できます。 IronBarcodeは、基盤となるハードウェアとネットワークのサポートが許す限り、あらゆる速度で処理を実行し、どの価格帯においてもソフトウェアによる上限は設けられていません。

ネイティブPDFリーディング: BarcodeReader.Read("document.pdf") はPDFファイルを直接処理し、各ページの結果をページ番号、形式、値、および信頼スコアと共に返します。 BarcodeXpressをサポートするためだけに追加されたPDFレンダリングライブラリは削除できるため、依存関係とライセンスコストを削減できます。

ステートレスなスレッドセーフ性: BarcodeReader.ReadBarcodeWriter.CreateBarcode はステートレスな静的メソッドです。 インスタンスプール、ThreadLocalパターン、およびスレッドごとの初期化ブロックはすべて削除できます。 Parallel.ForEachを使用した並列処理には、スレッド対応の回避策を削除する以外に構造的な変更は必要ありません。

コンテナデプロイメントの簡素化: DockerおよびKubernetesのデプロイメントでは、ライセンス構成に単一の環境変数を使用します。 ライセンスファイルの配布、ライセンスサーバーのインフラストラクチャ、および設定ファイルのマウントはすべて不要になります。

Curtis Chau
テクニカルライター

Curtis Chauは、カールトン大学でコンピュータサイエンスの学士号を取得し、Node.js、TypeScript、JavaScript、およびReactに精通したフロントエンド開発を専門としています。直感的で美しいユーザーインターフェースを作成することに情熱を持ち、Curtisは現代のフレームワークを用いた開発や、構造の良い視覚的に魅力的なマニュアルの作成を楽しんでいます。

...
詳しく読む

関連する記事

Key in blue circle

無料の30日間トライアルキーをすぐに入手してください。

Your trial license will be sent to your email address

制限なし。100% ロック解除済み。クレジットカード不要。

bullet_checkedクレジットカードやアカウントの作成は不要です。制限なし。100% ロック解除済み。クレジットカード不要。
  • Logo Aetna
  • Logo NASA
  • Logo GE
  • Logo Porsche
  • Logo USDA
  • Logo Qatar
Join Millions of Engineers who’ve tried IronPDF
無料のライブデモを予約する
Booking Badge

世界中の数百万人のエンジニアから信頼されています。

ライセンスはより安く
義務のない相談を受ける
下記のフォームを記入するか、sales@ironsoftware.comにメールしてください。
あなたの詳細は常に守秘されます。
世界中の数百万人のエンジニアから信頼されています。
ライセンスはより安く
あなたの無料30日間の試用キーをすぐに入手。
クレジットカードやアカウントの作成は不要です。