In der klassischen Delphi-Datenbankanwendung haben wir ein Formular, eine Gruppe von datensensitiven visuellen Steuerelementen, die über TDataSources mit TDataSets verbunden sind. Wenn Sie eine Datenbankanwendung mit dem MVC-Modell entwerfen möchten, wo platzieren Sie TDataSet-Komponenten? Sollten sie auf Form bleiben und somit ein Teil von View sein? Oder sollten sie in einem Model-Objekt gekapselt sein? Wenn letzteres wie an visuelle Komponenten gebunden werden könnte?Datenbankanwendung mit MVC-Paradigma
Antwort
könnten Sie delphi Projekt über MVC Augen wie diese:
TDataModule -> Model
TYourForm.pas -> Controller
TYourForm.dfm -> View
Wenn Sie es akzeptieren, als Sie in Datasets Datamodule setzen sollte.
Im Projekt, an dem ich arbeite, habe ich auch TClientDataSets auf Formulare gelegt und Daten bei der Erstellung geklont. Auf diese Weise habe ich Daten in TForm mit Logik im Datenmodul isoliert.
Schade, dass es kein ActiveRecord ähnliches Framework für Delphi gibt.
ich ein MVC-like Rahmen für meine aktuellen Kunden gemacht haben, damit Sie es so etwas wie dieses machen würde:
- TDataModule = Modell (für Daten, so TDataset Sachen)
- TForm = Ansicht (enthält Datenquellen, auf TDatasets Modell verbunden)
- Controller.pas = Controller (Ausführung/Business-Logik)
Versuchen Sie, Ihre Form so sauber wie möglich zu halten: nur Sachen für GUI enthalten. Implementieren Sie spezielle (Geschäftsregeln, Datenaktualisierungen usw.) Logik im Controller. Denken Sie daran: Ihre Ansicht muss leicht durch eine andere Ansicht ersetzt werden (wie die Webseite).
In meinem MVC-ähnlichen Framework ruft die Ansicht Methoden (wie Suchen, Aktualisieren, usw.) mit Parametern des Controllers auf, der Controller weiß, was und wie usw. zu suchen und füllt/aktualisiert das Modell. View ist mit dem Modell verbunden (Eigenschaft des Controllers).
Es ist nicht genau MVC, aber auf diese Weise ist die GUI von allen Arten von Logik getrennt und es ist immer noch leicht zu debuggen und zu pflegen (Sie könnten Abhängigkeitsinjektion/lose Kopplung mit dem Controller usw. verwenden, aber dies macht es nur schwieriger verwenden, wenn benötigt)
- 1. Datenbankanwendung/Lösung
- 2. Failover-Strategie für Datenbankanwendung
- 3. BackOffice Datenbankanwendung FrontEnd - Programm in C#/VB.Net oder PHP?
- 4. Entwurfsmuster für eine Datenbankanwendung, die getrennt arbeiten muss
- 5. Client-Server-Datenbankanwendung: Wie werden Clients benachrichtigt, dass Daten geändert wurden?
- 6. Ich muss jeden iPhone-Benutzer in meiner Datenbankanwendung eindeutig identifizieren. Welcher Code würde dies erreichen?
- 7. SQLCipher zusammen mit DBFlow
- 8. GWT mit JPA
- 9. Exportieren einer SQLite-Datenbank mit C#, Best Practices
- 10. Verwendung von Haskell mit einem Datenbank-Backend für "Business-Anwendungen"
- 11. Wie aktualisiere ich Werte in der Datenbank mit Datum = Systemdatum
- 12. How To: SQLite Parameter mit einem UPDATE/WHERE Befehl
- 13. Anzeige von Schwungkomponenten mit einer Schleife
- 14. SQL-Server mit deutschen Ländereinstellungen
- 15. Was ist die beste Delphi n-Tier-Technologie mit niedriger Bandbreite?
- 16. Wie finde ich die Größe meines persistenten Kerndatenspeichers und den freien Speicherplatz im Dateisystem?
- 17. Finden Sie die Verbindungszeichenfolge
- 18. Sql Server 2000-Trigger, der auf eine SQL Server 2008-Datenbank verweist, schlägt fehl
- 19. Benötigen Sie eine Thesaurus-Datenbank
- 20. Was sind die Voraussetzungen für PhoneGap-Datenbank-Anwendung für IPhone?
- 21. Technologieauswahl, Datenbank
- 22. Wie kann ich ein Programm kodieren, das mit einem Frontend und einigen Modulen arbeitet?
- 23. die Suche nach einem C++ Datenbankbibliothek, die mit Visual Studio arbeitet 2008/2010
- 24. Kann ich einen einfachen DB-Browser mit VS 2010 erstellen, wie ich es mit VS 6 könnte?
- 25. MySQL: Wie bekomme ich Änderungen vom letzten UPDATE?
- 26. Verwendet noch jemand ObjectPal?
- 27. Wie viele Joins pro Funktionalität in einer realen Anwendung?
- 28. WCF Datendienste oder etwas anderes?
- 29. Der beste Weg, um die Ergebnisse vom Server zum mobilen Client zurückzugeben
- 30. Keine Entitätsdatenmodelloption im Datenquellenkonfigurations-Assistenten
+1 In der Tat; Delphi hat MVC so lange gemacht, dass die Leute es vergessen :-) –