Compact Framework - Gibt es ein MVC Framework / eine Bibliothek?

9

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.

    
Brian Lyttle 25.08.2008, 16:36
quelle

7 Antworten

5

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).

    
Quibblesome 25.08.2008, 17:11
quelle
3

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.

    
Brian Warshaw 25.08.2008 16:58
quelle
2

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. ​​

    
ctacke 18.11.2010 13:53
quelle
1

@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:

  • Ansicht = Kundenformular
  • Controller = Wrappt Client Events und Marshals zwischen View und Model
  • Modell = Anwendungsdaten und Geschäftslogik

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:

  • SpreadSheet-Ansicht
  • Druckerfreundliche Ansicht
  • Symbolansicht

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.

    
FlySwat 25.08.2008 17:00
quelle
0

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.

    
ctacke 30.10.2008 23:23
quelle
0

@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.

    
Johann Gerell 10.11.2008 06:58
quelle
-6

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:

  • ASP.NET MVC - Dies ist Microsofts Versuch eines MVC-Frameworks. Es ist immer noch im Vorschaumodus, also benutze es nach eigenem Ermessen, aber einige Leute benutzen es bereits in ihren Produktionsanwendungen. Sie finden umfangreiche Dokumentation dazu mit einer einfachen Google-Suche, da sie unter der .NET-Crowd sehr beliebt ist.
  • Castle MonoRail - Das MonoRail-Framework ist ein Open-Source-MVC-Framework, das schon seit geraumer Zeit existiert und auf mehreren verwendet wird Produktionsanwendungen. Es ist definitiv mehr ausgespült als das ASP.NET MVC-Framework, aber angesichts der Menge an Aufwand, die Microsoft auf ihr MVC-Angebot wirft, denke ich, wird sich relativ bald ändern.
Kevin Pang 25.08.2008 16:44
quelle