Ich habe einmal ein MVVM / WPF-Projekt gestartet, das schließlich erstellt und bereitgestellt wurde, und dafür habe ich viel über das Caliburn.Micro MVVM-Framework gelernt. Tatsache ist: Ich habe Caliburn.Micro dafür nicht verwendet und einige MVVM-Konzepte (insbesondere nur die ViewModelBase
und RoutedCommand
-Klassen) selbst implementiert .
Jetzt wurde ich einem etwas größeren Projekt zugewiesen: sozusagen einer "Einzelbenutzer-Rich-Client-Offline-Desktop-Anwendung", und ich entschied mich für Caliburn.Micro. Und hier beginnt mein "Problem".
Ich habe in diesem berühmten Blog-Beitrag gelesen, in dessen Titel steht: "Wenn Sie MVVM verwenden, benötigen Sie ein Framework".
"Der Versuch, so etwas wie MVVM ohne Framework zu machen, ist eine enorme Arbeit. Tonnenweise doppelter Code, das Rad neu erfinden und die Leute dazu bringen, anders zu denken .
Zumindest mit einem Framework vermeiden Sie den doppelten Code und müssen das Rad hoffentlich nicht neu erfinden. So können Sie sich auf die Umschulung von Mitarbeitern konzentrieren. Der Umschulungsteil ist im Allgemeinen unvermeidlich, aber ein Framework bietet Installationscode und -struktur, was den Prozess vereinfacht. "
Ich würde der ersten Lesung zustimmen, aber meine tatsächliche Erfahrung mit Caliburn.Micro (CM) in meiner tatsächlichen Bewerbung ist ratlos und desorientiert. Das heißt, das Framework hat den Prozess überhaupt nicht einfacher gemacht, im Gegenteil. Das Lesen der sich ständig wiederholenden Beispiele von Rob Eisenberg in der eher (zu) informelle Dokumentation und versuchen zu schließen Nutzungsmuster aus den gewundenen zur Verfügung gestellten Proben und ihre ganz indirekte Klassen- und Interface - Beziehungen, wo die Dinge scheinen zu Arbeit zu gestalten , basierend auf Nebenwirkungen, scheint menschlich unmöglich, es sei denn, Sie sind ein erfahrenes Genie (Entschuldigung für die Beschimpfung, aber ich denke, Sie wissen, was ich meine).
Ganz zu schweigen davon, dass jedes der oben genannten trivialen Szenarien IoC-Container beinhaltet, mit denen ich noch nie gearbeitet habe und die ein Problem zu lösen scheinen, das ich möglicherweise noch nicht einmal hatte . Ich habe keine Lust, mehr Projektstunden damit zu verbringen, diese Dinge zu lernen, anstatt über meine Problem- und Anwendungsdomänen nachzudenken. Ich wollte nur eine Banane, aber CM gab mir einen Gorilla (IoC) mit einem Korb Bananen.
Jetzt, da ich überlege, zu meinem selbst erstellten MVVM-Framework zurückzukehren, das nur aus wenigen MVVM-spezifischen Klassen besteht, die ich tatsächlich implementieren möchte, möchte ich CM zumindest eine Chance geben, falls ich hier etwas verliere, oder nur einfach die Dinge "auf die falsche Art und Weise" aus purer Unerfahrenheit und Unwissenheit heraus zu tun. Die Frage ist also:
Es herrscht allgemeiner Konsens darüber, dass "Frameworks die Dinge einfacher und natürlicher machen". Wenn ich jedoch das Gegenteil erlebe, bedeutet dies, dass ich das Framework nicht verwenden sollte oder dass ich versuche, es falsch zu lernen? Gibt es einen Hinweis darauf, dass ich überhaupt kein Framework verwenden sollte? Oder gibt es einen "richtigen" Weg, um herauszufinden, wie CM für die einfache MVVM-Entwicklung verwendet wird?
RelayCommand
Implementierung finden (da er direkt an Methoden gemäß Konvention "bindet", anstatt an ICommand-Eigenschaften zu binden).
RelayCommand
aus einer anderen Bibliothek nicht verwenden könnten, wenn die von Caliburn Micro verwendete nicht für Sie funktioniert.
EventAggregator
für Messaging undNotificationObject
ViewModelBase sowie MVVM LightRelayCommand
für Befehle. Das Wichtigste ist, zu identifizieren, welche Probleme das Framework für Sie lösen wird, und nur diese Lösungen zu verwenden. Sie müssen nicht die gesamte Framework-Bibliothek verwenden.