IronBarcode Architecture Overview — As of Version 2025.2+
Current architecture in implementation
Overview
IronBarcode package architecture has been restructured for better modularity, cross-platform support, and long-term maintainability. The new design aligns with the naming conventions of IronOCR and IronPDF, and introduces clearer separation of C#, native, and machine learning components.
Package Structure
Main Distribution
-
BarCode
Default package for Windows platforms. This is the primary NuGet for general-purpose use on Windows. -
BarCode.Linux,BarCode.MacOS, etc.
OS-specific distributions. These will follow a naming convention similar to the approach already used in IronOCR and IronPDF.
Internal Package Layers
Each top-level Barcode package is composed of multiple internal subpackages:
1. BarCode.Slim
-
Contents:
-
Core C# code
-
The interop layer
-
PDF-related code
-
All C# third-party dependencies
-
-
Purpose: Acts as the central logic and binding layer that drives IronBarcode’s managed code features.
2. IronSoftware.ReaderInternals.XXX
-
Contents:
-
All native C++ code for:
-
Reading
-
Writing
-
Detecting barcodes
-
-
-
Platform-specific: Variants exist for Windows, Linux, Mac, etc.
3. BarCode.Detection
-
Contents:
-
Machine learning detection logic
-
Currently implemented in C# using ONNX Runtime
- Will not be dependant on OS at the moment
-
-
Note: Will eventually be replaced by ncnn (a native C++ ML inference library), which will introduce OS-specific variants.
Exclusions for Mobile Platforms
Due to performance concerns and compatibility limitations on mobile platforms:
-
Barcode.Detectionwill NOT be included in:-
Barcode.iOS -
Barcode.Android
-
Benefits of the New Architecture
-
Modular separation between managed and native code
-
Clean OS-targeted packaging
-
Future-proofing for high-performance ML detection
-
Better alignment with other IronSoftware libraries
-
Improved maintainability and troubleshooting