Laden...

Wie kann ich mit WPF über WebService auf eine Datenbank zugreifen?

Erstellt von Stone1984 vor 3 Jahren Letzter Beitrag vor 3 Jahren 1.016 Views
S
Stone1984 Themenstarter:in
7 Beiträge seit 2020
vor 3 Jahren
Wie kann ich mit WPF über WebService auf eine Datenbank zugreifen?

verwendetes Datenbanksystem: MySQL with MariaDB

Seit einiger Zeit versuche ich schon ein kleines Problem zu lösen. Ich möchte auf eine MySQL-Datenbank, die sich auf einem Webserver befindet zugreifen. Leider gibt es hier keine direkte Verbindung.

Bisher habe ich dafür C# Form Anwendungen genutzt, die Daten aus der Datenbank über ein serverseitiges PHP-Skript abholen können. Die Datenabfragen werden im JSON-Format zurückgeliefert. Genauso können dann die Daten geändert oder auch neue Datenstäze hinzugefügt werden. Soweit so gut. Diese Methodik läuft gut.

Jetzt möchte ich das Ganze ein bisschen moderner aufziehen und C# WPF nutzen, um die Daten aus der Datenbank anzuzeigen, zu verändern oder neue Datensätze einzufügen. In WPF bestehen Möglichkeiten des Bindings und mit einem SQL-Server auf dem direkter Zugriff besteht funktioniert das auch sehr gut.

Allerdings möchte ich über das Internet kommunizieren und muss über ein Zwischenskript auf die Datenbank zugreifen, da eine direkte Verbindung auf die Datenbank nicht mölgich ist. Wie kann ich in solch einem Fall das Binding von WPF optimal nutzen? Kennt hierfür jemand sehr gute Beispiele, an denen ich mich orientieren kann?

Da es sich bei dem Server um ein NAS-System von Synology handelt, könnte ich auch Anpassungen am Server durchführen um WPF und das Binding möglichst effektiv zu nutzen. Allerdings muss immer auch die Sicherheit gegeben sein.

Falls jemand gute Literatur, gute Tutorial zu einer derartigen Aufgabenstellung hat, wäre ich für jede Information und für jeden Verweis sehr dankbar. Ich habe schon einige Zeit nach etwas geeignetem gesucht, bin aber bisher nicht fündig geworden.

T
2.219 Beiträge seit 2008
vor 3 Jahren

Deine Anbindung sollte, wie voher auch, über eine (Web) API laufen.
Ob diese dann in PHP oder gar C# geschrieben ist, musst du dann entscheiden.
Über das Internet wird NIE direkt auf die DB zugegriffen, damit würdest du deine DB offen ins Netz hängen.

Die Daten würde ich auch, wie bishe über die PHP Api laufen lassen.
Du musst diese dann nur von der Api abrufen und in deine Anwendung lokal vorhalten.
Entweder in einer embedded DB, falls wir hier größere Datenmengen haben ansonsten einfach im RAM.

Das Binding kannst du dann mit einer entsprechenden Modell Klasse machen lassen.
Den optimalen Weg dafür gibt es in der Form nicht, da die Abläufe in den Anwendungen unterschiedlich sind und auch von Fall zu Fall variieren können.

T-Virus

Developer, Developer, Developer, Developer....

99 little bugs in the code, 99 little bugs. Take one down, patch it around, 117 little bugs in the code.

B
20 Beiträge seit 2020
vor 3 Jahren

Ergänzend zu dem, was T-Virus gesagt hat, eventuell:
Würde ich an deiner Stelle, je nach dem wie groß das Projekt ist, es über den MVVM-Pattern umsetzen um zukünftige "auslagerung, erweiterung o.d." sauberer und eleganter handzuhaben.

T
2.219 Beiträge seit 2008
vor 3 Jahren

@behindyoû
Das Pattern ergibt sich schon daraus, dass er mit WPF arbeitet.
Es anders zu lösen macht technisch keinen/wniger Sinn, da WPF ja gerade auf MVVM aufbaut.

T-Vius

Developer, Developer, Developer, Developer....

99 little bugs in the code, 99 little bugs. Take one down, patch it around, 117 little bugs in the code.

P
441 Beiträge seit 2014
vor 3 Jahren

Sofern dein NAS System es unterstützt könntest du eine API auch in C# entwerfen und so verbinden.

S
Stone1984 Themenstarter:in
7 Beiträge seit 2020
vor 3 Jahren

Vielen Dank für die vielen nützlichen Hinweise und Tipps. Inwieweit das Synology NAS C# unterstützt weiß ich leider nicht. Um auf dieser Seite keine neue Baustelle zu eröffnen, werde ich vorerst erst einmal bei PHP bleiben.

Bezüglich der Datenübermittlung werde ich das ähnlich machen wie bisher und die Daten im Arbeitsspeicher als Listen vorhalten. Diese Observable Listen können sich dann wunderbar mit den WPF Steuerelementen wie z.B. das Gridview Element synchronisieren. Das hat auch bei den ersten Tests schon ganz gut funktioniert.

16.807 Beiträge seit 2008
vor 3 Jahren

Die Synologys unterstützen Docker und damit jeder Art von Applikation, die im Docker-Container laufen kann.