Allgemeine Frage zur Programmierung
Hallo habe allgemeine frage zur Programmierung. Zwar gehts mir um das Verständis und um evtl. fehler aufzudecken.
Also Beispiel würde ich gern ein Szenario beschreiben.
Ein Server mit einer Software die angeblich in VB6 aktuell programmiert wurde soll in einer Windows Server / Client Umgebung eingesetzt werden.
Der Programmierer der Firma hat dies nun so gelöst.
Auf dem Server (keine Installation nötig) mit einer exe Datei sein Programm in einem Ordner Verzeichnis angelegt.
Das Programm greift nach Aufruf auf eine Datenbank zu die im SQL2005 eingebunden worden ist.
Der Ordner am Server wird nun per Netzwerkfreigabe allen anderen User verfügbar gemacht.
Diese sollen jetzt mit einer Verknüpfung die zum Server läuft arbeiten.
Ist das eine übliche Programmierung? Also sicherlich kann das irgendwie funktionieren, aber sehe ich das jetzt richtig wenn ich z.b. 20 Mitarbeiter habe die auf das Programm zugreifen das der Flaschenhals die eine EXE ist? Oder ist die Programmierung falsch bzw. ist es nicht Üblich so. Sollte nicht der User ein Programm zu installieren haben das wiederum über ODBC auf die Datenbank zugreift.
Also wahrscheinlich lieg ich falsch aber bin in Sachen Programmieren und totaler Laie mir ist es halt nur jetzt mal aufgefallen!
Danke für eure Hilfe und Antworten
Grüße Marco
Also Beispiel würde ich gern ein Szenario beschreiben.
Ein Server mit einer Software die angeblich in VB6 aktuell programmiert wurde soll in einer Windows Server / Client Umgebung eingesetzt werden.
Der Programmierer der Firma hat dies nun so gelöst.
Auf dem Server (keine Installation nötig) mit einer exe Datei sein Programm in einem Ordner Verzeichnis angelegt.
Das Programm greift nach Aufruf auf eine Datenbank zu die im SQL2005 eingebunden worden ist.
Der Ordner am Server wird nun per Netzwerkfreigabe allen anderen User verfügbar gemacht.
Diese sollen jetzt mit einer Verknüpfung die zum Server läuft arbeiten.
Ist das eine übliche Programmierung? Also sicherlich kann das irgendwie funktionieren, aber sehe ich das jetzt richtig wenn ich z.b. 20 Mitarbeiter habe die auf das Programm zugreifen das der Flaschenhals die eine EXE ist? Oder ist die Programmierung falsch bzw. ist es nicht Üblich so. Sollte nicht der User ein Programm zu installieren haben das wiederum über ODBC auf die Datenbank zugreift.
Also wahrscheinlich lieg ich falsch aber bin in Sachen Programmieren und totaler Laie mir ist es halt nur jetzt mal aufgefallen!
Danke für eure Hilfe und Antworten
Grüße Marco
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 130874
Url: https://administrator.de/contentid/130874
Ausgedruckt am: 16.11.2024 um 15:11 Uhr
10 Kommentare
Neuester Kommentar
Hallo,
nein, die Exe ist nicht der Flaschenhals da die ja bei jedem der User läuft und nicht 20 mal am Server.
Und ob die Exe lokal installiert ist und über ODBC oder auf einem Server liegt und das Programm die Datenbankanbindung (mit ADO usw.) macht ist eigentlich auch egal.
So hat es sogar den Vorteil, dass es Wartungsfreundlicher ist. Wenns eine neue Version gibt installiert man die einmal auf dem Server und das wars.
nein, die Exe ist nicht der Flaschenhals da die ja bei jedem der User läuft und nicht 20 mal am Server.
Und ob die Exe lokal installiert ist und über ODBC oder auf einem Server liegt und das Programm die Datenbankanbindung (mit ADO usw.) macht ist eigentlich auch egal.
So hat es sogar den Vorteil, dass es Wartungsfreundlicher ist. Wenns eine neue Version gibt installiert man die einmal auf dem Server und das wars.
Hat mit programmierung so viel zu tun, wie ein Brunnen mit einer Torte...
übrigens: JA das ist so gängige praxis.. da eine Anwendung normalerweise immer lokal zwischengespeichert wird, sehe ich da auch keinen Flaschenhals. Das Programm kann von überall auf die Datenbank zugreiffen, solange es im netzwerk ausgeführt wird.
übrigens: JA das ist so gängige praxis.. da eine Anwendung normalerweise immer lokal zwischengespeichert wird, sehe ich da auch keinen Flaschenhals. Das Programm kann von überall auf die Datenbank zugreiffen, solange es im netzwerk ausgeführt wird.
Moin hondo0815,
nur ergänzend zu meinen Vorpostern auch von mir ein klares Jein.
Aber den dritten (theoretischen) Programmierer-Fehler kannst du sicherlich ausschliessen, wenn du nicht gerade auf Redmonder Praktikantinnen zurückgreifst.
Grüße
Biber
nur ergänzend zu meinen Vorpostern auch von mir ein klares Jein.
- Ein zusätzlicher Flaschenhals wird nicht erzeugt - die (physisch) auf dem Server gespeicherte *.Exe wird ja im Hauptspeicher der Clients instanziert und ausgeführt.
- Was unter Umständen nicht so glücklich ist: möglicherweise greift diese \\netzwerk\share\xy.exe aber noch zur Laufzeit auf *ini/*.config/*.sql/*Dll-Dateien zu, die es auch nur in diesem Verzeichnis \\netzwerk\share gibt. Das wäre ein künstlicher/zusätzlicher/unnötiger Flaschenhals.... denn diese Zugriffe wären natürlich bei einer Fat-Client-Installation 1000fach schneller als übers Netzwerk
- Was absolut ärgerlich wäre: wenn die \\netzwerk\share\xy.exe nun noch irgendwelche *.log/*.debug/*.trace-oder gar *.tmp-Dateien irgendwo auf \\netzwerk\share ablegt.
Aber den dritten (theoretischen) Programmierer-Fehler kannst du sicherlich ausschliessen, wenn du nicht gerade auf Redmonder Praktikantinnen zurückgreifst.
Grüße
Biber
Hallo Marco,
zu den Vorpostern noch zwei Anmerkungen.
Das die ausführbare Datei (EXE) auf dem Server liegt wirkt sich nur auf die Zeit beim Programmstart auf dem Client aus.
Je nach Größe der EXE "dauert" es natürlich etwas bis sie in den Arbeitsspeicher der Clientrechner geladen ist.
Das Programm (EXE) "unterhält" sich mit dem SQL Datenbankserver und fragt dessen Datenbank ab. Als Geschwindigkeitsbremse wären die
Netzwerkverbindung zum SQL Server bzw. die Performance desselben möglich.
zu den Vorpostern noch zwei Anmerkungen.
Das die ausführbare Datei (EXE) auf dem Server liegt wirkt sich nur auf die Zeit beim Programmstart auf dem Client aus.
Je nach Größe der EXE "dauert" es natürlich etwas bis sie in den Arbeitsspeicher der Clientrechner geladen ist.
Das Programm (EXE) "unterhält" sich mit dem SQL Datenbankserver und fragt dessen Datenbank ab. Als Geschwindigkeitsbremse wären die
Netzwerkverbindung zum SQL Server bzw. die Performance desselben möglich.
Großes Problem hab ich halt damit das ich den Usern jetzt
freigaben auf der Datenbank geben soll das die auch richtig arbeiten
können. Ich dachte ja eigentlich das diese Berechtigung das
Programm hergibt.
freigaben auf der Datenbank geben soll das die auch richtig arbeiten
können. Ich dachte ja eigentlich das diese Berechtigung das
Programm hergibt.
Das sollte auch so sein. Ansonsten mal beim Hersteller anfragen wie das zu regeln ist.
Es besteht natürlich auch die Möglichkeit die Datenbank direkt ohne EXE (Frontend) zu bearbeiten aber diesen Wunsch
der Benutzer sollte man sich vom Verantwortlichen erst einmal absegnen lassen.
Wer in eine Datenbank schreibt sollte sich innerhalb klarer Grenzen bewegen (das macht die EXE) oder genau wissen
was er tut da Datenbanken für gewöhnlich keine UNDO (STRG+Z) haben.
Zitat von @Hondo0815:
Vielen Dank schön langsam versteh ichs ;)
Großes Problem hab ich halt damit das ich den Usern jetzt
freigaben auf der Datenbank geben soll das die auch richtig arbeiten
können. Ich dachte ja eigentlich das diese Berechtigung das
Programm hergibt.
Den 2 beschriebenen Punkt kann ich mir Vorstellen das es so gehand
habt wird. Aber sicher bin ich mir nicht.
Grüße und Danke
Vielen Dank schön langsam versteh ichs ;)
Großes Problem hab ich halt damit das ich den Usern jetzt
freigaben auf der Datenbank geben soll das die auch richtig arbeiten
können. Ich dachte ja eigentlich das diese Berechtigung das
Programm hergibt.
Den 2 beschriebenen Punkt kann ich mir Vorstellen das es so gehand
habt wird. Aber sicher bin ich mir nicht.
Grüße und Danke
Das Programm muss sich mit einem Benutzer beim SQL-Server authentifizieren. Dafür benötigt es normalerweise einen Benutzer (bei SQL-Server-Authentifizierung).
Außer natürlich, das Programm ist so programmiert, dass es erst den Benutzer fragt (oder die Windowsauthentifizierung des Users verwendet) und sich dann erst mit diesen Daten zum SQL verbindet.