![]() |
AW: Frage zum Designkonzept MVVM unter Delphi
Zitat:
Zitat:
Wenn du dein Geld normalerweise zu einer Domina trägst, dann würde ich sagen, mach es und du sparst dir das Geld dort ein. Ansonsten folge dem Rat von Stevie: Vergiss es einfach. |
AW: Frage zum Designkonzept MVVM unter Delphi
Ich habe dieses Video
![]() sehr bereichernd und - für mich - praktisch nutzbar gefunden. |
AW: Frage zum Designkonzept MVVM unter Delphi
Zitat:
Ansonsten ist es bis zur Implementierung eins der besseren Videos aus der Delphi Welt über MVVM - allerdings stimme ich bei der gezeigten Implementierung dann doch dem Kommentar unter dem Video zu. Bei 35:40 fängt der Blödsinn nämlich an und es wird Interaktionslogik in die View geschrieben. Die Interaktion der Eingabe mit dem Daten holen gehört in das ViewModel. Bei MVVM geht jede Eingabe ins Edit per data binding in das ViewModel hinein und wenn ich den Knopf drücke wird ein Command aufgerufen. Das ViewModel nimmt dann die entsprechenden Daten, die aus der UI in es hineingeflossen sind und macht etwas damit. Danach liefert es eine Benachrichtigung, dass es neue Daten zum Anzeigen hat (meist auch über die entsprechende data binding funktionalität). Das mag dem einen oder anderen wie Erbsenzählerei vorkommen, ist doch egal, hauptsache trennen - nein, man muss sich einfach immer vorstellen, ob man das ViewModel einfach so testen kann, indem man ihm einfach nur UI Inputs gibt. In der gezeigten Möglichkeit gibt es das nicht, ich kann dem VM nicht einfach sagen, ich hab hier in das Suchfeld das da eingegeben und dann die Suchen Aktion gestartet, mach was - denn wie diese beiden Dinge in Verbindung stehen, stand in der View! Wenn man das schon mit RAD lösen möchte, dann würden Data aware Controls der Sache am nächsten kommen. Ins VM würde dann ein Dataset (ClientDataSet, FDMemTable oder was weiß ich), die kann man hervorragend an entsprechende TDBXXX Controls verbinden und hat bidirektionalen Datenfluss und Benachrichtigungen ohne LiveBindings. Ob man das aber für jede Fitzeloberfläche, die man in seiner Anwendung hat, machen mag wo man doch bei anderen Sprachen, die MVVM etwas besser unterstützen, nur ne kleine Klasse schreiben muss anstatt sich öffzig Datenmodule mit allem Brimborium zu basteln, weiß ich nicht. Im Übrigen halt ich auch in WPF oder Xamarin Forms MVVM für noch arg unhandlich. Erst in JS, wenn man das schön ins HTML einbetten kann, wie bei Knockout oder Aurelia, wirds interessant. Wenn man sich nen vernünftigen vortrag zu MVVM anschauen möchte, dann empfehle ich, diese: ![]() Darin zeigt Rob Eisenberg (Author von mittlerweile einigen MVVM Frameworks), was man so an eigener Infrastruktur bauen kann und sollte, damit man vernünftig MVVM durchführen kann (das dürfte so aus seiner Caliburn.Micro Zeit sein, wenn ich mich recht erinner). Wenn ich es richtig in Erinnerung hab, dann dürfte das hier ein ganz guter Einstieg in MVVM sein: ![]() |
AW: Frage zum Designkonzept MVVM unter Delphi
Zitat:
Wie schon geschrieben verwenden wir MVVM, würden es aber vermutlich wegen dem hohen Aufwand nicht mehr anfangen. Jetzt sind wir schon drin und machen dann damit halt weiter. Ich meine auch dass wir es "eichtig" machen. Allerdings ist für jede Klasse von Controls in der UI, die verwendet werden wollen, etliches an Zusatzcode notwendig um das Binding zu ermöglichen. Da wir aber nur eine begrenzete Menge an verschiedenen Controls verwenden ist das nicht so schlimm. |
AW: Frage zum Designkonzept MVVM unter Delphi
Hallo zusammen,
hier gibt es ein schönes Buch von John Kouraklis "MVVM in Delphi". Hier wird eine kleine Anwendung auf MVVM umgebaut. Ebenso hat mir das YouTube von Olaf Monien gut gefallen ![]() Da wir sehr viel datenbankgebundenen Komponenten arbeiten gefällt mir der Ansatz sehr gut. Wichtig ist einfach die Trennung GUI und Business-Logik. |
AW: Frage zum Designkonzept MVVM unter Delphi
MVC, MVP und MVVM trennen alle GUI und Businesslogik. Nur diese Trennung alleine macht also noch kein MVVM - so sehr man es sich auch wünscht, denn die Trennung steht bei jedem Muster auf der Fahne.
Die Art und Weise der Trennung entscheidet was es wirklich ist (MVC, MVP oder MVVM). |
AW: Frage zum Designkonzept MVVM unter Delphi
Man muss m.E. festlegen, was man erreichen will:
- Trennung BL und GUI (aus meiner Sicht immer wichtig!) - Testbarkeit von BL? - Austauschbarkeit der GUI? - Getrennte Teams für BL und GUI? Aus meiner Sicht genügen die Punkte 1 und 2. In dem Zusammenhang genügt mir ein Framework, das ein gutes Databinding ermöglicht. Dazu müssen die Schichten der BL und GUI aufeinander abgestimmt sein und miteinander kommunizieren. Die BL würde nur Klassen wie TPerson und TCar definieren, die in sich vollständig funktionsfähig sind. Die GUI würde an Objekte und Listen gebunden werden, z.B. Edit1.Caption -> Person.FirstName ListBox1 -> Person.MyCars Die Zuordnung würde im Designer erfolgen und der Entwickler dabei vom Framework unterstützt werden. Programmieren möchte ich keine Databindings und schon gar keine Controller o.ä. Vom Prinzip wäre die GUI vergleichbar mit DBControls, nur dass diese an normale Objekte gebunden werden. Meinen ersten Ansatz hatte ich hier mal vorgestellt: ![]() Inzwischen arbeite ich an einem neuen Projekt mit ähnlicher Zielstellung. Wenn man die letzten zwei Punkte erfüllen will ist MVVM sicherlich ein guter Ansatz und der höhere Aufwand dann wahrscheinlich auch in Kauf zu nehmen. @Schokohase: Hattest Du meine pm gesehen? |
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:46 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz