hondo0815
Goto Top

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

Content-ID: 130874

Url: https://administrator.de/contentid/130874

Ausgedruckt am: 16.11.2024 um 15:11 Uhr

Tommy70
Tommy70 03.12.2009 um 13:19:42 Uhr
Goto Top
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.
Snowman25
Snowman25 03.12.2009 um 13:19:51 Uhr
Goto Top
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.
Hondo0815
Hondo0815 03.12.2009 um 13:27:42 Uhr
Goto Top
Sehe ich das dann richtig das wenn der User eine Verknüpfung hat das er trotzdem mit einer eigenen Exe direkt auf die Datenbank zugreift?
Das würde bedeuten das der User auch Rechte auf der Datenbank benötigt und nicht nur auf die Freigabe (Exe).
Danke schon mal für die Antworten.
Snowman25
Snowman25 03.12.2009 um 13:32:58 Uhr
Goto Top
nein, der user braucht keine rechte für die DB. Die besorgt sich die Anwendung höchstwahrscheinlich selbst.
Biber
Biber 03.12.2009 um 13:37:27 Uhr
Goto Top
Moin hondo0815,

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
Hondo0815
Hondo0815 03.12.2009 um 13:52:11 Uhr
Goto Top
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
it-frosch
it-frosch 03.12.2009 um 13:59:53 Uhr
Goto Top
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.
it-frosch
it-frosch 03.12.2009 um 14:01:43 Uhr
Goto Top
Zitat von @Hondo0815:

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.

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. face-wink
Tommy70
Tommy70 03.12.2009 um 14:06:38 Uhr
Goto Top
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

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.
Hondo0815
Hondo0815 03.12.2009 um 14:07:25 Uhr
Goto Top
Der Hersteller bzw der Programmierer sagt das ist mein Problem wie ich die Rechte vergeben das interessiert ihn nicht. Nun denk ich halt kanns irgendwie nicht auf mich abgewälzt werden da ich ja eigentlich garnicht weis ob es auch Richtig funktioniert bzw welche Rechte ich vergeben muss. Die frage ist wenn man als Porgrammierer einen Auftrag bekommt und die Infrastruktur der Firma kennt dann müsste man das doch auch selbst Testen, denn ich denk da wäre doch dann auch bekannt welche Rechte wer benötigt. (Der Programmierer hat das nur Lokal als Admin getan) den rest darf ich rausfinden. Deswegen wundert es mich halt allgemein ein bisschen