Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Community
  • |
  • Diskussionsforum
Wie kann ich mit WPF über WebService auf eine Datenbank zugreifen?
Stone1984
myCSharp.de - Member



Dabei seit:
Beiträge: 7

Themenstarter:

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

beantworten | zitieren | melden

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.
private Nachricht | Beiträge des Benutzers
T-Virus
myCSharp.de - Member



Dabei seit:
Beiträge: 1834
Herkunft: Nordhausen, Nörten-Hardenberg

beantworten | zitieren | melden

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.
private Nachricht | Beiträge des Benutzers
behindyoû
myCSharp.de - Member



Dabei seit:
Beiträge: 20

beantworten | zitieren | melden

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.
private Nachricht | Beiträge des Benutzers
T-Virus
myCSharp.de - Member



Dabei seit:
Beiträge: 1834
Herkunft: Nordhausen, Nörten-Hardenberg

beantworten | zitieren | melden

@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.
private Nachricht | Beiträge des Benutzers
Papst
myCSharp.de - Experte



Dabei seit:
Beiträge: 357
Herkunft: Kassel

beantworten | zitieren | melden

Sofern dein NAS System es unterstützt könntest du eine API auch in C# entwerfen und so verbinden.
private Nachricht | Beiträge des Benutzers
Stone1984
myCSharp.de - Member



Dabei seit:
Beiträge: 7

Themenstarter:

beantworten | zitieren | melden

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.
private Nachricht | Beiträge des Benutzers
Abt
myCSharp.de - Team

Avatar #avatar-4119.png


Dabei seit:
Beiträge: 15807
Herkunft: BW

beantworten | zitieren | melden

Die Synologys unterstützen Docker und damit jeder Art von Applikation, die im Docker-Container laufen kann.
private Nachricht | Beiträge des Benutzers