Hallo zusammen
Ich bin schon länger auf der Suche nach einem Client/Server Framework. Ich habe dann mal angefangen, ein eigenes Framework zu bauen welches aber nach einem ähnlichen Schema wie Netty herausgekommen ist (was mir, nach einiger Einarbeitungszeit und nach einigen Änderungen des Framework-Aufbaus, aufgefallen ist). Nun versuche ich mir einen Überblick zu verschaffen, was es alles so gibt, und ob es sich lohnt mein Framework weiter zu entwickeln. Dabei bin ich auf eure Hilfe angewiesen, auch da ich eher neu im Client/Server Bereich bin und nicht alle wichtigen Vor-/Nachteile kenne. Bitte listet die Frameworks auf die Ihr kennt, mit einer Kurzen Beschreibung mit Vorteilen, Nachteilen, Erfahrung, Link zu guten Beispielen etc. Ich fange mal an mit den Frameworks die ich kenne oder bis jetzt gefunden habe. Natürlich ist dabei nicht alles komplett, evtl. gibt es für euch noch weitere Vor-/Nachteile dazu oder Korrekturen zu meinen Angaben.
Mein Framework:
Event-Basiert: Dem Server/Client werden Handler-Objekte übergeben, welche die in den Handler-Interfaces definierten Methoden beinhalten (conntected, disconnected, receivedData, lostConnection, ...)
Erweiterbar: Eingehende und Ausgehende Daten laufen über einen Incoming-/OutgoingProcessor. Also ein Objekt, welches read/write auf/vom Stream implementiert. Eine Factory-Klasse eines solchen Processors kann dem Client/Server übergeben werden, mit der Implementation eines eigenen Protokolles.
Vorteil: Einfache Implementierung neuer Protokolle
Nachteil: Funktioniert, aber noch am Anfang der Entwicklung (ich hätte noch viele Ideen...)
Netty: (Netty - the Java NIO Client Server Socket Framework - JBoss Community)
Asynchron, Event-Basiert, NIO, Blocking/Non-Blocking, single or multiple Thread (SEDA), SSL/TLS, dependencies: JDK >1.5
Vorfahre von Apache MINA
Vorteil: Wenig (keine, ausser JDK 1.5) Abhängigkeiten, gute Dokumentation mit Beispielen
Nachteil: ?
XNIO: (XNIO - JBoss Community)
Low-Level I/O layer, blocking/non-blocking, Basis für High-Level Implementationen
Vorteil: ?
Nachteil: ?
Apache MINA: (Apache MINA - Welcome to Apache MINA Project!)
Event-Basiert, Asynchron, TCP/IP, UDP/IP, RS232 via RXTX, eigene Protokoll-Implementationen können verwendet werden, low-level (ByteBufffer) und high-level (eigene codecs), single Thread/multiple Thread (SEDA), SSL/TLS/startTLS
Weiterentwicklung von Netty (so wie ich das hier verstehe)
Vorteil: ?
Nachteil: ?
Net4j: (Net4j - Eclipsepedia)
Asynchron, non-blocking, TCP/HTTP/in-memory, eigene Protokolle können verwendet werden, basiert auf OSGi
Vorteil: ?
Nachteil: Praktisch keine Dokumentation
QuickServer: (.:: QuickServer ::. Java library for creating robust, multi-threaded, multi-client TCP servers)
Multi-Client, TCP/IP, SSL/TLS, blocking/non-blocking
Vorteil: ?
Nachteil: nicht mehr weiterentwickelt? (letzte Aktualisierung März 2006)
das wars dann mal bis jetzt von meiner Seite, bin gespannt was noch kommt.
mfg
Ich bin schon länger auf der Suche nach einem Client/Server Framework. Ich habe dann mal angefangen, ein eigenes Framework zu bauen welches aber nach einem ähnlichen Schema wie Netty herausgekommen ist (was mir, nach einiger Einarbeitungszeit und nach einigen Änderungen des Framework-Aufbaus, aufgefallen ist). Nun versuche ich mir einen Überblick zu verschaffen, was es alles so gibt, und ob es sich lohnt mein Framework weiter zu entwickeln. Dabei bin ich auf eure Hilfe angewiesen, auch da ich eher neu im Client/Server Bereich bin und nicht alle wichtigen Vor-/Nachteile kenne. Bitte listet die Frameworks auf die Ihr kennt, mit einer Kurzen Beschreibung mit Vorteilen, Nachteilen, Erfahrung, Link zu guten Beispielen etc. Ich fange mal an mit den Frameworks die ich kenne oder bis jetzt gefunden habe. Natürlich ist dabei nicht alles komplett, evtl. gibt es für euch noch weitere Vor-/Nachteile dazu oder Korrekturen zu meinen Angaben.
Mein Framework:
Event-Basiert: Dem Server/Client werden Handler-Objekte übergeben, welche die in den Handler-Interfaces definierten Methoden beinhalten (conntected, disconnected, receivedData, lostConnection, ...)
Erweiterbar: Eingehende und Ausgehende Daten laufen über einen Incoming-/OutgoingProcessor. Also ein Objekt, welches read/write auf/vom Stream implementiert. Eine Factory-Klasse eines solchen Processors kann dem Client/Server übergeben werden, mit der Implementation eines eigenen Protokolles.
Vorteil: Einfache Implementierung neuer Protokolle
Nachteil: Funktioniert, aber noch am Anfang der Entwicklung (ich hätte noch viele Ideen...)
Netty: (Netty - the Java NIO Client Server Socket Framework - JBoss Community)
Asynchron, Event-Basiert, NIO, Blocking/Non-Blocking, single or multiple Thread (SEDA), SSL/TLS, dependencies: JDK >1.5
Vorfahre von Apache MINA
Vorteil: Wenig (keine, ausser JDK 1.5) Abhängigkeiten, gute Dokumentation mit Beispielen
Nachteil: ?
XNIO: (XNIO - JBoss Community)
Low-Level I/O layer, blocking/non-blocking, Basis für High-Level Implementationen
Vorteil: ?
Nachteil: ?
Apache MINA: (Apache MINA - Welcome to Apache MINA Project!)
Event-Basiert, Asynchron, TCP/IP, UDP/IP, RS232 via RXTX, eigene Protokoll-Implementationen können verwendet werden, low-level (ByteBufffer) und high-level (eigene codecs), single Thread/multiple Thread (SEDA), SSL/TLS/startTLS
Weiterentwicklung von Netty (so wie ich das hier verstehe)
Vorteil: ?
Nachteil: ?
Net4j: (Net4j - Eclipsepedia)
Asynchron, non-blocking, TCP/HTTP/in-memory, eigene Protokolle können verwendet werden, basiert auf OSGi
Vorteil: ?
Nachteil: Praktisch keine Dokumentation
QuickServer: (.:: QuickServer ::. Java library for creating robust, multi-threaded, multi-client TCP servers)
Multi-Client, TCP/IP, SSL/TLS, blocking/non-blocking
Vorteil: ?
Nachteil: nicht mehr weiterentwickelt? (letzte Aktualisierung März 2006)
das wars dann mal bis jetzt von meiner Seite, bin gespannt was noch kommt.
mfg
Zuletzt bearbeitet: