Einzelnen Beitrag anzeigen

Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#13

AW: SQLite Treiber dbx Emba XE6 SP1 immer noch nicht zu gebrauchen

  Alt 13. Aug 2014, 18:53
Ohne den Begriff "Delphi" und nur auf wenige Stichwort Deines Beitrags reduziert, finde ich z.B. das:

http://www.mrknowing.com/2013/11/08/...n-architektur/

Geht glaube ich in die richtige Richtung.
Obwohl das auch nur das Thema ankratzt

Da muss man bei jeder Schicht noch einmal in die Tiefe gehen.

Beispiel GUI, da gibt es unterschiedliche Ansätze wie MVC, MVVM, ... wobei ich das MVVM besser finde, weil hier beim ViewModel schon der Schnitt von der GUI erfolgt. Bei MVC kennt der Controller noch die einzelnen Controls und bei Delphi ist somit der Controller auch vom Framework (VCL, FMX) abhängig und kann daher nur bedingt wiederverwendet werden.

Ein ViewModel ist also nur eine Brücke zwischen der UI und dem Rest der Anwendung.

Der Einstieg zum ViewModel mit Delphi wird auch nicht unbedingt leicht gemacht. Viele benötigte und hilfreiche Strukturen sind schon mal gar nicht vorhanden und müssen erst aufgebaut werden.
  • MultiCast-Events (nein, die Spring4D-Variante finde ich nicht gelungen) (*)
  • ObservableCollection (s.o.)
  • ICommand, RelayCommand
  • ...
Wenn man das hinter sich hat, dann wird es schon einfacher, aber der Weg ist zunächst steinig.

Auch das fehlende ARC für den Desktop-Bereich steht bei solchen Lösungen teilweise im Weg.

(*) Spring4D lehnt sich ja sehr stark an Visual-C#/.Net an stolpert aber über den unbedingten Willen, das zu 100% Delphi-Event-kompatibel zu machen - was ich persönlich für überflüssig halte - und einige Stellen sind daher nicht mit nativem Delphi-Code zu realisieren wodurch die Portierbarkeit (Android, iOS, OSX) leidet.

Bei .Net sind alle Events gleich aufgebaut mit einem Sender und einem EventArgument. Wenn man das genau so in Delphi umsetzt, dann braucht man das Gefrickel nicht und kommt mit reinem, portierbarem Delphi-Code klar.

Die ObservableCollection in Spring4D feuert bei jeder einzelnen Änderung ein Event (z.B. eine Collection mit 1000 Items feuert bei Clear 1000 Events - eben so wie Delphi das eben macht) wo bei .Net genau ein Event gefeuert wird und beinhaltet u.a. eine Liste mit OldItems, die in diesem Fall eben diese 1000 Items enthalten. Wenn man das UI damit steuert, kann man sich schon ausrechnen, was da besser ist/wäre
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)

Geändert von Sir Rufo (13. Aug 2014 um 19:04 Uhr)
  Mit Zitat antworten Zitat