# Client-Server-Datenbank



## Nevyl (1. Okt 2012)

Hallo 

Ich habe schon gegoogelt und hier im Forum etliche Beiträge gelesen, bin jetzt aber noch verwirrter als vorher ;(

Ich entwickel zur Zeit einen Clienten, der sich seine Daten zum anzeigen aus einer Postgres-Datenbank holt.
Die Verbindung läuft zur Zeit über JDBC, Username/Passwort sind im Klartext abgespeichert um auf die Datenbank zugreifen zu können.

Programmiersprache: Java
GUI: JavaFX

Was ist geplant?:

- Mehrere User sollen den Clienten nutzen und somit auch auf die DB zugreifen können
- Die User melden sich über ein Login-Fenster an

Ich habe jetzt schon viel über REST, Sockets etc. gelesen und das ganze verwirrt mich immer mehr. :rtfm:

Könnt ihr mit bitte sagen, welche Technologien ich benötige? Dass die Daten im Klartext im Quellcode stehen ist natürlich nicht tragbar, deswegen suche ich nach einer sauberen und schnellen Lösung.

Der Aufbau sollte ungefähr so sein: 

Client -> Server -> Datenbank

Hilfreich wäre ein Tutorial oder Ähnliches. Es würde mir aber auch reichen, wenn ihr mir einfach mitteilt was ich genau brauche: REST, Socket, Glassfish, SSL ?  Ich lese mich da dann rein.

Entschuldigt, aber ich bin am verzweifeln und verwirrt :shock:


----------



## vanny (2. Okt 2012)

Das lässt sich mit den Informationen nicht pauschalisieren.
Wo läuft denn die Datenbank(der Server)? Im LAN, im Netz?

Clienten<->Server<->DB  ist schonmal ein vielversprechendes Konzept.


----------



## Nevyl (2. Okt 2012)

Hi Vanny,

die Datenbank läuft im Netz. Die Software soll an mehrere Kunden ausgegeben werden und diese sollen alle persönliche Zugangsdaten haben und sich damit an die Datenbank anmelden.

Jeder User hat eine eigene Datenbank und eine Datenbank auf die Alle User zugreifen.

Der Client zeigt verschiedene Daten aus der DB an und kann auch neue eintragen.


----------



## vanny (2. Okt 2012)

naja dann server und db auf einem rechner laufen lassen und Zugriffe nur über localhost/also vom server zulassen.

Zu deiner Frage, ein normaler Socketserver sollte tun, was du möchtest.
Meist verwendetes Beispiel/Tutorial zur Funktionsweise eines solchen Servers ist ein Chatserver.

Zum beispiel hier.

Gruß Vanny


----------



## Nevyl (2. Okt 2012)

Die Clienten melden sich über den Socketserver an die DB an - hab ich das so richtig verstanden? 
Ist dies dann auch sicher bzgl. Network-Sniffing etc. ? 

Wie sieht es denn mit der Performance aus? Es werden bis zu 1000 User gleichzeitig über den Clienten auf den Server zugreifen.

Wenn der Client von den Usern auf ihren Rechnern gestartet wird, erscheint ein LogIn-Fenster, dieses übermittelt die Daten an den Socket (Server) und dieser gleicht die Daten mit der DB ab (DB-Login befindet sich im Socket) - passt das so ? 

Danke schonmal für deine Antworten


----------



## vanny (2. Okt 2012)

Nevyl hat gesagt.:


> Die Clienten melden sich über den Socketserver an die DB an - hab ich das so richtig verstanden? ...



Nope, 
die Clienten melden sich garnicht an der DB an, sie senden einen Outputstream, der als Inputstream im Server ankommt. Der Server agiert dann lokal mit der Datenbank und nur das Ergebnis wird dann vom Server zum Clienten gestreamt.

Probier es einfach aus, dann kommste schon dahinter 

Gruß Vanny


----------



## Nevyl (2. Okt 2012)

OK danke dir!


----------



## Nevyl (3. Okt 2012)

So, ich löse das ganze jetzt mit einem Webservice. 

Ein schönes und leicht verständliches Anfängertutorial findet ihr hier: Java: Webservice anlegen und konsumieren  BigBastis Blog


----------



## tuxedo (9. Okt 2012)

Wieso das Rad neu erfinden (bezigen auf Sockets) ???:L Dafür gibt's doch fertige, einfach zu benutzende RPC Techniken wie RMI, SIMON, ... 

Aber okay, Webservice ist auch ne feine Sache...

- Alex


----------



## Nevyl (23. Okt 2012)

Ich hab das ganze heute mal mit SIMON versucht und muss sagen: Ich bin begeistert :applaus:

SSL funzt ohne Probleme (Tutorial war leider nicht ganz aktuell ), aber es zum laufen zu kriegen war kein Problem.

Klasse was du da "gezaubert" hast.

Wir werden wohl jetzt auch komplett auf SIMON umsteigen.


----------



## tuxedo (23. Okt 2012)

Wenn du Anmerkungen oder Verbesserungen zum Tutorial hast: Nur her damit. Dann aktualisiere ich das entsprechend.

Gruß
Alex


----------



## Nevyl (23. Okt 2012)

tuxedo hat gesagt.:


> Wenn du Anmerkungen oder Verbesserungen zum Tutorial hast: Nur her damit. Dann aktualisiere ich das entsprechend.
> 
> Gruß
> Alex



Ok kommt per PN 

Gruß


----------



## c_sidi90 (23. Okt 2012)

Wir haben so etwas in unserem Unternehmen auch über RMI gelöst, super schnell zu implementieren und bisher mit 200 Clients kein Problem.


----------



## tuxedo (24. Okt 2012)

RMI ist an und für sich auch kein Problem. Nicht umsonst wird es im JEE Bereich, z.B. im Fall von JBoss mit JBoss Remoting gerne eingesetzt. Allerdings wird hier, so mein aktuelles wissen, auf die RMI Callback-fähigkeit konsequent verzichtet, weswegen sich die RMI-Callback-Problematik erst gar nicht zeigt. 

Wer mit Callbacks arbeiten möchte und dazwischen Router und Co. hat, sollte sich mal SIMON anschauen.

Ein Hinweis bzgl. der Skalierbarkeit:

RMI arbeitet mit Java IO, weswegen es Konzept-Bedingt unter Umständen mit sehr vielen Clients schlechter skaliert als Lösungen mit Java NIO (SIMON gehört hierzu).


----------

