Kommunikation zwischen zwei Java Applikationen ?

teppi

Erfahrenes Mitglied
Hallo !

Ein Freund und ich versuchen ein kleines Multiplayerspiel im Stile der bekannten Browsergames auf Java Basis, eben ohne Browser auf die Beine zu stellen, um uns ein wenig in Javaprogrammierung zu üben. Er programmiert zurzeit die Spiellogik an sich und ich habe die Aufgabe, die Datenbankschnittstelle zu erstellen. Er stellt es sich so vor, dass ich eine eigene Applikation, also eine Art SQL-Server programmiere. Nun ist meine Frage, ob es sinnvoll ist, dafür ein eigenes Programm zu schreiben und wenn ja, wie ich am besten die Kommunikation (über Sockets?) zwischen den beiden Applikationen regle oder ob man diesen "Server" einfach in einem eigenem Thread laufen sollte ?! ...

Die Lösung sollte die größtmögliche Performance bieten, da eventuell relativ viele Clienten Transaktionen vornehmen können sollen.

Vielen Dank,
Stefan Lehmann :)
 
Wenn ihr größt mögliche Performanz wollt, so solltet ihr die DB-Schnittstelle direkt in das Programm mit einbauen. Am besten ihr macht euch eine Klasse die entsprechenden DB-Aufrufe enthält. Sonst wird das ganze erst in TCP-Verpackt, dann in IP gehäckselt und läuft dann über das OS um das ganze dann wieder Rückwärts zu machen. Allerdings würde ich an eurer Stelle die Location der DB Variabel halten (ist aber auch kein Problem - das ist nur der Connection-String).

Ob eure DB-Anwendung einen 2ten Thread braucht - weiss ich nicht. Vermutlich aber wird sie für jeden Anwender der von aussen verbindet eine eingenen Thread brauchen.
Wenn ihr mehr über die Art eures Spieles schreiben würdet, könnte ich euch vielleicht mehr helfen.
 
Ja, das habe ich mir auch so gedacht .. Eigene Threads für die Spieler gibt es schon.

Das Spiel soll eine Art Aufbau-Strategiespiel werden. Mittlerweile existiert ein Server und ein TestClientprogramm ... Testclients können sich über einen bestimmten Port mit dem Server verbinden und mit ihm kommunizieren. Mein Freund implementiert gerade eine Warteschlange, die Ereignisse, wie den Bau einer Einheit etc. zu entsprechender Serverzeit ausführt.

Ich muss mir nun überlegen, wie man das am besten datenbanktechnisch abbildet. Ich wollte bisher eigentlich MySQL als DB nehmen, bin mir aber nicht sicher, ob diese Datenbank für diesen Anwendungsfall ausreicht und ob man nicht lieber eine objektorientierte DB verwenden sollte ...
 
Hallo!

Ich würde das ganze mal mit RMI versuchen, dann müsst ihr euch zumindest nicht mehr mit dem ganzen LowLevelzeugs herumärgern ...

Gruß Tom
 
MySQL sollte auf jeden Fall ausreichen. Ihr könnt ja die Objektorientiertheit in den Zugriffsklassen kapseln. Da nur eine Applikation auf die DB zugreift, sollte das also kein Design-Problem darstellen.

(OT - guten Morgen Thomas)
 
Zurück