Vapor è un framework IPC (Inter-Process Communication) Full-Duplex ad altissime prestazioni e bassissima latenza per .NET. Sfruttando i Memory-Mapped Files (MMF) e i semafori nativi del sistema operativo, Vapor permette a due o più processi separati di scambiarsi pacchetti di byte direttamente nella RAM condivisa, garantendo un sovraccarico della CPU dello 0% a riposo e un livello di allocazioni prossimo allo zero.
Nato per supportare ecosistemi complessi e sensibili alla latenza (come tool di gestione stile LocalAdmin per server dedicati, bot di integrazione o microservizi locali), Vapor supera i limiti prestazionali e i ritardi tipici dei tradizionali Socket TCP o WebSockets locali.
Vapor divide la comunicazione in due canali monodirezionali paralleli strutturati su un RingBuffer (Buffer Circolare) binario non gestito. Questo previene i rallentamenti dovuti al Garbage Collector (GC) e azzera i conflitti di lettura/scrittura.
Ogni canale alloca un segmento fisso per tracciare i puntatori in modo atomico:
- Offset
0x00(4 byte):WritePosition— Indica dove il mittente scriverà il prossimo blocco. - Offset
0x04(4 byte):ReadPosition— Indica fino a dove il destinatario ha completato la lettura. - Offset
0x08+ :DataBuffer— Lo spazio circolare effettivo in cui scorrono i messaggi (Lunghezza + Payload).
La sincronizzazione tra i processi è gestita tramite EventWaitHandle cross-process: il thread di ascolto viene congelato a livello di kernel del sistema operativo e si risveglia istantaneamente solo quando viene notificato un nuovo pacchetto.
Il core della libreria è sviluppato in .NET Standard 2.0 per garantire la massima compatibilità cross-runtime (supporta sia .NET 8.0+ che ambienti server-side restrittivi o legacy).
Assicurati che il tuo progetto referenzi il pacchetto di supporto per la memoria nel file .csproj:
<ItemGroup>
<PackageReference Include="System.Memory" Version="4.5.5" />
</ItemGroup>