Frage

Ich habe gefunden ein Artikel zu diesem Thema von einem Microsoft-Mitarbeiter, aber hat jemand ein robusteres Framework dafür implementiert?Gibt es ein leichtgewichtiges Framework für WinForms, das leicht portiert werden könnte?Ich möchte mich ziemlich schnell einarbeiten und vermeiden, ein eigenes Framework/eine eigene Bibliothek zu erstellen, um damit umzugehen, wenn jemand, der schlauer ist, dies bereits getan hat.

Ich habe mir das nicht angesehen Mobile Softwarefabrik von der P&P-Gruppe, aber ich vermute, dass es ziemlich schwer ist.Ist es einen Blick wert?

Bearbeiten:Ich suche keine Informationen zum ASP.NET MVC-Projekt.Ich frage nach der Implementierung des kompakten Frameworks „WinForms“ und wie man MVC damit implementiert.

War es hilfreich?

Lösung

Ich persönlich denke, dass die Mobile Software Factory für CF keine große Freude bereiten wird.Wir verwenden immer noch einen Teil davon (EventBroker) bei der Arbeit und ich würde diesen Teil, wenn möglich, sogar entfernen (da er keine generischen Ereignisse unterstützt und Sie die Argumente in ihre starken Typen von EventArgs umwandeln müssen).Ein Schwesterprojekt bei der Arbeit verwendete es für einen Teil seiner Benutzeroberfläche, musste es jedoch aufgrund von Leistungsproblemen herausreißen (ein weiteres großes Projekt, das jedoch auch zusätzliche Leistungsprobleme aufweist).

Das Problem, das ich mit dem MVP-Framework finde, das die P&P-Bibliothek bietet, ist, dass Forms and Controls EIGENE Präsentatoren sind, anstatt Präsentatoren/Controller, die Formulare besitzen (die „Es ist nur eine Ansicht“ nicht gelesen haben:Pragmatischer Programmierer?).Das passt wunderbar zum „Form First“-Mantra von MS für die schnelle Anwendungsentwicklung, ist aber scheiße, wenn man bedenkt, wie teuer Windows-Handles in CE sein können (wenn man viele davon hat).Wir führen bei der Arbeit eine sehr große CF-Anwendung aus und haben unser eigenes MVC-Framework entwickelt.Es ist nicht schwer, Ihre eigenen zu rollen. Stellen Sie einfach sicher, dass Sie alles in Controller, Ansichten, Geschäftsobjekte und Dienste aufteilen und über einen UIController verfügen, der die Interaktionen zwischen den Controllern steuert.

Wir gehen tatsächlich noch einen Schritt weiter und verwenden Formulare/Steuerelemente wieder, indem wir ein Controller->Ansicht->Layout-Muster verwenden.Der Controller ist derselbe wie üblich, die Ansicht ist das Objekt, das ein Layout in eine bestimmte Ansicht umwandelt, und das Layout ist das eigentliche UserControl.Diese tauschen wir dann innerhalb und außerhalb eines einzigen Formulars aus.Dadurch wird die Menge der von uns verwendeten Windows-Steuerelemente erheblich reduziert.Dies + die Initialisierung aller Formulare beim Start bedeutet, dass wir die spürbare Pause beseitigen, die beim Erstellen neuer Windows-Steuerelemente „auf Abruf“ auftritt.

Offensichtlich lohnt es sich, so etwas nur dann wirklich zu tun, wenn Sie eine große Anwendung rollen.Wir haben mehr als 20 verschiedene Ansichtstypen, die insgesamt etwa 7 verschiedene Layouts verwenden.Dies beeinträchtigt unsere Initialisierungsroutine (da wir die Formulare beim Start laden) um etwa 10 Sekunden, aber psychologisch gesehen sind die meisten Benutzer bereit, einen solchen Schlag beim Start in Kauf zu nehmen, im Gegensatz zu spürbaren Pausen während der Laufzeit.

Das Hauptproblem mit der P&P-Bibliothek in meinen Büchern besteht darin, dass es sich um einen FF -> CF-Port handelt und aufgrund gewisser Inkompatibilitäten und Leistungsunterschiede zwischen den beiden Plattformen viele nützliche Funktionen verloren gehen.

Übrigens, Das ist mit Abstand der umfassendste Artikel, den ich je über MVC/MVP gelesen habe.Für Windows-Anwendungen (Desktop oder CE) würde ich die Verwendung der Taligent Model-View-Presenter-Version ohne Interaktionen, Befehle und Auswahlmöglichkeiten empfehlen (z. B. führt der Controller/Präsentator die gesamte Arbeit aus).

Andere Tipps

Keiner von Ihnen (Davidg oder Kevin Pang) hat darauf geachtet, dass er daran interessiert ist WinForms, nicht Webformulare.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 vorantreibt.Er stellte seine Frage ganz gut.

Es gibt auch die OpenNETCF IoC-Framework (was meiner Meinung nach nicht existierte, als diese Frage gestellt wurde), das viel leichter ist, aber im Objektmodell der Mobile Software Factory von P&P ähnelt.

@DavidG und @KevenPang

MVC ist nicht auf eine Web-Technologie beschränkt, tatsächlich war das ursprüngliche Smalltalk-MVC für Desktop-Anwendungen gedacht.

Es funktioniert so:

  • Ansicht = Kundenformular
  • Controller = Packt Client-Ereignisse zusammen und marshallt zwischen Ansicht und Modell
  • Modell = Anwendungsdaten und Geschäftslogik

In reinem Smalltalk MVC ist die Ansicht nicht auf ein Formular beschränkt, sondern kann eine beliebige Darstellung von Modelldaten sein. Wenn wir beispielsweise ein Modell hätten, das eine Tabelle darstellt, könnten wir die folgenden Ansichten haben:

  • Tabellenansicht
  • Druckerfreundliche Ansicht
  • Symbolansicht

usw., das Modell wäre dasselbe, aber die Ansicht würde in jedem Fall ein anderes Ausgabeobjekt erstellen.

Abgesehen davon weiß ich nicht, ob es ein solches Framework für das .NET Compact-Framework gibt. Ich wollte nur darauf hinweisen, dass MVC nicht WebApp bedeutet.

Schauen Sie mal rein mFlys mobile MVC.Ich habe es noch nie verwendet, aber es wird als vernünftiges MVC-Framework für die CF angeboten.

@davidg:„Warum sollten Sie MVC auf Compact Framework wollen?“

Warum nicht?Es ist nicht so, dass es der Webentwicklung vorbehalten wäre, es ist ein Muster.

Bearbeiten:Die obigen Poster sind korrekt.Ich habe MVC gesehen und sofort an Webformulare gedacht.Entschuldigen Sie.Ignorieren Sie dies gerne.Ich werde meine ursprüngliche Nachricht an Ort und Stelle belassen, nur für den Fall, dass jemand es tut Ist Interessiert an Webformularen MVC benötigt die Links.:-)

Es gibt ein paar MVC-Frameworks, von denen keines sehr „leichtgewichtig“ ist, aber MVC stellt eine ziemlich große Abkehr von Webformularen dar, daher ist Folgendes zu erwarten:

  • ASP.NET MVC – Dies ist Microsofts Versuch eines MVC-Frameworks.Es befindet sich noch im Vorschaumodus, sodass Sie es nach eigenem Ermessen verwenden können, aber mehrere Benutzer verwenden es bereits in ihren Produktionsanwendungen.Mit einer einfachen Google-Suche finden Sie ausführliche Dokumentation dazu, da es bei .NET-Nutzern immer beliebter wird.
  • Castle MonoRail – Das MonoRail-Framework ist ein Open-Source-MVC-Framework, das es schon seit geraumer Zeit gibt und das in mehreren Produktionsanwendungen verwendet wird.Es ist definitiv ausgefeilter als das ASP.NET MVC-Framework, aber angesichts des Aufwands, den Microsoft in sein MVC-Angebot investiert, denke ich, dass sich relativ bald etwas ändern wird.
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top