Zitat von
bundy:
User drückt knopf und Server überprüft ob er auch die Berechtigungen besitzt...
Jein.
Der Client setzt die Anfrage zusammen, die der Server auswerten soll. Die schickt er einfach ab und der Server antwortet. Der Server ist also derjenige, der die eigentliche Aktion ausführt. Es wird nicht überprüft, ob der Benutzer den Knopf drücken darf, sondern ob er diese Aktion durchführen kann. Das Durchführen der Aktion findet ausschließlich auf dem Server statt, niemals im Client.
Was du aus reinem Komfort dennoch tun kannst, ist beim Einloggen die Benutzerrechte abzufragen und entsprechend alle Grafikcontrols unsichtbar zu machen, für die er eh keine Rechte hat. Mehr Energie sollte man nicht in den Client stecken (z.B. die Controls tatsächlich freigeben). Sollte ein Anwender den Client unter seine Kontrolle bringen und die versteckten Elemente anzeigen, bringt ihm das auch nichts, der Server verhindert ja immer noch das Ausführen der Aktion. Das Verstecken der Buttons ist also nichts anderes als Usability, damit de Anwender nichts sieht, was ihn eh nicht interessiert.
Dieses Prinzip funktioniert hier wunderbar, da ja wohl alle Einstellungen sich irgendwie in der zentralen Datenbank auf dem Server niederschlagen, also muss der Client nichts können, er muss nichtmal wissen, was er da überhaupt macht, er schickt einfach nur Befehle an den Server.
Der Nachteil an der Sache ist halt, daß der Server entsprechend leistungsfähig sein muss, um auf bei mehreren konkurrierenden Zugriffen nicht zusammenzubrechen. Je nachdem, was gemacht werden muss und wieviele Leute gleichzeitig zugreifen werden, kann das gegenüber einem reinen Datenbankserver schon ein deutliches Problem werden. Allerdings lässt sich mit entsprechender Netzwerkstruktur auch das in den Griff kriegen, zum Beispiel durch einen Cluster oder einem getrennten Application-Server, der auf einen von außen nicht zugänglichen Datenbankserver zugreift. Derartige Systeme sollten durch einfaches reinschieben eines zusätzlichen Servers relativ gut skalieren, ein ebenso skalierendes
DBMS vorausgesetzt (sonst wird die Datenbank zum Flaschenhals, dann bringen auch riesige Farmen von Application Servern nix, wenn die ihre Daten zwar blitzschnell verarbeiten können, aber nicht schnell genug in die Datenbank gespeichert kriegen).
Edit: Solltest du jetzt bereits einen Fat Client fast fertig haben, tja, Pech gehabt
Über derartige Probleme sollte man sich immer vorher Gedanken machen. Aber den Code solltest du mit wenigen Veränderungen für den Server wederverwenden können, es sei denn du kannst auf dem Server kein Delphi einsetzen (z.B. weil dieser unter Linux läuft).