Hallo alle zusammen!
Ich habe ein kleines Warenwirtschaftsprogramm geschrieben und befinde mich fast in der Endphase.
Die Anwendung arbeitet mit einer MS SQLExpress 2005 DB.
In meiner Anwendung habe ich eine rollenbasierte Sicherheit implementiert.
Beim Start der Anwendung wird ein LoginDialog aufgerufen, mit dem sich der Anwender am System anmelden kann. Das Passwort liegt - natürlich verschlüsselt - in der Anwenungs-DB und wird zusammen mit dem Bediener geprüft. Ist die Prüfung erfolgreich, wird eine Datei eingelesen, in der sich Lizenzdaten - ebenfalls verschlüsselt - befinden und anschließend die MainForm geöffnet.
NUN DAS EIGENTLICHE PROBLEM:
Ich habe in der eben genannten Datei neben den Lizenzdaten ebenfalls vor, die maximalen Anmeldungen an Clients zu hinterlegen.
Beispiel: Kunde kauft Anwendung mit 5 User Lizenzen.
5 User sind bereits aktiv (sprich die MainForm ist bei allen aufgerufen)
Sobald sich ein 6. User anmelden möchte, soll gar nicht erst die LoginForm aufgerufen werden sondern eine Messagebox erscheinen mit z.B.: Es sind bereits 5 User angemeldet, Ihre Lizenz erlaubt keine weiteren Anmeldungen. Anschließend wird die Anwendung wieder beendet.
Das ist soweit auch nicht schwierig,
Ich stelle mir nur die Frage, wie ich die Prüfung, ob und wie viele User sich im Netzwerk an der Anwenung angemeldet haben, vornehme.
Meine erste Idee war, dass ich die Anmeldungen bei Aufruf der Anwendung in eine z.B. AktiveUserTabelle der Anwendungs-DB schreibe. Nur was passiert, wenn das Programm oder gar der Rechner abstürzt??? Das Programm wird beendet, OHNE dass der DS aus der DB wieder gelöscht wird.
Zudem muss ich ja auch sicherstellen, dass die Anwendungs-Datenbank Online ist, wenn ich den DS schreibe. Das heißt auch hierfür muss ich eine Prüfung vornehmen. Somt taucht die nächste Frage auf.
---Wie kann ich die Verfügbarkeit einer bestimmten DB im SQLExpress-Server
---2005 performanceerhaltend mittels Timer z.B. einmal pro Sekunde
---prüfen?
Das scheint mir somit nicht die beste Lösung. Gibt es hierfür eine Prüfungsroutine die ich nutzen kann oder ähnliches???
Hat jemand von Euch eine Idee, wie ich dass am besten lösen bzw. implementieren kann???
Ich danke allen die mir Antworten bereits im Vorraus.
Euro kleine Anfängerin Laura
Ich habe ein kleines Warenwirtschaftsprogramm geschrieben und befinde mich fast in der Endphase.
Die Anwendung arbeitet mit einer MS SQLExpress 2005 DB.
In meiner Anwendung habe ich eine rollenbasierte Sicherheit implementiert.
Beim Start der Anwendung wird ein LoginDialog aufgerufen, mit dem sich der Anwender am System anmelden kann. Das Passwort liegt - natürlich verschlüsselt - in der Anwenungs-DB und wird zusammen mit dem Bediener geprüft. Ist die Prüfung erfolgreich, wird eine Datei eingelesen, in der sich Lizenzdaten - ebenfalls verschlüsselt - befinden und anschließend die MainForm geöffnet.
NUN DAS EIGENTLICHE PROBLEM:
Ich habe in der eben genannten Datei neben den Lizenzdaten ebenfalls vor, die maximalen Anmeldungen an Clients zu hinterlegen.
Beispiel: Kunde kauft Anwendung mit 5 User Lizenzen.
5 User sind bereits aktiv (sprich die MainForm ist bei allen aufgerufen)
Sobald sich ein 6. User anmelden möchte, soll gar nicht erst die LoginForm aufgerufen werden sondern eine Messagebox erscheinen mit z.B.: Es sind bereits 5 User angemeldet, Ihre Lizenz erlaubt keine weiteren Anmeldungen. Anschließend wird die Anwendung wieder beendet.
Das ist soweit auch nicht schwierig,
Ich stelle mir nur die Frage, wie ich die Prüfung, ob und wie viele User sich im Netzwerk an der Anwenung angemeldet haben, vornehme.
Meine erste Idee war, dass ich die Anmeldungen bei Aufruf der Anwendung in eine z.B. AktiveUserTabelle der Anwendungs-DB schreibe. Nur was passiert, wenn das Programm oder gar der Rechner abstürzt??? Das Programm wird beendet, OHNE dass der DS aus der DB wieder gelöscht wird.
Zudem muss ich ja auch sicherstellen, dass die Anwendungs-Datenbank Online ist, wenn ich den DS schreibe. Das heißt auch hierfür muss ich eine Prüfung vornehmen. Somt taucht die nächste Frage auf.
---Wie kann ich die Verfügbarkeit einer bestimmten DB im SQLExpress-Server
---2005 performanceerhaltend mittels Timer z.B. einmal pro Sekunde
---prüfen?
Das scheint mir somit nicht die beste Lösung. Gibt es hierfür eine Prüfungsroutine die ich nutzen kann oder ähnliches???
Hat jemand von Euch eine Idee, wie ich dass am besten lösen bzw. implementieren kann???
Ich danke allen die mir Antworten bereits im Vorraus.
Euro kleine Anfängerin Laura
Comment