myCSharp.de - DIE C# und .NET Community
Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 
 | Suche | FAQ

» Hauptmenü
myCSharp.de
» Startseite
» Forum
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Suche
» Regeln
» Wie poste ich richtig?
» Forum-FAQ

Mitglieder
» Liste / Suche
» Wer ist wo online?

Ressourcen
» openbook: Visual C#
» openbook: OO
» Microsoft Docs

Team
» Kontakt
» Übersicht
» Wir über uns

» myCSharp.de Diskussionsforum
Du befindest Dich hier: Community-Index » Diskussionsforum » Entwicklung » Datentechnologien » Wie kann ich mit WPF über WebService auf eine Datenbank zugreifen?
Letzter Beitrag | Erster ungelesener Beitrag Druckvorschau | Thema zu Favoriten hinzufügen

Antwort erstellen
Zum Ende der Seite springen  

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

 
Autor
Beitrag « Vorheriges Thema | Nächstes Thema »
Stone1984 Stone1984 ist männlich
myCSharp.de-Mitglied

Dabei seit: 19.11.2020
Beiträge: 7


Stone1984 ist offline

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

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

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.
19.11.2020 22:17 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
T-Virus T-Virus ist männlich
myCSharp.de-Mitglied

Dabei seit: 17.04.2008
Beiträge: 1.657
Entwicklungsumgebung: Visual Studio, Codeblocks, Edi
Herkunft: Nordhausen, Nörten-Hardenberg


T-Virus ist offline Füge T-Virus Deiner Kontaktliste hinzu

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

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
19.11.2020 22:48 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
behindyoû behindyoû ist männlich
myCSharp.de-Mitglied

Dabei seit: 25.06.2020
Beiträge: 18


behindyoû ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

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.
20.11.2020 23:56 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
T-Virus T-Virus ist männlich
myCSharp.de-Mitglied

Dabei seit: 17.04.2008
Beiträge: 1.657
Entwicklungsumgebung: Visual Studio, Codeblocks, Edi
Herkunft: Nordhausen, Nörten-Hardenberg


T-Virus ist offline Füge T-Virus Deiner Kontaktliste hinzu

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

@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
21.11.2020 10:30 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
Papst Papst ist männlich
myCSharp.de-Mitglied

Dabei seit: 28.09.2014
Beiträge: 320
Entwicklungsumgebung: VS2017
Herkunft: Kassel


Papst ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Sofern dein NAS System es unterstützt könntest du eine API auch in C# entwerfen und so verbinden.
21.11.2020 15:58 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
Stone1984 Stone1984 ist männlich
myCSharp.de-Mitglied

Dabei seit: 19.11.2020
Beiträge: 7

Themenstarter Thema begonnen von Stone1984

Stone1984 ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

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.
26.11.2020 22:07 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
Abt
myCSharp.de-Team

avatar-4119.png


Dabei seit: 20.07.2008
Beiträge: 14.298
Herkunft: BW


Abt ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Die Synologys unterstützen Docker und damit jeder Art von Applikation, die im Docker-Container laufen kann.
26.11.2020 22:14 Beiträge des Benutzers | zu Buddylist hinzufügen
Baumstruktur | Brettstruktur       | Top 
myCSharp.de | Forum
Antwort erstellen


© Copyright 2003-2020 myCSharp.de-Team | Impressum | Datenschutz | Alle Rechte vorbehalten. | Dieses Portal verwendet zum korrekten Betrieb Cookies. 01.12.2020 22:41