2009-06-04 5 views
2

Was sind die besten Möglichkeiten zum Verwalten von Code in einer Single-Form-App mit vielen verschiedenen Komponenten? Denken Sie beispielsweise an eine finanzielle App mit einer Produktauswahl zum Durchsuchen/Auswählen eines Produkts zum Anzeigen. eine Handvoll Echtzeit-Ticker für Preise, Zinssätze oder was auch immer; ein laufender Nachrichtenfeed; verschiedene Diagramme; ein Gitter, das lokal berechnete Werte anzeigt;Organisieren von GUI-Code in C#

usw.

würden Sie eine benutzerdefinierte Steuerung für jede einzelne Komponente zu erstellen, auch wenn sie nicht außerhalb dieser App verwendet werden, zu gehen? Oder könnten Sie es mit Klassen tun, die die Logik für jede Komponente implementieren und diese tatsächliche Steuerung irgendwie in der GUI aktualisieren? zwei Komponenten müssen möglicherweise miteinander interagieren, z.B. Sie klicken auf eine Zelle in einem Raster, und es bringt einige Diagramm (würde das Hauptformular behandeln Senden der Nachricht?)

Ich habe eine Angewohnheit der Form Code aufgebläht zu lassen, wie Features hinzugefügt werden und ich möchte wirklich vertraut werden mit einem besseren Weg. Ich arbeite mit C# (nicht mit WPF), aber ich denke, dass grundlegende Designprinzipien nicht unbedingt sprachspezifisch sind.

Antwort

0

Es hängt etwas ab, wie groß die Anwendung Maßstab ist, und auch die Lebensdauer der Anwendung.

In fast jeder vernünftig großen Anwendung würde ich empfehlen, einzelne Abschnitte in separate UserComponents zu trennen. Davon abgesehen gibt es viele Möglichkeiten, um darüber hinaus zu gehen, einschließlich der Verwendung von Plugins/DI, etc.

Ich würde empfehlen, die Composite Client Application Guidance für Ideen zu lesen (oder zumindest Skimming). Die Message-Passing-Fragen sowie die Fragen zu verschiedenen Ansätzen zur Verbindung einzelner Komponenten werden ausführlich diskutiert.

Es gibt viele Edelsteine, die in der Composite Client Appilcation Guidance relevant wären, obwohl Sie WPF oder Silverlight nicht verwenden. Viele der Abschnitte in der Anleitung sind nicht technologiespezifisch - sie beziehen sich mehr auf das Zusammenführen mehrerer Teile, fördern die Wiederverwendbarkeit und Flexibilität im Design usw. Diese gelten unabhängig von der verwendeten Technologie.

0

neige ich dazu, alles als eine benutzerdefinierte Steuerung zu tun und sie Platten für meine Platzierung verwenden. Ich erstelle dann eine neue Instanz des Steuerelements und füge es dem Panel hinzu.

Dies ermöglicht mir, benutzerdefinierte Konstruktoren zu machen, die ich nützlicher finde, während ich versuche, ein DI/IOC-Framework für mein aktuelles Projekt zu verwenden.