Komprimierungs-SDK-Integrationsleitfaden: Python/Java/C# Multi-Language

Fazit vorab: Das SmartSlim SDK exportiert über das Standard-C-ABI dynamische Bibliotheken und unterstützt Python/Java/C#/Rust-Integration. Der Kernaufrufablauf besteht aus vier Schritten – SDK initialisieren, Komprimierungskonfiguration erstellen, Komprimierung ausführen, Ressourcen freigeben. Die Komprimierung einer 100MB-PDF dauert ca. 0,8 Sekunden, die Lizenzverifizierung hat eine Latenz unter 5ms. Dieser Artikel bietet vollständige Integrationscodebeispiele für drei Sprachen, API-Parametertabellen und Performance-Tuning-Strategien, inklusive einer Batch-Komprimierungs-Demo. Im Folgenden wird die SDK-Architektur erläutert und die Integrationsmethoden der einzelnen Sprachen detailliert vorgestellt.

Wenn Sie den Komprimierungsdienst über HTTP-Schnittstellen statt über SDK-Integration aufrufen möchten, lesen Sie zunächst Komprimierungs-API-Leitfaden: RESTful-Schnittstellendokumentation.

1. SDK-Architektur und Integrationsprinzip

Die Basis des SmartSlim SDK ist die Rust-Komprimierungs-Engine, die über das Standard-C-ABI (Application Binary Interface) als dynamische Bibliothek (.so/.dylib/.dll) exportiert wird. Jede Sprache, die FFI (Foreign Function Interface) unterstützt, kann diese laden und aufrufen. Der Vorteil dieser Architektur: Die Kern-Engine wird einmal in Rust geschrieben und von mehreren Sprachen als dieselbe Binärbibliothek wiederverwendet, ohne dass jede Sprache die Komprimierungslogik neu implementieren muss.

KomponenteTechnologieFunktionOutput
Komprimierungs-Engine-KernRustFührt Komprimierungsalgorithmen ausStatische Bibliothek .a/.lib
ABI-ExportebeneRust #[no_mangle]Exportiert C-kompatible FunktionenDynamische Bibliothek .so/.dylib/.dll
SprachbindungsebeneSprachspezifisches FFIVerpackt native AufrufeSprachspezifische Pakete/Bibliotheken
LizenzmodulRust + VerschlüsselungVerifiziert LizenzschlüsselEingebettet in dynamische Bibliothek
KonfigurationsverwaltungRust structVerwaltet KomprimierungsparameterJSON/TOML-Konfiguration

Das SDK bietet vorkompilierte Bibliotheken für 6 Plattformen, die gängige Betriebssysteme und CPU-Architekturen abdecken – einsatzbereit ohne eigene Kompilierung des Rust-Codes.

PlattformDynamische BibliothekBetriebssystemCPU-ArchitekturAnwendungsszenario
linux-x64libsmartslim.soLinuxx86_64Server/Desktop
linux-arm64libsmartslim.soLinuxaarch64ARM-Server/Raspberry Pi
macos-universallibsmartslim.dylibmacOSx86_64+arm64Intel+Apple Silicon
windows-x64smartslim.dllWindowsx86_64Windows-Desktop/Server
linux-server-x64libsmartslim.soLinuxx86_64Server-optimierte Version
linux-server-arm64libsmartslim.soLinuxaarch64ARM-Server-optimierte Version

2. Kern-API-Parameter im Detail

Die Kern-APIs des SDK gliedern sich in vier Kategorien: Initialisierung, Konfiguration, Komprimierung und Freigabe. Die folgende Tabelle listet die wichtigsten API-Funktionen und deren Parameterbeschreibungen auf.

API-FunktionParameterRückgabewertBeschreibung
smartslim_initlicense_key: Stringhandle: HandleSDK initialisieren, Lizenz verifizieren
smartslim_create_configformat, level, qualityconfig: ConfigHandleKomprimierungskonfiguration erstellen
smartslim_compresshandle, input, output, configresult: ResultCodeEinzeldatei-Komprimierung ausführen
smartslim_compress_batchhandle, files[], config, workersresults[]: ResultCodeBatch-Komprimierung (parallel)
smartslim_get_infohandle, filepathFileInfo: structDatei-Komprimierungsinformationen abrufen
smartslim_free_configconfig: ConfigHandlevoidKonfigurationsressourcen freigeben
smartslim_freehandle: HandlevoidSDK-Instanz freigeben

Die Komprimierungskonfigurationsparameter unterstützen 4 Komprimierungsstufen (low/medium/high/ultra) x 15 Szenarien x 5 Performance-Stufen (ultrafast/fast/balanced/quality/optimal), insgesamt 300 Kombinationen, die nahezu alle Komprimierungsanforderungen abdecken.

ParameterOptionenStandardwertBeschreibung
formatpdf/image/video/office/ofdAuto-ErkennungDateityp
levellow/medium/high/ultramediumKomprimierungsstufe
quality1-10075Qualitätsfaktor (Bilder/PDF)
performanceultrafast/fast/balanced/quality/optimalbalancedPerformance-Stufe
workers1-164Parallele Threads
securityDISABLED/LOW/MEDIUM/HIGH/MAXIMUMMEDIUMSicherheitsstufe

3. Integrationscodebeispiele für drei Sprachen

Im Folgenden werden vollständige Integrationsbeispiele für Python, Java und C# gezeigt, jeweils am Beispiel der Komprimierung einer einzelnen PDF-Datei.

1. Python-Integration (ctypes)

Python lädt über das ctypes-Modul die dynamische Bibliothek und ruft die exportierten Funktionen auf. Der folgende Code implementiert den vollständigen Ablauf: SDK initialisieren, Konfiguration erstellen, PDF komprimieren, Ressourcen freigeben. Die Komprimierung einer 100MB-PDF dauert ca. 0,8 Sekunden.

SchrittPython-CodeBeschreibung
1. Bibliothek ladenlib = ctypes.CDLL('./libsmartslim.so')Dynamische Bibliothek laden
2. Initialisierenhandle = lib.smartslim_init(b"YOUR_LICENSE")Lizenzschlüssel übergeben
3. Konfiguration erstellenconfig = lib.smartslim_create_config(b"pdf", b"medium", 75)PDF/medium/q75
4. Komprimierung ausführenlib.smartslim_compress(handle, b"in.pdf", b"out.pdf", config)Datei komprimieren
5. Ressourcen freigebenlib.smartslim_free_config(config); lib.smartslim_free(handle)Speicher freigeben

2. Java-Integration (JNI)

Java ruft die dynamische Bibliothek über JNI (Java Native Interface) auf. Zuerst müssen native Methodendeklarationen geschrieben und die Bibliotheksdatei geladen werden. Der folgende Code zeigt den Kernaufrufablauf, geeignet für die Integration in Java-Backend-Projekte wie Spring Boot.

SchrittJava-CodeBeschreibung
1. Bibliothek ladenSystem.loadLibrary("smartslim")DLL/SO laden
2. Methode deklarierennative long smartslim_init(String key)JNI-Methodendeklaration
3. Initialisierenlong handle = smartslim_init("YOUR_LICENSE")Instanz-Handle abrufen
4. Konfiguration erstellenlong config = smartslim_create_config("pdf","medium",75)Konfigurationsparameter
5. Komprimierung ausführensmartslim_compress(handle, "in.pdf", "out.pdf", config)Datei komprimieren
6. Ressourcen freigebensmartslim_free_config(config); smartslim_free(handle)Speicher freigeben

3. C#-Integration (P-Invoke)

C# ruft die dynamische Bibliothek über P/Invoke (Platform Invocation Services) auf. Mit dem DllImport-Attribut werden externe Funktionen deklariert, geeignet für .NET/.NET Core-Projekte. Der folgende Code ist für Windows- und Linux-Dual-Platform angepasst.

SchrittC#-CodeBeschreibung
1. Funktion deklarieren[DllImport("smartslim")] static extern IntPtr smartslim_init(string key)P-Invoke-Deklaration
2. InitialisierenIntPtr handle = smartslim_init("YOUR_LICENSE")Handle abrufen
3. Konfiguration erstellenIntPtr config = smartslim_create_config("pdf","medium",75)Konfigurationsparameter
4. Komprimierung ausführensmartslim_compress(handle, "in.pdf", "out.pdf", config)Datei komprimieren
5. Ressourcen freigebensmartslim_free_config(config); smartslim_free(handle)Speicher freigeben

4. Performance-Tuning und Batch-Komprimierung

Das Performance-Tuning der SDK-Integration dreht sich um drei Dimensionen: Parallelität, Speicher und Batch-Verarbeitung. Die folgende Tabelle vergleicht die Auswirkungen verschiedener Tuning-Strategien.

Tuning-StrategieEinzeldatei-Dauer100 Dateien GesamtSpeichernutzungErforderliche Lizenz
Single-Thread seriell0,8s80s50MBTrial (Parallelität 1)
4-Thread parallel0,8s22s180MBStandard (Parallelität 4)
8-Thread parallel0,8s12s320MBProfessional (Parallelität 8)
16-Thread parallel0,8s7s600MBEnterprise (Parallelität 16+)
Streaming-Komprimierungsmodus1,2s95s15MBAlle Lizenzen

Für die Batch-Komprimierung wird die integrierte Schnittstelle smartslim_compress_batch empfohlen, der eine Dateiliste und Parallelitätszahl übergeben wird. Das SDK nutzt intern Rust-Async-Task-Scheduling, was effizienter ist als das selbst implementierte Multi-Threading der einzelnen Sprachen. Im Folgenden sind Performance-Daten einer Batch-Komprimierung von 100 PDF-Dateien als Demo aufgeführt.

DateianzahlDurchschnitt pro DateiGesamtgrößeKomprimierte GrößeDauer bei 8-fach parallelKomprimierungsrate
100 PDFs15MB1,5GB320MB12s78,7%
100 PNGs8MB800MB180MB8s77,5%
100 DOCX5MB500MB120MB6s76,0%
100 MP450MB5GB1,8GB45s64,0%

Wenn Sie mehr über den Algorithmusvergleich von Rust-Komprimierungsbibliotheken erfahren möchten, siehe Rust-Komprimierungsbibliotheken im Vergleich: Warum Rust für Komprimierungs-Engines?. Wenn Sie den Komprimierungsdienst per Docker containerisiert bereitstellen möchten, siehe Docker-Bereitstellung des Komprimierungsdienstes.

5. Häufig gestellte Fragen (FAQ)

F1: Welche Programmiersprachen unterstützt das Komprimierungs-SDK?

Das SmartSlim SDK exportiert über das Standard-C-ABI dynamische Bibliotheken und unterstützt vier Sprachintegrationen: Python (ctypes), Java (JNI), C# (P-Invoke), Rust (FFI). Das SDK bietet vorkompilierte Bibliotheken für 6 Plattformen (linux-x64/arm64, macos-universal, windows-x64 usw.), einsatzbereit ohne Kompilierung. Andere Sprachen mit C-ABI-Unterstützung (wie Go, Node.js, PHP) können über den jeweiligen FFI-Mechanismus integriert werden.

F2: Wie ist der API-Aufrufablauf des Komprimierungs-SDK?

Der Standardaufrufablauf besteht aus vier Schritten: 1. smartslim_init aufrufen, um das SDK zu initialisieren und den Lizenzschlüssel zu übergeben; 2. smartslim_create_config aufrufen, um die Komprimierungskonfiguration zu erstellen (Format, Stufe, Performance-Stufe angeben); 3. smartslim_compress aufrufen, um die Komprimierung auszuführen (Eingabedateipfad und Ausgabepfad übergeben); 4. smartslim_free aufrufen, um Ressourcen freizugeben. Die Komprimierung einer 100MB-PDF dauert ca. 0,8 Sekunden, die Lizenzverifizierung hat eine Latenz unter 5ms.

F3: Wie implementiert man Batch-Komprimierung mit dem SDK?

Batch-Komprimierung bietet zwei Möglichkeiten: Erstens die Einzelkomprimierungsschnittstelle in einer Schleife aufrufen, kombiniert mit Multi-Threading (Python mit concurrent.futures, Java mit ThreadPoolExecutor); zweitens die integrierte Batch-Schnittstelle smartslim_compress_batch verwenden, der eine Dateiliste und Parallelitätszahl übergeben wird – das SDK nutzt intern Rust-Async-Task-Scheduling. Die zweite Methode wird empfohlen: Standard-Lizenz unterstützt 4 Parallelität, Professional 8, Enterprise 16+.

F4: Was tun bei Integrationsfehlern des Komprimierungs-SDK?

Häufige Fehler und Lösungen: 1. UnsatisfiedLinkError (Java) oder DLL-Ladefehler – dynamische Bibliothekspfade und Systemarchitektur auf Übereinstimmung prüfen; 2. Lizenzverifizierung fehlgeschlagen – Lizenzschlüssel auf Richtigkeit und Gültigkeit prüfen; 3. Speicherüberlauf – Parallelitätszahl reduzieren oder Streaming-Komprimierungsmodus aktivieren; 4. Format nicht unterstützt – SDK-Version auf Unterstützung des Zielformats prüfen. DEBUG-Protokollierung aktivieren oder SmartSlim-Support kontaktieren.

Zusammenfassung

Das SmartSlim SDK implementiert über das Standard-C-ABI das Prinzip „einmal schreiben, mehrsprachig aufrufen" und unterstützt Python/Java/C#/Rust-Integration. Der Kernaufrufablauf umfasst vier Schritte: Initialisieren, Konfiguration erstellen, Komprimierung ausführen, Ressourcen freigeben. Die Komprimierung einer 100MB-PDF dauert 0,8 Sekunden, die Batch-Komprimierung von 100 Dateien mit 8-facher Parallelität nur 12 Sekunden. Performance-Tuning in drei Dimensionen: Parallelität (4–16 Threads), Speicher (Streaming-Modus reduziert Auslastung um 75%), Batch-Verarbeitung (integrierte Batch-Schnittstelle).

Drei Punkte zum Merken: Erstens die vorkompilierte Bibliothek zur Systemarchitektur passend auswählen (6 Plattformen vollständig abgedeckt); zweitens bei Batch-Komprimierung bevorzugt die integrierte Batch-Schnittstelle statt selbst implementiertem Multi-Threading verwenden; drittens für Produktionsumgebungen mindestens die Professional-Lizenz (8-fache Parallelität) empfehlen, um Performance und Kosten auszubalancieren. Wenn Sie eher HTTP-Schnittstellen als SDK-Integration bevorzugen, siehe den Komprimierungs-API-Leitfaden.

Dateien komprimieren? Probieren Sie SmartSlim

Basierend auf einer selbstentwickelten Rust-Komprimierungs-Engine, unterstützt 10 Kategorien und über 40 Formate, darunter PDF, Bilder, Video, Office und OFD, mit lokaler Komprimierung, die Ihre Daten vor Ort behält.