フッターコンテンツにスキップ
他のコンポーネントと比較する

BarCoder vs IronBarcode:C#バーコードライブラリの比較

クラウドマーシブ バーコード API vs IronBarcode: クラウドREST vs ローカル.NET

日次1万バーコード—請求書処理、出荷ラベル検証、またはドキュメント受け付けのための現実的な数字です—Cloudmersive Barcode APIはより高いサブスクリプション階層を必要とし、各バーコードがネットワークの往復時間として150〜400msを追加します。すべてのドキュメント、すべての画像、すべてのバーコードデータがネットワークを離れてCloudmersiveのサーバーに送信されます。

これがCloudmersiveモデルを簡潔に述べたものです。 プロジェクトの途中で、つまり統合が構築され、APIキーが設定された後にこれらの事実に遭遇するチームにとって、それらはしばしば不快な驚きとして受け止められます。この比較は、統合が構築される前にこれらの事実を明確にすることを目的としています。

CloudmersiveバーコードAPIの理解

Cloudmersiveは、文書変換、OCR、画像処理、バーコード処理を網羅するREST API群を提供しています。 バーコード機能は、より広範なAPIポートフォリオの一部です。 .NET開発者向けに、CloudmersiveはRESTエンドポイントをラップするNuGetクライアントパッケージを提供しています。

// NuGet: dotnet add package Cloudmersive.APIClient.NET.Barcode
using Cloudmersive.APIClient.NET.Barcode.Api;
using Cloudmersive.APIClient.NET.Barcode.Client;

Configuration.Default.ApiKey.Add("Apikey", "YOUR-CLOUDMERSIVE-API-KEY");
var apiInstance = new GenerateBarcodeApi();

// Each call issues an HTTPS request to Cloudmersive's servers
byte[] result = apiInstance.GenerateBarcodeQRCode("https://example.com");
// NuGet: dotnet add package Cloudmersive.APIClient.NET.Barcode
using Cloudmersive.APIClient.NET.Barcode.Api;
using Cloudmersive.APIClient.NET.Barcode.Client;

Configuration.Default.ApiKey.Add("Apikey", "YOUR-CLOUDMERSIVE-API-KEY");
var apiInstance = new GenerateBarcodeApi();

// Each call issues an HTTPS request to Cloudmersive's servers
byte[] result = apiInstance.GenerateBarcodeQRCode("https://example.com");
Imports Cloudmersive.APIClient.NET.Barcode.Api
Imports Cloudmersive.APIClient.NET.Barcode.Client

Configuration.Default.ApiKey.Add("Apikey", "YOUR-CLOUDMERSIVE-API-KEY")
Dim apiInstance As New GenerateBarcodeApi()

' Each call issues an HTTPS request to Cloudmersive's servers
Dim result As Byte() = apiInstance.GenerateBarcodeQRCode("https://example.com")
$vbLabelText   $csharpLabel

このコードについて理解しておくべき重要な点は、実際に何をしているのかということです。つまり、CloudmersiveのインフラストラクチャにHTTPSリクエストを送信し、応答を待ち、結果を返します。 Cloudmersive統合におけるバーコード関連の作業はすべて、このパターンに従います。 ローカル処理は行われません。 オフラインパスはありません。 すべての操作は、有効なインターネット接続と利用可能なCloudmersiveサーバーに依存します。

HTTPクライアントパターン

Cloudmersive for .NET SDKは、生成されたAPIクライアントです。 内部では、HttpClient が REST 呼び出しを行います。 その事実から派生する影響は以下の通りである。

  • ネットワーク遅延は避けられず、非典型的(1回の呼び出しで150〜400ms)
  • データは、あらゆる操作において外部サーバーとの間で送受信されます。
  • レート制限はAPI層で適用されます
  • APIキーは期限切れとなり、更新する必要があります。
  • Cloudmersiveの障害により、バーコード処理が完全に停止します
  • 運用上の堅牢性を確保するには、再試行ロジック、タイムアウト処理、およびサーキットブレーカーが必要です。

文書処理パイプラインにおけるバーコードスキャン(1時間に数百件の文書を処理する可能性がある)においては、これらは理論上の懸念事項ではありません。

規模の経済によるコスト

Cloudmersiveはリクエストごとの料金体系を採用しています。 リクエストごとの正確なコストは契約プランによって異なりますが、基本的な仕組みはどのプランでも同じです。バーコード操作を行うたびに、月間割り当て量から1リクエストが消費されます。

一般的な生産量での数式は、Cloudmersiveの公開された階層にマップされます:

1日あたりのボリューム 月間取引量 Cloudmersiveティア 年間コスト IronBarcode
1日100ドル 約3,000円/月 基本(月額$19.99) 年間約240ドル 749ドル
1,000/日 約30,000円/月 ビジネス(月額$49.99) ~600ドル/年 749ドル
1日10,000 約30万/月 中規模ビジネス(月額$499.99) ~年間6,000ドル 749ドル
1日5万 約150万/月 エンタープライズ(カスタム) カスタム 749ドル
1日10万 約300万/月 エンタープライズ(カスタム) カスタム 749ドル

IronBarcodeの永久ライセンス(Lite、シングル開発者向け、749ドル)では、無制限のバーコード操作が可能です。 リクエスト量に関わらず、リクエストごとの料金は一切かかりません。 1日1万のバーコードを処理するチームは、最初の6週間で年間Cloudmersiveに支払う費用とライセンスコストが相殺されます。

3人の開発者チームで、1回限りのライセンス($1,499)は、1日1万のバーコードで年間およそ$6,000に対抗します。 IronBarcodeのライセンスは3ヶ月のCloudmersive節約で元が取れます。

崖登り

リクエストごとの料金体系は、使用量が増えるにつれて特有の問題を引き起こします。つまり、コストが使用量に比例して増加するのです。 文書処理パイプラインの文書数が月間2,000件から20,000件に増加すると、Cloudmersiveの請求額は10倍になります。 エンジニアリングコストは増加しません(同じコードでより多くのドキュメントを処理できるため)が、API利用料は増加します。

IronBarcodeにはこのプロパティはありません。 バーコードを10倍処理しても、追加費用は一切かかりません。

遅延の影響

Cloudmersiveの各バーコード操作には以下が含まれます。

  1. リクエスト(画像バイトまたはバーコードデータ)のシリアル化
  2. HTTPS接続の確立または再利用
  3. データをCloudmersiveサーバーに送信する
  4. サーバー側の処理を待機中
  5. 回答を受け取る
  6. 結果を逆シリアル化する

Cloudmersiveの公開ガイダンスと顧客レポートによれば、サーバーの負荷、地理的近接性、画像サイズに応じて、1回の呼び出しでおよそ150〜400msの遅延があります。呼び出し1回あたり250msの場合:

ボリューム ネットワークの総オーバーヘッド
10個のバーコード 2.5秒
バーコード100個 25秒
1,000個のバーコード 4.2分
10,000個のバーコード 41.7分
10万個のバーコード 約7時間

ユーザー向けのエンドポイント(ユーザーが画像をアップロードして結果を期待するWebフォームなど)の場合、単一のバーコードスキャンにおける250ミリ秒の遅延は許容範囲内となる可能性がある。 バックグラウンドで行われる文書処理ジョブの場合、蓄積された遅延がワークフローの主要なコストとなる。

IronBarcodeのローカル処理は、一般的なハードウェアではバーコード1つあたり10~50ミリ秒で完了します。 10,000個のバーコードの場合、処理時間は合計で約8分ですが、Cloudmersiveモデルではネットワークオーバーヘッドだけで41分かかります。

ASP.NET Coreにおけるレイテンシ

応答時間に関するSLAを満たす必要があるWeb APIエンドポイントの場合、Cloudmersiveのレイテンシは固定の最低値となります。 バーコードを読み取って値を返すエンドポイントは、サーバーのハードウェアに関係なく、100ミリ秒より速く応答することはできません。なぜなら、外部APIへの最小往復時間はネットワークの物理的な制約によって決まるからです。

IronBarcodeはローカルで処理を行います。 レイテンシーの最小値は、ハードウェアと画像の複雑さによって決まります。

データ主権

Cloudmersiveのバーコード処理はすべて、データをCloudmersiveのサーバーに送信します。 バーコード読み取りの場合、患者識別情報、金融機関の口座番号、配送先住所、従業員ID、または独自の在庫データなどが含まれている可能性のある画像が、ネットワーク外に送信されることになります。

法令遵守上の影響は、規制環境によって異なります。

規制 クラウドマーシブモデル IronBarcode
HIPAA バーコード画像に含まれるPHIはCloudmersiveとのBAA(事業提携契約)が必要であり、データはネットワーク外に送信されます。 すべての処理はローカルで行われるため、BAAは不要です。
GDPRについて 個人データは米国のサーバーに送信されます。 必要な適正評価 データ送信なし — GDPRを簡素化
ITAR 防衛関連の技術データは外部サービスに送信できません 完全現地生産 ― ITAR(国際武器取引規則)に設計段階から準拠
CMMC 管理された非機密情報は外部ネットワークを通過できない 外部ネットワークへの呼び出しはありません
FedRAMP(フェドランプ 米国政府のデータには、FedRAMP認証を受けたクラウドサービスが必要です。 該当なし — ローカル処理
PCI DSS (英語 バーコード内のカード所有者データは、外部送信時に特別な処理が必要となる。 データはお客様の環境から離れません
エアギャップネットワーク 不可能 - インターネット接続が必要 完全サポート - ネットワークアクセスなしで動作します
内部データポリシー 多くの組織は、運用データをサードパーティのAPIに送信することを禁止している。 第三者による送信はありません

医療、防衛、金融サービス、政府機関などのワークロードにおいては、Cloudmersiveのクラウドモデルは、機能やコストを評価する前に、多くの場合、不適格と判断されます。データが自社ネットワークから外部へ送信されるという点が、不適格となる決定的な要因です。

IronBarcodeはすべての処理をローカルで行います。 バーコード画像はホストマシンから外部に送信されることはありません。いかなる種類のデータ送信も行われません。

信頼性

Cloudmersiveは外部依存関係です。 アプリケーションのバーコード処理の信頼性は、Cloudmersiveの稼働時間によって左右されます。

停電中はどうなるのか

Cloudmersiveでサービス障害が発生した場合:

バーコード読み取り操作が失敗するか、タイムアウトします

  • バーコード生成リクエストでエラーが返される
  • 文書処理パイプラインが停止します
  • 実装したリトライロジックは、リカバリを待つ間、コンピューティングリソースを消費し始めます。

バーコード処理がクリティカルパス(注文受付システム、受領ワークフロー、患者登録フォームなど)に含まれている場合、Cloudmersiveの障害はアプリケーションの障害となります。

律速段階

Cloudmersiveは各価格層でレート制限を強制します。 無料層では公開レート限度が1秒あたり1回の呼び出しであり、並行ドキュメント処理を実質的に直列化します。 月次割当を超えると、操作が失敗するか、またはキューに入れられます。

Cloudmersiveを使用する本番コードでは、以下の処理を行う必要があります。

using Cloudmersive.APIClient.NET.Barcode.Api;
using Cloudmersive.APIClient.NET.Barcode.Client;
using System;
using System.Threading;
using System.Threading.Tasks;

public class CloudmersiveBarcodeService
{
    private readonly BarcodeScanApi _scanApi;
    private static int _requestCount = 0;

    public CloudmersiveBarcodeService()
    {
        Configuration.Default.ApiKey.Add("Apikey", "YOUR-CLOUDMERSIVE-API-KEY");
        _scanApi = new BarcodeScanApi();
    }

    public async Task<string> ScanWithRetry(byte[] imageBytes, int maxRetries = 3)
    {
        for (int attempt = 1; attempt <= maxRetries; attempt++)
        {
            try
            {
                Interlocked.Increment(ref _requestCount);

                using var stream = new System.IO.MemoryStream(imageBytes);
                var result = await _scanApi.BarcodeScanImageAsync(stream);

                if (result.Successful == true)
                    return result.RawText;

                throw new InvalidOperationException("Scan unsuccessful");
            }
            catch (ApiException ex) when (ex.ErrorCode == 429)
            {
                if (attempt < maxRetries)
                    await Task.Delay(TimeSpan.FromSeconds(Math.Pow(2, attempt)));
                else
                    throw;
            }
            catch (Exception) when (attempt < maxRetries)
            {
                await Task.Delay(TimeSpan.FromMilliseconds(500 * attempt));
            }
        }
        throw new InvalidOperationException("All retry attempts failed");
    }
}
using Cloudmersive.APIClient.NET.Barcode.Api;
using Cloudmersive.APIClient.NET.Barcode.Client;
using System;
using System.Threading;
using System.Threading.Tasks;

public class CloudmersiveBarcodeService
{
    private readonly BarcodeScanApi _scanApi;
    private static int _requestCount = 0;

    public CloudmersiveBarcodeService()
    {
        Configuration.Default.ApiKey.Add("Apikey", "YOUR-CLOUDMERSIVE-API-KEY");
        _scanApi = new BarcodeScanApi();
    }

    public async Task<string> ScanWithRetry(byte[] imageBytes, int maxRetries = 3)
    {
        for (int attempt = 1; attempt <= maxRetries; attempt++)
        {
            try
            {
                Interlocked.Increment(ref _requestCount);

                using var stream = new System.IO.MemoryStream(imageBytes);
                var result = await _scanApi.BarcodeScanImageAsync(stream);

                if (result.Successful == true)
                    return result.RawText;

                throw new InvalidOperationException("Scan unsuccessful");
            }
            catch (ApiException ex) when (ex.ErrorCode == 429)
            {
                if (attempt < maxRetries)
                    await Task.Delay(TimeSpan.FromSeconds(Math.Pow(2, attempt)));
                else
                    throw;
            }
            catch (Exception) when (attempt < maxRetries)
            {
                await Task.Delay(TimeSpan.FromMilliseconds(500 * attempt));
            }
        }
        throw new InvalidOperationException("All retry attempts failed");
    }
}
Imports Cloudmersive.APIClient.NET.Barcode.Api
Imports Cloudmersive.APIClient.NET.Barcode.Client
Imports System
Imports System.Threading
Imports System.Threading.Tasks

Public Class CloudmersiveBarcodeService
    Private ReadOnly _scanApi As BarcodeScanApi
    Private Shared _requestCount As Integer = 0

    Public Sub New()
        Configuration.Default.ApiKey.Add("Apikey", "YOUR-CLOUDMERSIVE-API-KEY")
        _scanApi = New BarcodeScanApi()
    End Sub

    Public Async Function ScanWithRetry(imageBytes As Byte(), Optional maxRetries As Integer = 3) As Task(Of String)
        For attempt As Integer = 1 To maxRetries
            Try
                Interlocked.Increment(_requestCount)

                Using stream As New System.IO.MemoryStream(imageBytes)
                    Dim result = Await _scanApi.BarcodeScanImageAsync(stream)

                    If result.Successful = True Then
                        Return result.RawText
                    End If

                    Throw New InvalidOperationException("Scan unsuccessful")
                End Using
            Catch ex As ApiException When ex.ErrorCode = 429
                If attempt < maxRetries Then
                    Await Task.Delay(TimeSpan.FromSeconds(Math.Pow(2, attempt)))
                Else
                    Throw
                End If
            Catch ex As Exception When attempt < maxRetries
                Await Task.Delay(TimeSpan.FromMilliseconds(500 * attempt))
            End Try
        Next
        Throw New InvalidOperationException("All retry attempts failed")
    End Function
End Class
$vbLabelText   $csharpLabel

IronBarcodeは、これらのいずれも必要としません。 レート制限も、APIキーも、再試行インフラも、クォータ追跡もありません。

// NuGet: dotnet add package IronBarcode
using IronBarCode;

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

// Generate locally
BarcodeWriter.CreateBarcode("https://example.com", BarcodeEncoding.QRCode)
    .SaveAsPng("qr.png");

// Read locally
var result = BarcodeReader.Read("barcode.png").First();
Console.WriteLine(result.Value);
// NuGet: dotnet add package IronBarcode
using IronBarCode;

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

// Generate locally
BarcodeWriter.CreateBarcode("https://example.com", BarcodeEncoding.QRCode)
    .SaveAsPng("qr.png");

// Read locally
var result = BarcodeReader.Read("barcode.png").First();
Console.WriteLine(result.Value);
Imports IronBarCode

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

' Generate locally
BarcodeWriter.CreateBarcode("https://example.com", BarcodeEncoding.QRCode) _
    .SaveAsPng("qr.png")

' Read locally
Dim result = BarcodeReader.Read("barcode.png").First()
Console.WriteLine(result.Value)
$vbLabelText   $csharpLabel

再試行ロジックはありません。 レート制限の処理は行われません。 HTTP例外処理は行われません。 割り当て管理は行いません。

IronBarcodeを理解する

IronBarcodeは、ホストマシン上でバーコードを完全に処理するネイティブ.NETライブラリです。50種類以上のバーコード形式の読み取りと生成をサポートし、PDFをネイティブに処理します。また、 .NET Framework 4.6.2から.NET 9までのすべて for .NETプラットフォームで動作します。

主な特徴:

-完全ローカル処理:バーコード操作中にネットワーク呼び出しは一切発生しません -リクエストごとの費用は不要: 1つのライセンスで無制限のバーコード操作が可能 -処理速度制限なし:ハードウェアがサポートする限り、バーコードをいくつでも処理できます。 -実行時に外部依存関係なし:インターネット接続不要 -ネイティブPDFサポート:画像を抽出せずにPDFからバーコードを読み取ります -完全な読み書き機能:主要なすべてのフォーマットでバーコードを生成し、画像、PDF、ストリームから読み取ります。

// NuGet: dotnet add package IronBarcode
using IronBarCode;

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

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

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

// Code128 generation
BarcodeWriter.CreateBarcode("SHIP-2024031500428", BarcodeEncoding.Code128)
    .SaveAsPng("barcode.png");

// Get bytes for embedding in document or API response
byte[] bytes = BarcodeWriter.CreateBarcode("data", BarcodeEncoding.Code128)
    .ToPngBinaryData();

// Read from image
var results = BarcodeReader.Read("barcode.png");
foreach (var r in results)
{
    Console.WriteLine($"{r.Format}: {r.Value}");
}

// Read from PDF — native, no image extraction step
var pdfResults = BarcodeReader.Read("invoices.pdf");
foreach (var r in pdfResults)
{
    Console.WriteLine($"Page {r.PageNumber}: {r.Value}");
}

// Multi-barcode detection
var options = new BarcodeReaderOptions
{
    Speed = ReadingSpeed.Balanced,
    ExpectMultipleBarcodes = true,
};
var multiResults = BarcodeReader.Read("manifest.png", options);
// NuGet: dotnet add package IronBarcode
using IronBarCode;

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

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

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

// Code128 generation
BarcodeWriter.CreateBarcode("SHIP-2024031500428", BarcodeEncoding.Code128)
    .SaveAsPng("barcode.png");

// Get bytes for embedding in document or API response
byte[] bytes = BarcodeWriter.CreateBarcode("data", BarcodeEncoding.Code128)
    .ToPngBinaryData();

// Read from image
var results = BarcodeReader.Read("barcode.png");
foreach (var r in results)
{
    Console.WriteLine($"{r.Format}: {r.Value}");
}

// Read from PDF — native, no image extraction step
var pdfResults = BarcodeReader.Read("invoices.pdf");
foreach (var r in pdfResults)
{
    Console.WriteLine($"Page {r.PageNumber}: {r.Value}");
}

// Multi-barcode detection
var options = new BarcodeReaderOptions
{
    Speed = ReadingSpeed.Balanced,
    ExpectMultipleBarcodes = true,
};
var multiResults = BarcodeReader.Read("manifest.png", options);
Imports IronBarCode

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

' QR code generation
QRCodeWriter.CreateQrCode("https://example.com", 500).SaveAsPng("qr.png")

' QR code with brand logo
QRCodeWriter.CreateQrCode("https://example.com", 500) _
    .AddBrandLogo("logo.png") _
    .SaveAsPng("branded-qr.png")

' Code128 generation
BarcodeWriter.CreateBarcode("SHIP-2024031500428", BarcodeEncoding.Code128) _
    .SaveAsPng("barcode.png")

' Get bytes for embedding in document or API response
Dim bytes As Byte() = BarcodeWriter.CreateBarcode("data", BarcodeEncoding.Code128) _
    .ToPngBinaryData()

' Read from image
Dim results = BarcodeReader.Read("barcode.png")
For Each r In results
    Console.WriteLine($"{r.Format}: {r.Value}")
Next

' Read from PDF — native, no image extraction step
Dim pdfResults = BarcodeReader.Read("invoices.pdf")
For Each r In pdfResults
    Console.WriteLine($"Page {r.PageNumber}: {r.Value}")
Next

' Multi-barcode detection
Dim options As New BarcodeReaderOptions With {
    .Speed = ReadingSpeed.Balanced,
    .ExpectMultipleBarcodes = True
}
Dim multiResults = BarcodeReader.Read("manifest.png", options)
$vbLabelText   $csharpLabel

機能比較

フィーチャー クラウドマーシブ バーコード API IronBarcode
加工場所 Cloudmersiveサーバー ローカル — お使いのマシンのみ
インターネットが必要です。 はい、すべての手術 なし
データ転送 Cloudmersiveに送信されるすべての画像/データ None
操作ごとのレイテンシ 150〜400ms(ネットワーク) 10~50ms(ローカル)
コストモデル リクエストごとの月間割り当て 1回限りの永久ライセンス
1日あたり10,000個のバーコードのコスト 約$6,000/年(中規模ビジネス層) 749ドル
料金の制限 はい、同時進行で月次です None
オフライン/エアギャップ 不可 フルサポート
HIPAA BAA(事業提携契約)が必要です。 データリーフ・ネットワーク 地元限定 - BAAは不要
GDPRについて 米国のサーバーに転送されたデータ データ転送なし
ITAR / CMMC 外部送信禁止 設計段階から準拠
停電の影響 処理が停止します 外部依存関係なし
バーコード生成 はい はい
バーコード読み取り はい はい
ネイティブPDFサポート いいえ — 画像を個別に抽出します はい、PDFを直接読むことができます
複数バーコード検出 呼び出しごとの単一結果 BarcodeScanResult はい — ExpectMultipleBarcodes = true
破損したバーコードの復旧 サーバーサイドデコーダー ML 対応、ReadingSpeed.ExtremeDetail
サポートされる形式 生成のための6つの1D/2D形式; より広範な読取カバレッジ 50種類以上のフォーマット
再試行/エラー処理 本番環境コードで必須 不要
.NET Frameworkのサポート .NET Frameworkおよび.NET Core (RESTクライアント経由) .NET Framework 4.6.2以降から.NET 9まで
Docker(Docker)/ Linux(リナックス) HTTPクライアント経由 ネイティブ
Azureファンクション HTTPクライアント経由 ネイティブ

APIマッピングリファレンス

クラウドマーシブ IronBarcode
Configuration.Default.ApiKey.Add("Apikey", "key") IronBarCode.License.LicenseKey = "key"
new GenerateBarcodeApi() 静的 — インスタンスは不要
new BarcodeScanApi() 静的 — インスタンスは不要
apiInstance.GenerateBarcodeQRCode(value) BarcodeWriter.CreateBarcode(value, BarcodeEncoding.QRCode).ToPngBinaryData()
apiInstance.GenerateBarcodeCode128(value) BarcodeWriter.CreateBarcode(value, BarcodeEncoding.Code128).ToPngBinaryData()
apiInstance.GenerateBarcodeEAN13(value) BarcodeWriter.CreateBarcode(value, BarcodeEncoding.EAN13).ToPngBinaryData()
scanApi.BarcodeScanImage(imageFile) BarcodeReader.Read(imageBytes)
result.RawText result.Value
result.BarcodeType result.Format
result.Successful == true 結果コレクションは空ではありません
CloudmersiveサーバーへのHTTPS接続 ローカル処理 - ネットワークなし
150〜400msの遅延 10~50msローカル
月間消費量 無制限 — 割り当てなし
APIキーのローテーションが必要です ワンタイムライセンスキー
再試行ロジックが必要です 不要

チームが切り替わるとき

CloudmersiveからIronBarcodeへの切り替えのきっかけとなるのは、ほぼ常に以下の4つの状況のいずれかです。

コンプライアンス要件:セキュリティレビュー、顧客契約、または規制監査により、機密データを含むバーコード画像がネットワークから外部に送信されていることが確認される。 HIPAA、GDPR、またはITARへの準拠には、現地での処理が必要です。 Cloudmersiveとの連携は、コストや利便性に関係なく、必ず置き換える必要がある。

規模拡大に伴うコストの予期せぬ増加:プロジェクトは少量から開始され、Cloudmersiveの無料または低価格プランで利用量がカバーされます。 アプリケーションのユーザー数が増加したり、文書処理パイプラインが拡大したりすると、月額料金もそれに比例して増加します。 ある時点(通常は月額100ドルから200ドル程度)で、チームはIronBarcodeの永久ライセンスと比較して損益分岐点を計算し、移行を決定する。

エアギャップ環境:アプリケーションは、インターネットにアクセスできない環境(工場、政府機関、ネットワーク制限のある医療施設など)で実行する必要があります。 これらの環境では、クラウドマーシブは不可能です。 IronBarcodeはネットワーク接続なしで動作します。

SLAにおける遅延:サービスレベル契約では応答時間が求められますが、Cloudmersiveのネットワークオーバーヘッドのため、それを保証することは不可能です。 IronBarcodeによるローカル処理により、バーコード処理をSLAの範囲内に収めることができます。

文書処理パイプラインの例

現実的なEnterpriseシナリオ:買掛金担当チームが1日に2,000件の請求書を処理する。 各請求書はPDFファイルで、発注番号、仕入先コード、明細項目参照用のバーコードが1つ以上含まれています。

クラウドマーシブのアプローチ:

  • 請求書2,000件 × バーコード平均3個 = 1日あたり6,000回のAPI呼び出し
  • 1回の通話あたり250ミリ秒の場合:1日あたり25分のネットワーク待機時間 月間:約18万件のリクエスト → 相当なサブスクリプションティア 年間費用:約2,000ドル~4,000ドル
  • リスク:Cloudmersiveが利用できない場合、処理が停止します
  • コンプライアンス: 買掛金請求書には外部に送信される口座番号が含まれる場合があります

IronBarcodeのアプローチ:

using IronBarCode;

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

var options = new BarcodeReaderOptions
{
    Speed = ReadingSpeed.Balanced,
    ExpectMultipleBarcodes = true,
};

string[] invoicePaths = Directory.GetFiles("invoices", "*.pdf");

foreach (var invoicePath in invoicePaths)
{
    // One call per invoice processes all pages and all barcodes
    var barcodes = BarcodeReader.Read(invoicePath, options);

    foreach (var barcode in barcodes)
    {
        Console.WriteLine($"Invoice: {invoicePath} | Page: {barcode.PageNumber} | {barcode.Format}: {barcode.Value}");
    }
}
using IronBarCode;

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

var options = new BarcodeReaderOptions
{
    Speed = ReadingSpeed.Balanced,
    ExpectMultipleBarcodes = true,
};

string[] invoicePaths = Directory.GetFiles("invoices", "*.pdf");

foreach (var invoicePath in invoicePaths)
{
    // One call per invoice processes all pages and all barcodes
    var barcodes = BarcodeReader.Read(invoicePath, options);

    foreach (var barcode in barcodes)
    {
        Console.WriteLine($"Invoice: {invoicePath} | Page: {barcode.PageNumber} | {barcode.Format}: {barcode.Value}");
    }
}
Imports IronBarCode

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

Dim options As New BarcodeReaderOptions With {
    .Speed = ReadingSpeed.Balanced,
    .ExpectMultipleBarcodes = True
}

Dim invoicePaths As String() = Directory.GetFiles("invoices", "*.pdf")

For Each invoicePath In invoicePaths
    ' One call per invoice processes all pages and all barcodes
    Dim barcodes = BarcodeReader.Read(invoicePath, options)

    For Each barcode In barcodes
        Console.WriteLine($"Invoice: {invoicePath} | Page: {barcode.PageNumber} | {barcode.Format}: {barcode.Value}")
    Next
Next
$vbLabelText   $csharpLabel
  • 2,000件の請求書をローカルで数分で処理。ネットワークオーバーヘッドに25分もかかることはありません。 年間費用:749ドル(開発者1名分、一括払い)
  • リスク:外部依存関係なし
  • コンプライアンス:請求書データはネットワーク外に持ち出されることはありません

結論

Cloudmersive Barcode APIはクラウドベースのRESTサービスです。料金は使用量に応じて変動します。 その遅延時間はインターネットによって決まります。 その利用可能性は、Cloudmersiveのインフラストラクチャに依存します。 お客様のデータは、バーコード処理のたびに外部サーバーに送信されます。

これらはクラウドAPIモデルの構造的な特性であり、Cloudmersiveに対する具体的な不満ではありません。 このモデルは、少量生産のプロトタイプ作成や、これらの特性が全く重要でない用途には問題なく機能します。 処理量が増加し、要件が厳しくなるにつれて、コストがかさみ、処理速度が遅くなり、場合によっては法令遵守違反となる可能性が高くなります。

IronBarcodeの749ドルの1回限りのライセンスは、無制限のバーコード操作をカバーし、データ送信なしでローカルで実行され、PDFをネイティブに処理し、本番環境のCloudmersive統合で必要とされる再試行インフラストラクチャを一切必要としません。 日次1万のバーコードで、数式は最初の2ヶ月でIronBarcodeの方に解決されます。

よくある質問

Cloudmersive BarCode APIとは何ですか?

Cloudmersive BarCode APIは、C#アプリケーションでバーコードを生成および読み取るため for .NETバーコードライブラリです。これは、開発者が .NET プロジェクトのバーコードソリューションを選択する際に評価するいくつかの選択肢の 1 つです。

Cloudmersive Barcode APIとIronBarcodeの主な違いは何ですか?

IronBarcodeはインスタンス管理を必要としない静的なステートレスAPIを使用しています。IronBarcodeはまた、ネイティブPDFサポート、自動フォーマット検出、およびすべての環境にわたるシングルキーライセンスを提供します。

IronBarcodeはCloudmersive BarCode APIよりもライセンスが簡単ですか?

IronBarcodeは単一のライセンスキーで開発環境と本番環境の両方をカバーします。これは、SDKキーとランタイムキーを分離するライセンスシステムと比較して、CI/CDパイプラインとDocker構成を簡素化します。

IronBarcode はCloudmersive Barcode APIがサポートするすべてのバーコードフォーマットをサポートしていますか?

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 はCloudmersive Barcode APIと比べてどのようにバッチ処理を行いますか?

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インストーラーやランタイムファイルは必要ありません。

Cloudmersiveとは異なり、購入前にIronBarcodeを評価することはできますか?

IronBarcodeのトライアルモードでは、完全なデコードされたバーコード値を返します。購入を決定する前に、ご自身のドキュメントで読み取り精度をベンチマークすることができます。

Cloudmersive BarCode APIとIronBarcodeの価格の違いは何ですか?

IronBarcodeは、開発および量産をカバーする永続的なシングルデベロッパーライセンスで749ドルからご利用いただけます。価格の詳細とボリュームオプションはIronBarcodeのライセンスページでご覧いただけます。別途ランタイムライセンスは必要ありません。

Cloudmersive BarCode APIからIronBarcodeへの移行は簡単ですか?

Cloudmersive BarCode APIからIronBarcodeへの移行は、主にインスタンスベースのAPIコールをIronBarcodeの静的メソッドに置き換え、ライセンスの定型文を削除し、結果のプロパティ名を更新します。ほとんどの移行では、コードを追加するのではなく、コードを削減します。

IronBarcodeはロゴ入りQRコードを生成できますか?

はい。QRCodeWriter.CreateQrCode().AddBrandLogo("logo.png")は、設定可能なエラー修正機能付きで、ブランド画像をネイティブにQRコードに埋め込みます。カラーQRコードもChangeBarCodeColor()でサポートされています。

Curtis Chau
テクニカルライター

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

開発以外にも、CurtisはIoT(Internet of Things)への強い関心を持ち、ハードウェアとソフトウェアの統合方法を模索しています。余暇には、ゲームをしたりDiscordボットを作成したりして、技術に対する愛情と創造性を組み合わせています。

アイアンサポートチーム

私たちは週5日、24時間オンラインで対応しています。
チャット
メール
電話してね