Ich habe ein Artikel zu diesem Thema von einem Microsoft-Mitarbeiter, aber hat jemand einen robusteren Rahmen dafür implementiert? Gibt es ein leichtgewichtiges Framework für WinForms, das leicht portiert werden kann? Ich würde gerne recht schnell auf Touren kommen und es vermeiden, ein eigenes Framework / eine eigene Bibliothek zu erstellen, wenn jemand, der schon etwas Klügeres gemacht hat, dies bereits getan hat.
Ich habe die Mobile Software Factory von der P & amp; P-Gruppe nicht angeschaut, aber ich vermute, dass es irgendwie schwer ist. Ist es einen Blick wert?
Bearbeiten: Ich suche keine Informationen zum ASP.NET MVC-Projekt. Ich frage nach dem kompakten Framework 'WinForms' Implementierung und wie man MVC damit implementieren.
Ich persönlich finde, dass die Mobile Software Factory für CF nicht viel Freude bereitet. Wir verwenden immer noch einen Teil davon (EventBroker) bei der Arbeit und ich möchte diesen Teil wenn möglich sogar entfernen (da er keine generischen Ereignisse unterstützt und Sie die Argumente von EventArgs in ihre starken Typen umwandeln müssen). Ein Schwesterprojekt bei der Arbeit nutzte es für einen Teil ihrer Benutzeroberfläche, musste es aber aufgrund von Leistungsproblemen herausreißen (ein weiteres großes Projekt, obwohl dieses auch zusätzliche Leistungsprobleme hat).
Das Problem, das ich mit dem MVP Framework finde, dass die P & amp; P lib bietet, ist, dass Formulare und Controls eigene Moderatoren statt Moderatoren / Controller besitzen Formulare (wer hat nicht gelesen "Es ist nur eine Ansicht": Pragmatischer Programmierer?). Dies passt wunderbar zu MS "Form First" Rapid Application Development Mantra, aber es ist ärgerlich, wenn man bedenkt, wie teuer Windows-Griffe in CE sein können (wenn Sie viele davon haben). Wir betreiben eine sehr große CF-Anwendung bei der Arbeit und wir haben unser eigenes MVC-Framework gerollt. Es ist nicht schwer, eigene Rollen zu erstellen. Stellen Sie sicher, dass Sie alles in Controller, Views, Business Objects und Services aufteilen und einen UIController haben, der die Interaktionen zwischen den Controllern steuert.
Wir gehen sogar noch einen Schritt weiter und verwenden Formulare / Steuerelemente erneut, indem wir ein Controller- & gt; View- & gt; -Layout-Muster verwenden. Der Controller ist derselbe wie gewöhnlich, die Ansicht ist das Objekt, das ein Layout in eine bestimmte Ansicht anpasst, und das Layout ist das eigentliche Benutzersteuerelement. Wir tauschen diese dann in einer einzigen Form ein und aus. Dies reduziert die Anzahl der Windows-Steuerelemente, die wir verwenden, dramatisch. Dies + Initialisierung aller Formulare beim Start bedeutet, dass wir die bemerkenswerte Pause, die Sie beim Erstellen neuer Windows-Steuerelemente "on-demand" erhalten, beseitigen.
Offensichtlich zahlt es sich nur aus, wenn Sie eine große Anwendung starten. Wir haben ungefähr 20 + verschiedene Arten von View, die insgesamt ungefähr 7 verschiedene Layouts verwenden. Das schmerzt unsere Initialisierungsroutine (wie wir die Formulare beim Start laden) um eine Größenordnung von ungefähr 10 Sekunden, aber psychologisch sind die meisten Benutzer bereit, einen solchen Treffer beim Start zu akzeptieren, im Gegensatz zu merkbaren Pausen während der Laufzeit.
Das Hauptproblem mit der P & amp; P-Bibliothek in meinen Büchern ist, dass es ein FF - & gt; CF-Port und aufgrund gewisser Inkompatibilitäts- und Leistungsunterschiede zwischen den beiden Plattformen verlieren Sie eine Menge nützlicher Funktionalität.
Übrigens, das ist bei weitem das umfassendste Artikel, den ich jemals auf MVC / MVP gelesen habe. Für Windows-Anwendungen (Desktop oder CE) würde ich die Taligent Model-View-Presenter-Version ohne die Interaktionen, Befehle und Auswahlen empfehlen (z. B. führt der Controller / Moderator die gesamte Arbeit aus).
Keiner von euch (davidg oder Kevin Pang) hat darauf geachtet, dass er an WinForms , nicht Web Forms interessiert ist. Er möchte ein Framework, das das Model-View-Controller-Entwurfsmuster (davidg, MVC ist nicht nur der Name eines ASP.NET-Frameworks) in einem WinForms-Projekt unter Verwendung des .NET Compact Framework verschiebt. Er hat seine Frage gut gestellt.
Es gibt auch das OpenNETCF-IoC-Framework (das meiner Meinung nach nicht existierte, als diese Frage gestellt wurde), das viel leichter ist, aber ähnlich im Objektmodell für die Mobile Software Factory von P & P.
@DavidG und @KevenPang
MVC ist nicht auf eine Web-Technologie beschränkt, in der Tat war der ursprüngliche Smalltalk MVC für Desktop-Anwendungen.
Es funktioniert so:
In reinem Smalltalk MVC ist die Ansicht nicht darauf beschränkt, ein Formular zu sein, sondern kann eine beliebige Darstellung von Modelldaten sein. Wenn wir beispielsweise ein Modell hätten, das eine Tabelle darstellt, könnten wir folgende Ansichten haben:
usw., das Model wäre das gleiche, aber die View würde in jedem Fall ein anderes Ausgabeobjekt erzeugen.
Alles, was gesagt wurde, ich weiß nicht, ob ein solches Framework für das .NET Compact Framework existiert, ich wollte nur darauf hinweisen, dass MVC nicht WebApp bedeutet.
Werfen Sie einen Blick auf mFly Mobile MVC . Ich habe es nie benutzt, aber es ist als vernünftiges MVC-Framework für die CF aufgestellt.
@davidg: "Warum sollten Sie MVC auf Compact Framework verwenden?"
Warum nicht? Es ist nicht so, als wäre es für Web-Dev reserviert, es ist ein Muster.
Bearbeiten: Die obigen Poster sind korrekt. Ich sah MVC und dachte sofort an Webformulare. Entschuldigen Sie. Fühlen Sie sich frei, dies zu ignorieren. Ich lasse meine ursprüngliche Nachricht an Ort und Stelle, für den Fall, dass jemand, der an Webformularen interessiert ist, die Links benötigt. : -)
Es gibt ein paar MVC-Frameworks, von denen keines sehr "leicht" ist, aber MVC ist eine ziemlich große Verschiebung weg von Web-Formularen, so dass erwartet wird:
Tags und Links c# model-view-controller design-patterns windows-mobile compact-framework