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.
| Komponente | Technologie | Funktion | Output |
|---|---|---|---|
| Komprimierungs-Engine-Kern | Rust | Führt Komprimierungsalgorithmen aus | Statische Bibliothek .a/.lib |
| ABI-Exportebene | Rust #[no_mangle] | Exportiert C-kompatible Funktionen | Dynamische Bibliothek .so/.dylib/.dll |
| Sprachbindungsebene | Sprachspezifisches FFI | Verpackt native Aufrufe | Sprachspezifische Pakete/Bibliotheken |
| Lizenzmodul | Rust + Verschlüsselung | Verifiziert Lizenzschlüssel | Eingebettet in dynamische Bibliothek |
| Konfigurationsverwaltung | Rust struct | Verwaltet Komprimierungsparameter | JSON/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.
| Plattform | Dynamische Bibliothek | Betriebssystem | CPU-Architektur | Anwendungsszenario |
|---|---|---|---|---|
| linux-x64 | libsmartslim.so | Linux | x86_64 | Server/Desktop |
| linux-arm64 | libsmartslim.so | Linux | aarch64 | ARM-Server/Raspberry Pi |
| macos-universal | libsmartslim.dylib | macOS | x86_64+arm64 | Intel+Apple Silicon |
| windows-x64 | smartslim.dll | Windows | x86_64 | Windows-Desktop/Server |
| linux-server-x64 | libsmartslim.so | Linux | x86_64 | Server-optimierte Version |
| linux-server-arm64 | libsmartslim.so | Linux | aarch64 | ARM-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-Funktion | Parameter | Rückgabewert | Beschreibung |
|---|---|---|---|
| smartslim_init | license_key: String | handle: Handle | SDK initialisieren, Lizenz verifizieren |
| smartslim_create_config | format, level, quality | config: ConfigHandle | Komprimierungskonfiguration erstellen |
| smartslim_compress | handle, input, output, config | result: ResultCode | Einzeldatei-Komprimierung ausführen |
| smartslim_compress_batch | handle, files[], config, workers | results[]: ResultCode | Batch-Komprimierung (parallel) |
| smartslim_get_info | handle, filepath | FileInfo: struct | Datei-Komprimierungsinformationen abrufen |
| smartslim_free_config | config: ConfigHandle | void | Konfigurationsressourcen freigeben |
| smartslim_free | handle: Handle | void | SDK-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.
| Parameter | Optionen | Standardwert | Beschreibung |
|---|---|---|---|
| format | pdf/image/video/office/ofd | Auto-Erkennung | Dateityp |
| level | low/medium/high/ultra | medium | Komprimierungsstufe |
| quality | 1-100 | 75 | Qualitätsfaktor (Bilder/PDF) |
| performance | ultrafast/fast/balanced/quality/optimal | balanced | Performance-Stufe |
| workers | 1-16 | 4 | Parallele Threads |
| security | DISABLED/LOW/MEDIUM/HIGH/MAXIMUM | MEDIUM | Sicherheitsstufe |
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.
| Schritt | Python-Code | Beschreibung |
|---|---|---|
| 1. Bibliothek laden | lib = ctypes.CDLL('./libsmartslim.so') | Dynamische Bibliothek laden |
| 2. Initialisieren | handle = lib.smartslim_init(b"YOUR_LICENSE") | Lizenzschlüssel übergeben |
| 3. Konfiguration erstellen | config = lib.smartslim_create_config(b"pdf", b"medium", 75) | PDF/medium/q75 |
| 4. Komprimierung ausführen | lib.smartslim_compress(handle, b"in.pdf", b"out.pdf", config) | Datei komprimieren |
| 5. Ressourcen freigeben | lib.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.
| Schritt | Java-Code | Beschreibung |
|---|---|---|
| 1. Bibliothek laden | System.loadLibrary("smartslim") | DLL/SO laden |
| 2. Methode deklarieren | native long smartslim_init(String key) | JNI-Methodendeklaration |
| 3. Initialisieren | long handle = smartslim_init("YOUR_LICENSE") | Instanz-Handle abrufen |
| 4. Konfiguration erstellen | long config = smartslim_create_config("pdf","medium",75) | Konfigurationsparameter |
| 5. Komprimierung ausführen | smartslim_compress(handle, "in.pdf", "out.pdf", config) | Datei komprimieren |
| 6. Ressourcen freigeben | smartslim_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.
| Schritt | C#-Code | Beschreibung |
|---|---|---|
| 1. Funktion deklarieren | [DllImport("smartslim")] static extern IntPtr smartslim_init(string key) | P-Invoke-Deklaration |
| 2. Initialisieren | IntPtr handle = smartslim_init("YOUR_LICENSE") | Handle abrufen |
| 3. Konfiguration erstellen | IntPtr config = smartslim_create_config("pdf","medium",75) | Konfigurationsparameter |
| 4. Komprimierung ausführen | smartslim_compress(handle, "in.pdf", "out.pdf", config) | Datei komprimieren |
| 5. Ressourcen freigeben | smartslim_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-Strategie | Einzeldatei-Dauer | 100 Dateien Gesamt | Speichernutzung | Erforderliche Lizenz |
|---|---|---|---|---|
| Single-Thread seriell | 0,8s | 80s | 50MB | Trial (Parallelität 1) |
| 4-Thread parallel | 0,8s | 22s | 180MB | Standard (Parallelität 4) |
| 8-Thread parallel | 0,8s | 12s | 320MB | Professional (Parallelität 8) |
| 16-Thread parallel | 0,8s | 7s | 600MB | Enterprise (Parallelität 16+) |
| Streaming-Komprimierungsmodus | 1,2s | 95s | 15MB | Alle 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.
| Dateianzahl | Durchschnitt pro Datei | Gesamtgröße | Komprimierte Größe | Dauer bei 8-fach parallel | Komprimierungsrate |
|---|---|---|---|---|---|
| 100 PDFs | 15MB | 1,5GB | 320MB | 12s | 78,7% |
| 100 PNGs | 8MB | 800MB | 180MB | 8s | 77,5% |
| 100 DOCX | 5MB | 500MB | 120MB | 6s | 76,0% |
| 100 MP4 | 50MB | 5GB | 1,8GB | 45s | 64,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.
Verwandte Artikel
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.