Laden...

Realisierung von Programm auf Netzlaufwerk, Multiuser mit Datenbankzugriff

Erstellt von AppleDeveloper vor 7 Jahren Letzter Beitrag vor 7 Jahren 3.345 Views
A
AppleDeveloper Themenstarter:in
4 Beiträge seit 2016
vor 7 Jahren
Realisierung von Programm auf Netzlaufwerk, Multiuser mit Datenbankzugriff

Hi,
das ist ja mein erster Beitrag in diesem Forum. Kurz zu meiner Person: Ich entwickle schon seitdem ich 8 Jahre alt bin. Als erstes war ich bei Webseiten, dann habe ich einige Jahre Windows Entwicklung mit C# und Visual Basic gemacht und die letzten Jahre bin ich, wie man auch an meinem Benutzernamen sehen kann, bei der iOS und Android Entwicklung hängen geblieben. Habe also schon einiges durch.

Dieses Jahr habe ich mein Duales Studium in einer großen Software Firma angefangen und dafür soll auch intern die Applikation genutzt werden. Es soll ein Programm mit C# entwickelt werden, mit welchem eine begrenzte User Anzahl (ca. 200) innerhalb von 1-2 Wochen im Jahr verschiedene Daten eintragen kann. Das Programm wird also effektiv nur 1-2 Wochen im Jahr genutzt. Sinn und Zweck sei dahingestellt.

Jetzt rätsel ich aber schon seit Wochen an der Realisierung. Mein Problem ist, dass für diese Applikation kein Server genutzt werden darf. Gründe sind verschieden. Es sollen jedoch immer n Leute mit dem Programm gleichzeitig arbeiten können. Das Programm soll genauso wie die Datenbank auf einen Netzwerklaufwerk liegen. Also keine Installation sondern man klickt da einfach nur die EXE an und man soll starten können.

Wie würdet Ihr das denn realisieren? Mit einer SQL-Datenbank? Wenn ja wie würdet Ihr da diese Datenbank erstmal erstellen? Gibt es da nicht dann auch Probleme, weil ja die Dateien von Windows gesperrt werden? Was wäre eine Alternative? Im Internet bin ich nicht fündig geworden.

Windows ist für mich zurzeit noch etwas ungewohnt wieder. Ich war vorher 6 Jahre nur auf Mac OS X (bedingt durch die App Entwicklung) und nutze privat immer noch Mac OS X. Deswegen entschuldigt meine Fragen.

Viele Grüße
Nils

16.842 Beiträge seit 2008
vor 7 Jahren

So pauschal kann man eine Frage an für sich nicht beantworten, weil gerade im Datenbankbereich es sicherlich Daten gibt, die jeder User sehen soll und dann eben noch per User Spezifika (zB Einstellungen) hinterlegt werden sollen.

Windows sperrt da keine Dateien; Du darfst halt nicht nur mit einer Datenbank-Datei (MDF) arbeiten, sondern eben mit einem echten Datenbank-Server.
Mit Windows hat ansonsten die Anforderung relativ wenig zutun; sind nach der Beschreibung hier Programmlogik.

Dass Programme nur 1-2 mal im Jahr verwendet werden; das ist insbesondere im Logistikbereich nichts ungewöhnliches, zB Inventur und Co

A
AppleDeveloper Themenstarter:in
4 Beiträge seit 2016
vor 7 Jahren

Danke für deine Antwort! Aber genau das Problem ist ja, dass kein Server verwendet werden darf.

Es sollen keinen Einstellungen hinterlegt werden. In die Datenbank sollen nur die Login Daten und die jeweiligen Eingangsdaten sein.

Die Daten die eingetragen werden müssen, können mit Reisedaten verglichen werden. Also eigentlich wo man hin fährt, wie lange und wo man wohnt. Das sollen die User eingeben. Es ist jeodch recht wahrscheinlich, dass 30 Leute in einem Raum sitzen und alle jeweils auf ihrem Computer das Programm offen haben und Daten eintragen.

Deswegen weiß ich nicht, wie ich die Datenbank realisieren soll. Ganz wichtig ist eben, dass ich kein Server oder ähnliches habe.

771 Beiträge seit 2009
vor 7 Jahren

Hi,

dann informiere dich mal über "embedded databases" - SQLite z.B. unterstützt auch multi user access: Can sqlite support multiple user?

16.842 Beiträge seit 2008
vor 7 Jahren

Das heisst ihr legt Personenbezogene Daten in eine Datenbank (darunter sogar Logindaten), die sich jeder im kompletten ziehen kann und damit natürlich auch alles mögliche anstellen kann?
Wow... das ist wirklich mehr als nur fahrlässig.

Auch Sqlite ist nicht voll Multi-User-fähig.
Es kann nur zeitgleich lesen aber nicht zeitgleich schreiben. Dementsprechend gibt es darauf locks (und zwar auf die gesamte Datenbank).
Datei-Datenbanken sind für so ein Szenario einfach nicht gedacht und auch falsch eingesetzt.

A
AppleDeveloper Themenstarter:in
4 Beiträge seit 2016
vor 7 Jahren

Die Login Daten die da liegen sollen sind nicht verwendbar. Dies hat zwei Gründe:

  1. Der Username ist, wie bei jeder Applikation bei uns in der Firma, eine für jeden User spezifische Abkürzung. Man kann diesen Username für jede Person ganz einfach rausfinden. Das hat andere Gründe warum.
  2. Die Passwörter werden gehasht und gesalzen gespeichert. Damit kann man nicht viel machen.

Das Passwort was dort ist gilt nur für das Programm und da werden keine sensiblen Daten eingegeben. Das man das eingeben soll dient nur zu Statistik zwecken.

Die Daten des Users werden dort nicht gespeichert. Das braucht man auch nicht. Wie gesagt nur intern.

Das habe ich mir auch schon mal angeschaut. Das schreibe ist ja das Problem.

Du würdest also einen Server verwenden und ohne das geht es nicht?

16.842 Beiträge seit 2008
vor 7 Jahren

Das Salzen als Sicherheit hat sich erledigt, sobald man Zugriff auf das Salt bekommt.
Dann ist es "ein leichtes" auch wieder nur die Hashes auszuprobieren.... nur so als Info.

Es geht ohne; aber halt nur mit sehr starken Einschränkungen.
Und Dein Szenario ist nicht unbedingt für eine Datenbank-Datei geeignet. Klar kannst Du so starten und versuchen, ob Du mit den Einschränkungen leben kannst.

Starte halt einen Mini-PoC, ob das in dem Ausmaß noch funktioniert, wie ihr das verwenden wollt.

A
AppleDeveloper Themenstarter:in
4 Beiträge seit 2016
vor 7 Jahren

Danke! Da muss ich dann wohl doch mal schauen, wie ich einen Server bekomme. Danke für die Antworten!

P
1.090 Beiträge seit 2011
vor 7 Jahren

Einen Kostenlosen SQL Server (Software) kannst du hier bekommen
Ob der für deine Anforderungen reicht musst du mal schauen.

Ohne Server Betriebssystem wirst du aber wohl Probleme mit den zugriff auf das Netzlaufwerk bekommen. Bei Windows 7 können meines Wissens nach max 20 Leute gleichzeitig drauf zu greifen. Wenn du es für Wahrscheinlich hältst da 30 Leute gleichzeitig drauf zugreifen hast du da ein Problem.

Wäre eine Web Seite (ASP Core) nicht eine Möglichkeit für euch.

Sollte man mal gelesen haben:

Clean Code Developer
Entwurfsmuster
Anti-Pattern