Architektura IronBarcode (od 2025.2+)
Od wersji 2025.2, pakiet IronBarcode jest podzielony na osobne warstwy zarządzane, natywne i maszynowego uczenia. Struktura odzwierciedla konwencje nazewnictwa już używane przez IronOCR i IronPDF, co zapewnia lepsze wsparcie międzyplatformowe i łatwiejszą konserwację.
Struktura pakietu
Główna dystrybucja
Pakiety NuGet na najniższym poziomie mapują się na docelową platformę:
BarCode: domyślny pakiet dla Windows i główny NuGet do ogólnego użytku.BarCode.Linux,BarCode.MacOSi podobne: specyficzne dla systemu operacyjnego dystrybucje, które stosują tę samą konwencję nazewniczą co IronOCR i IronPDF.
Wewnętrzne warstwy pakietów
Każdy pakiet najwyższego poziomu jest złożony z kilku wewnętrznych podpaczki, z których każda dotyczy jednego konkretnego zadania.
1. BarCode.Slim
Zawiera zarządzane jądro: kod C#, warstwę interop, cały kod związany z PDF i każdą zależność stron trzecich w C#. To centralna logika i warstwa wiążąca, która napędza zarządzane funkcje IronBarcode.
2. IronSoftware.ReaderInternals.XXX
Zawiera natywny kod C++ do odczytu, zapisu i wykrywania kodów kreskowych. Istnieją różne wersje specyficzne dla platformy dla Windows, Linux, Mac i innych.
3. BarCode.Detection
Zawiera logikę detekcji maszynowego uczenia, obecnie napisaną w C# na bazie ONNX Runtime. Na tym etapie nie jest zależna od OS.
BarCode.Detection w końcu zostanie przeniesiony do ncnn, natywnej biblioteki inferencji ML w C++, która następnie wprowadzi warianty specyficzne dla systemu operacyjnego.
Wykluczenia platform mobilnych
BarCode.Detection nie jest dołączony do Barcode.iOS ani Barcode.Android. Pominięcie jest celowe: detekcja ML budzi obawy związane z wydajnością i ograniczeniami kompatybilności na platformach mobilnych.
Korzyści
Przebudowana architektura dostarcza:
- Modułowy podział między zarządzanym i natywnym kodem.
- Czyste, ukierunkowane na OS pakietowanie.
- Przygotowanie na przyszłość dla wysokowydajnej natywnej detekcji ML.
- Bliższe dopasowanie z innymi bibliotekami Iron Software.
- Łatwiejsza konserwacja i rozwiązywanie problemów.

