MESCIUS コンポーネントワン C1バーコード vs IronBarcode
MESCIUS ComponentOneのバーコードコントロール(以前はGrapeCity、2023年にブランド変更)は、Windows Forms、WPF、WinUI、Blazor、ASP.NET Core MVCアプリケーションの中でバーコードを生成します。 このツールはそれをうまく実現している。APIは簡潔で、出力品質も高く、WinFormsデザイナーとの統合もスムーズだ。 しかし、その活動範囲は狭い。 バーコードを読み取ることができません。 WinFormsおよびWPFエディションは、Windowsのみのターゲットフレームワークで動作します。 また、単独製品ではなく、ComponentOne Studio Enterpriseの一部として提供されます。これには100以上のUIコントロールが含まれており、価格は$1,299/開発者/年のサブスクリプションです。 .NETプロジェクトのバーコードオプションを検討していて、比較リストにComponentOneを見つけた場合、この記事では、その範囲が実際には何を意味するのかについて説明します。
C1BarCodeを理解する
C1BarCodeはビジュアルコントロールです。 生成ワークフローではインスタンスを作成し、プロパティを設定してSystem.Drawing.Imageを取得します。
// ComponentOne C1BarCode
using C1.Win.Barcode;
using C1.BarCode;
using System.Drawing;
// License must be set before first use
C1.C1License.Key = "YOUR-COMPONENTONE-KEY";
var barcode = new C1BarCode();
barcode.CodeType = CodeType.Code128;
barcode.Text = "ITEM-12345";
barcode.BarHeight = 100;
barcode.ModuleSize = 2;
barcode.ShowText = true;
barcode.CaptionPosition = CaptionPosition.Below;
using var image = barcode.GetImage();
image.Save("barcode.png", System.Drawing.Imaging.ImageFormat.Png);Imports C1.Win.Barcode
Imports C1.BarCode
Imports System.Drawing
Imports System.Drawing.Imaging
' License must be set before first use
C1.C1License.Key = "YOUR-COMPONENTONE-KEY"
Dim barcode As New C1BarCode()
barcode.CodeType = CodeType.Code128
barcode.Text = "ITEM-12345"
barcode.BarHeight = 100
barcode.ModuleSize = 2
barcode.ShowText = True
barcode.CaptionPosition = CaptionPosition.Below
Using image As Image = barcode.GetImage()
image.Save("barcode.png", ImageFormat.Png)
End UsingプロパティセッターAPIはWinForms開発者には馴染み深いもので、デザイナー画面に直接対応しています。 CaptionPositionはすべてデザイナで可視のプロパティで、コード内で同様に機能します。
C1BarCodeは38のシンボロジーをサポートしており、主流の1Dと2Dフォーマットをカバーしています:Code 39、Code 128、EAN-8、EAN-13、UPC-A、UPC-E、ITF、QR Code、PDF417、およびDataMatrixなど。 バーコード生成において、一般的な使用ケースをカバーしています。
読み取りAPIなし
これは設定オプションで埋められるような問題ではありません。 C1BarCodeReaderクラスは存在しません。 C1BarCodeに存在しません。 ComponentOneのバーコード制御は、設計上、生成のみに限定されています。
アプリケーションでアップロードされた画像からバーコードをスキャンしたり、印刷されたラベルを検証したり、コードが埋め込まれたドキュメントを処理したり、Web API で QR コードからデータを抽出したりする必要がある場合、C1BarCode ではそれらのいずれも実行できません。 読み取りには別のライブラリが必要になるため、スタンドアロンのバーコードライブラリで両方の操作をカバーできるのに、100以上の制御機能を備えたEnterpriseSuiteの中にバーコード生成専用のコンポーネントに料金を支払う理由が疑問になります。
印刷出力用に設計されたWinFormsバーコードコントロールにおいて、読み取りAPIが存在しないことは珍しいことではない。 意思決定のポイントとなるのは、要件が拡大する場合であり、バーコードに関する要件はほぼ必ず拡大する。
Windows専用制約
C1BarCodeのWinFormsおよびWPFエディションは、Windows特有のターゲットフレームワーク設定が必要です:
<!-- ComponentOne WinForms edition target -->
<TargetFramework>net8.0-windows</TargetFramework>
<UseWindowsForms>true</UseWindowsForms>
UseWindowsFormsはオプションの設定ではありません。 Graphicsに依存しています。 net8.0-windowsを削除するとビルドが壊れます。 ComponentOneはBlazorおよびASP.NET Core MVCのクロスプラットフォームTFMをターゲットとしたエディションを提供していますが、WinFormsおよびWPFパッケージはWindowsに限定されています。
一方、IronBarcodeはプラットフォームの制限なしにnet8.0(またはサポートされる任意のTFM)をターゲットにしています。
<!-- IronBarcode — standard cross-platform target -->
<TargetFramework>net8.0</TargetFramework>
<!-- なし UseWindowsForms required -->
<!-- Runs on Linux, macOS, Docker, Azure Functions -->
これはいくつかの実際的な場面で重要となる。
- **Linux 上の Azure App Service:**新しい App Service デプロイメントのデフォルトプラン。
net8.0-windowsはそれをターゲットにできません。 - Dockerコンテナ: Linuxコンテナが標準です。 Windowsコンテナはサイズが大きく、コストも高く、多くのクラウドサービスでは利用できません。
- ASP.NET Core Web API: Windowsにしかデプロイできないバーコード生成エンドポイントは、チームが最終的に解消する必要のあるデプロイ上の制約です。
- **Azure Functions:**従量課金プランはLinux上で動作します。
net8.0-windowsターゲットを持つバーコード生成関数は、消費プランにデプロイできません。 - macOS開発: macOSの開発者は
net8.0-windowsプロジェクトをローカルで実行できず、生成ロジックのテストもできません。
アプリケーションがWindows上でのみ動作するWinFormsデスクトップツールであれば、プラットフォームの制約は問題になりません。 導入要件にLinux環境やクラウド環境が含まれるようになった途端、問題が生じる。
Suiteバンドル
C1BarCodeコントロールは、ComponentOne Studio Enterpriseの一部として販売されており、WinForms、WPF、Blazor、ASP.NET用の完全なComponentOneコントロールスイートが含まれています。 ComponentOne Studio Enterpriseの価格は年間$1,299/開発者(サブスクリプション)です; 単一プラットフォームエディション(WinFormsまたはWPF)は年間$799/開発者です。
そのSuiteには、グリッド、チャート、スケジューラー、入力コントロール、レポートデザイナー、マップコントロール、ゲージなど、100種類以上のコンポーネントが含まれています。 データボリュームが多いアプリケーションを構築しており、それらのコントロールの多くを必要としている場合、スイート価格は合理的かもしれません。 バーコード生成が必要で、検索で見つかったためにComponentOneにたどり着いたのであれば、主に一つのコントロールのために企業UIスイートを購入しています。
NuGetパッケージはWinForms用にC1.WPF.BarCode, C1.WinUI.BarCode, およびC1.Blazor.BarCode)、ComponentOne Studioのサブスクリプションを通じてライセンスされています。 フルスイートなしでバーコード機能を望む開発者に対してバーコードのみのライセンスティアはありません。
IronBarcodeの価格構造は異なります:それは独立したバーコードライブラリで、永続ライセンスは開発者一人が$999から始まり(Lite)、3人で$1,499(Plus)、10人で$2,399(Professional)、無制限の開発者で$4,799です。 グリッド制御機能も、グラフライブラリも、レポートデザイナーもありません。必要なのは、バーコード機能だけです。
QRコードのカスタマイズ
どちらのライブラリも、カスタマイズオプション付きのQRコード生成をサポートしています。 APIのスタイルが大きく異なります。
ComponentOneのプロパティセッター方式:
// ComponentOne — QR code with error correction and color
using C1.Win.Barcode;
using C1.BarCode;
using System.Drawing;
C1.C1License.Key = "YOUR-COMPONENTONE-KEY";
var barcode = new C1BarCode();
barcode.CodeType = CodeType.QRCode;
barcode.Text = "https://example.com/product/4821";
barcode.QRCodeVersion = QRCodeVersion.Version5;
barcode.QRCodeErrorCorrectionLevel = QRCodeErrorCorrectionLevel.High;
barcode.QRCodeModel = QRCodeModel.Model2;
barcode.ForeColor = Color.DarkBlue;
barcode.BackColor = Color.White;
barcode.ModuleSize = 4;
using var image = barcode.GetImage();
image.Save("product-qr.png", System.Drawing.Imaging.ImageFormat.Png);Imports C1.Win.Barcode
Imports C1.BarCode
Imports System.Drawing
Imports System.Drawing.Imaging
C1.C1License.Key = "YOUR-COMPONENTONE-KEY"
Dim barcode As New C1BarCode()
barcode.CodeType = CodeType.QRCode
barcode.Text = "https://example.com/product/4821"
barcode.QRCodeVersion = QRCodeVersion.Version5
barcode.QRCodeErrorCorrectionLevel = QRCodeErrorCorrectionLevel.High
barcode.QRCodeModel = QRCodeModel.Model2
barcode.ForeColor = Color.DarkBlue
barcode.BackColor = Color.White
barcode.ModuleSize = 4
Using image As Image = barcode.GetImage()
image.Save("product-qr.png", ImageFormat.Png)
End UsingIronBarcodeの流暢なチェーン:
// IronBarcode — QR code with error correction and color
// NuGet: dotnet add package IronBarcode
using IronBarCode;
using System.Drawing;
QRCodeWriter.CreateQrCode(
"https://example.com/product/4821",
300,
QRCodeWriter.QrErrorCorrectionLevel.Highest)
.ChangeBarCodeColor(Color.DarkBlue)
.SaveAsPng("product-qr.png");Imports IronBarCode
Imports System.Drawing
QRCodeWriter.CreateQrCode(
"https://example.com/product/4821",
300,
QRCodeWriter.QrErrorCorrectionLevel.Highest) _
.ChangeBarCodeColor(Color.DarkBlue) _
.SaveAsPng("product-qr.png")ComponentOneのアプローチは、GetImage()を呼び出す前に複数のプロパティを設定する必要があります。 IronBarcodeの.SaveAsPng()を呼び出します。 管理すべきインスタンスは存在しません。
IronBarcodeはQRコードへのロゴ埋め込みにも対応していますが、C1BarCodeは対応していません。
// QR code with embedded brand logo
QRCodeWriter.CreateQrCode("https://example.com/track/8821", 500)
.AddBrandLogo("company-logo.png")
.ChangeBarCodeColor(Color.DarkBlue)
.SaveAsPng("branded-qr.png");' QR code with embedded brand logo
QRCodeWriter.CreateQrCode("https://example.com/track/8821", 500) _
.AddBrandLogo("company-logo.png") _
.ChangeBarCodeColor(Color.DarkBlue) _
.SaveAsPng("branded-qr.png")IronBarcodeを理解する
IronBarcodeは、バーコードの生成と読み取りを網羅したスタンドアロン for .NETバーコードライブラリです。 それはNuGet (dotnet add package IronBarcode)からインストールされ、プラットフォーム制限なしにサポートされる任意 for .NET TFMをターゲットとし、Windows、Linux、macOS、Docker、Azure、およびAWS Lambda上で動作します。
閲覧側では、PDF文書をネイティブにサポートしています。
// Read barcodes from a PDF — no image extraction needed
using IronBarCode;
var results = BarcodeReader.Read("invoice.pdf");
foreach (var barcode in results)
{
Console.WriteLine($"Page {barcode.PageNumber}: {barcode.Format} — {barcode.Value}");
}Imports IronBarCode
' Read barcodes from a PDF — no image extraction needed
Dim results = BarcodeReader.Read("invoice.pdf")
For Each barcode In results
Console.WriteLine($"Page {barcode.PageNumber}: {barcode.Format} — {barcode.Value}")
Next高スループットシナリオでは、BarcodeReaderOptionsは速度と精度のトレードオフとマルチバーコード検出を制御します。
// Multi-barcode read with performance options
using IronBarCode;
var options = new BarcodeReaderOptions
{
Speed = ReadingSpeed.Balanced,
ExpectMultipleBarcodes = true,
ExpectBarcodeTypes = BarcodeEncoding.Code128 | BarcodeEncoding.QRCode
};
var results = BarcodeReader.Read("warehouse-manifest.jpg", options);Imports IronBarCode
' Multi-barcode read with performance options
Dim options As New BarcodeReaderOptions With {
.Speed = ReadingSpeed.Balanced,
.ExpectMultipleBarcodes = True,
.ExpectBarcodeTypes = BarcodeEncoding.Code128 Or BarcodeEncoding.QRCode
}
Dim results = BarcodeReader.Read("warehouse-manifest.jpg", options)生成機能は、一貫した静的APIを備えた標準フォーマットに対応しています。
// Code 128 generation to file
BarcodeWriter.CreateBarcode("SHIP-20240312-7834", BarcodeEncoding.Code128)
.SaveAsPng("shipping-label.png");
// QRコード生成 to byte array (for HTTP response)
byte[] qrBytes = QRCodeWriter.CreateQrCode("https://example.com/order/7734", 400)
.ToPngBinaryData();Imports System
' Code 128 generation to file
BarcodeWriter.CreateBarcode("SHIP-20240312-7834", BarcodeEncoding.Code128) _
.SaveAsPng("shipping-label.png")
' QRコード生成 to byte array (for HTTP response)
Dim qrBytes As Byte() = QRCodeWriter.CreateQrCode("https://example.com/order/7734", 400) _
.ToPngBinaryData()対応プラットフォーム:Windows、Linux、macOS、Docker、Azure(App ServiceおよびFunctions)、AWS Lambda。 サポートされている.NETバージョン:.NET Framework 4.6.2以上、.NET Core 3.1以上、および.NET 5/6/7/8。
機能比較
| フィーチャー | MESCIUS コンポーネントワン C1バーコード | IronBarcode |
|---|---|---|
| バーコード生成 | はい | はい |
| バーコード読み取り | なし | はい |
| QRコード生成 | はい | はい |
| QRロゴ埋め込み | なし | はい |
| PDFの閲覧用入力 | 該当なし(読解なし) | はい(ネイティブ) |
| .NETプラットフォームターゲット(WinForms/WPFエディション) | net8.0-windows | 任意のTFM (net8.0など) |
| UseWindowsFormsが必要(WinFormsエディション) | はい | なし |
| Linux / Docker のデプロイ | Blazor/ASP.NET MVCエディションのみ | はい |
| macOSへの展開 | Blazor/ASP.NET MVCエディションのみ | はい |
| Azure Functions(Linux) | Blazor/ASP.NET MVCエディションのみ | はい |
| ASP.NET Coreサーバーサイド | ASP.NET Core MVCエディション | はい |
| スタンドアロンNuGetパッケージ | スイートライセンスのされたパッケージ | はい |
| 単体価格 | 該当なし | 749ドルから(Lite、永久ライセンス) |
| Suite料金 | $1,299/開発者/年 Enterprise; $799/開発者/年 単一プラットフォーム | 該当なし |
| 流暢な生成API | いいえ(プロパティセッター) | はい |
BarcodeReader.Read() | なし | はい |
BarcodeWriter.CreateBarcode() | なし | はい |
QRCodeWriter.CreateQrCode() | なし | はい |
| サポートされている.NETバージョン | .NET 6+(WindowsはWinForms/WPF用) | .NET Framework 4.6.2以上、.NET Core 3.1以上、.NET 5–8 |
| 永久ライセンスオプション | いいえ(サブスクリプション) | はい |
APIマッピングリファレンス
C1BarCodeからIronBarcodeに移行するチームには、以下の直接的な対応策が適用されます。
| コンポーネントワン C1バーコード | IronBarcode |
|---|---|
C1.C1License.Key = "..." | IronBarCode.License.LicenseKey = "YOUR-LICENSE-KEY" |
new C1BarCode() | 静的 — インスタンスは不要 |
barcode.CodeType = CodeType.Code128 | BarcodeEncoding.Code128 (パラメータとして渡される) |
barcode.Text = "data" | BarcodeWriter.CreateBarcode()の最初の引数 |
barcode.BarHeight = 100 | バーコードライターの.ResizeTo(width, 100) |
barcode.ModuleSize = 2 | .ResizeTo()はピクセルでのサイズ調整を制御します |
barcode.ForeColor = Color.DarkBlue | .ChangeBarCodeColor(Color.DarkBlue) |
barcode.BackColor = Color.White | .ChangeBackgroundColor(Color.White) |
barcode.GetImage() | .SaveAsPng() / .ToPngBinaryData() |
barcode.QRCodeErrorCorrectionLevel | QRCodeWriter.QrErrorCorrectionLevel 列挙体 |
barcode.QRCodeVersion | 自動(またはバージョンパラメータ) |
| 読み取りAPIはありません | BarcodeReader.Read(path) |
net8.0-windows 必須 | net8.0 (または任意のTFM) |
UseWindowsForms = true 必須 | 不要 |
チームが切り替わるとき
**読書の必要性が生じる。**これが最も一般的なきっかけである。 あるチームがC1BarCodeを使ってバーコードラベル生成システムを構築した後、スキャンの検証、入荷貨物書類の処理、アップロードされた画像からのQRコードのデコードといった要件を受け取る。 C1BarCodeでは対応できません。選択肢は、読み取り用に別のバーコードライブラリを追加するか、C1BarCodeを両方の形式に対応できるライブラリに置き換えるかのいずれかです。
LinuxまたはDockerによるデプロイメント。Windowsデスクトップ向けに配信されるWinFormsデスクトップアプリは、この制約を受けません。 バーコード画像を生成するASP.NET Core APIは、特にLinuxコンテナ内で実行する必要がある場合や、Linux上のAzure App Serviceにデプロイする必要がある場合は、バーコード画像を生成する必要があります。 net8.0-windowsターゲットフレームワークは、そのデプロイオプションを即座にブロックします。
マイクロサービスまたはサーバーレスアーキテクチャ。Azure Functions、AWS Lambda、およびコンテナ化されたマイクロサービスは、Linuxファーストです。Linuxにデプロイできないバーコード生成サービスは、マイクロサービスとして適切ではありません。
Suiteのサブスクリプション費用と要件範囲の比較。ComponentOne Studio Enterpriseの料金を支払っていて、既にそのグリッド、チャート、その他のコントロールを使用しているチームは、既にサブスクリプションの費用対効果を証明しています。 主に、あるいは完全にバーコード生成のために契約しているチームは、実際には使用していない100以上のコントロール機能に対して料金を支払っていることになる。 開発者一人当たりの購読料は、チーム規模に応じて増加します。
永久ライセンスをご希望の場合は、 ComponentOne Studioはサブスクリプションのみとなります。 永久ライセンスのオプションはありません。 出荷するソフトウェアを所有することを好むチームにとって、 — 特にコンプライアンスや長期メンテナンスの理由から — IronBarcodeの永続ライセンス(Liteは$999から)は構造的に異なります。
結論
C1BarCodeは、WinForms環境でバーコードをきれいに生成します。 それはまさにこのソフトウェアが得意とするところであり、Windows上でラベル生成のみを必要とするWinFormsデスクトップアプリケーションにとっては、ComponentOneSuiteの中で機能的な選択肢となる。
範囲はそこで終了です。 閲覧不要、Windows専用展開、スタンドアロンパッケージなし、サブスクリプションライセンス。 プロジェクトの要件がWindows上でのWinForms生成にとどまらず、読み取り要件、Linuxへのデプロイ対象、Web API、Dockerコンテナ、クラウド機能などにも及ぶ場合、C1BarCodeではそれらに対応できません。 IronBarcodeは、生成と読み取りの両方をカバーし、 .NETがサポートするあらゆるプラットフォームで動作し、100個の制御機能を備えたEnterpriseSuiteのサブスクリプションなしでスタンドアロンパッケージとして利用可能です。

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