Einführung
Das Simple Network Framework für Java (SNF4J) ist ein asynchrones, ereignisgesteuertes Netzwerkanwendungsframework für die schnelle und einfache Entwicklung von Netzwerkanwendungen.
SNF4J dient als einfaches, leichtes und unabhängiges Netzwerkanwendungs-Framework und hilft bei der Entwicklung leistungsstarker und skalierbarer Netzwerkanwendungen. Es stellt eine asynchrone API über Java NIO bereit, um verschiedene Transporte wie TCP/IP, UDP/IP und SCTP/IP abzuwickeln.
Das Framework ist so konzipiert, dass es einfach zu bedienen und einigermaßen leicht zu verstehen ist. Anwendungsentwickler, die gerne ein offenes Ohr haben, werden vom Klang des Quellcodes nicht überwältigt. Es ist auf die Bereitstellung zentraler Netzwerkfunktionen wie die Übertragung von Daten zwischen zwei oder mehr kommunizierenden Netzwerkanwendungen auf einfache, aber effektive Weise ausgerichtet. Um den Datenschutz und die Integrität der übertragenen Daten zu gewährleisten, werden die Protokolle SSL/TLS/DTLS unterstützt.
Design
- Einheitliche API für Transportschichttypen: TCP, UDP und SCTP
- Ereignisgesteuerte API zur Entwicklung asynchroner Netzwerkanwendungen
- Anpassbare Protokoll-Engines für Transportschichttypen: TCP und UDP
- Dienstprogramme für die Entwicklung von UDP-Serveranwendungen
- Einfache API für anpassbare Encoder-Decoder-Pipelines
- Sorgen Sie für eine einfache Programmierung von Multithread-Anwendungen im Single-Thread-Verfahren
- Erstellen von Pipelines von Sitzungen, die denselben Socket-Kanal teilen
Leistung und Skalierbarkeit
- Unterstützung für minimiertes oder gar unnötiges Kopieren des Speichers
- Unterstützung für geringe Speicherauslastung in Multisitzungsanwendungen
- Geringere Latenz
- zlib- und gzip-Komprimierung
- Anpassbares Auswahlschleifen-Pooling
- Anpassbare Byte-Puffer-Zuweiser
Thread-Modell
- Alle Ereignisse des Handlers (z. B. Lesen, Ereignis, Timer, Ausnahme, Vorfall) werden von dem Thread ausgelöst, der E/A für den Kanal ausführt (E/A-Thread).
- Alle Sitzungsmethoden sind Thread-sicher und können von jedem Thread aufgerufen werden, einschließlich des I/O-Threads und Nicht-I/O-Threads
- Alle Handler-Ereignisse, die als Nebeneffekt des Aufrufs einer Sitzungsmethode ausgelöst werden, werden vom E/A-Thread ausgelöst
- Der Codec-Code wird immer im I/O-Thread verarbeitet
- Der Code der Engine wird immer im I/O-Thread verarbeitet
Unterstützte Protokolle
- HTTP-Web-Proxy-Verbindungsprotokoll
- SOCKS-Protokolle
- WebSocket-Protokoll
- Toolkit für das TLS 1.3-Protokoll (Parser/Formatierer, Handshake-Engine, Record-Layer-Utils und komplette TLS-Engine)
Sicherheit
- Vollständige Unterstützung für SSL/TLS/DTLS-Protokolle
- Sichere Web-Proxy-Verbindung
Integration
- Keine zusätzlichen Abhängigkeiten, JDK 8 oder JDK 9 (für DTLS) reicht aus
- Vollständig anpassbare Protokollierung (SLF4J, Log4j 2 bereits hier)
- Anpassbare Garnfabriken
- Anpassbare Sitzungstimer
- Anpassbare Paketneuübertragungsmodelle während DTLS-Handshakes
Kompilieren
Sie benötigen Apache Maven 3.8 oder höher, Java 8 oder höher
Links