Design Formulardaten

Programmiersprachen, APIs, Bibliotheken, Open Source Engines, Debugging, Quellcode Fehler und alles was mit praktischer Programmierung zu tun hat.
Antworten
Benutzeravatar
BeRsErKeR
Establishment
Beiträge: 689
Registriert: 27.04.2002, 22:01

Design Formulardaten

Beitrag von BeRsErKeR »

Hallo ich habe mal eine generelle Design-Frage. Speziell geht es um Formulare; damit meine ich grafische Oberflächen mit Daten. Also meinetwegen ein normaler Dialog oder auch ein HTML-Formular.

Als Beispiel will ich hier aber auf C# Forms (System.Windows.Forms) eingehen.

Die Daten werden innerhalb der Controls gehalten (z.B. in einer TextBox oder einem ListView). Die Daten sind dadurch fest verknüpft mit der Oberfläche und eigentlich nur die Anzeigedaten. Sagen wir mal ich habe eine Klasse, die auf den Daten arbeiten soll. Ich würde nun bei der Form die Daten abfragen. Prinzipiell kein Problem. Allerdings finde ich es von der logischen Seite her nicht korrekt. Die Form dient ja nur zur Eingabe und Anzeige der Daten, sie ist prinzipiell nicht dazu gedacht Daten zu verwalten.

Daher frage ich mich ob es rein aus Designgründen nicht eigentlich sinnvoll wäre, alle Daten auszulagern und mit der Form zu synchronisieren, während andere Programmteile auf den ausgelagerten Datensätzen arbeiten?

Wenn dem so ist, hat das natürlich wieder einige Nachteile. Man muss z.B. die Daten wie angesprochen synchronisieren, was fehleranfällig sein kann.

Als Vorteil sehe ich aber z.B. dass die eigentliche Datenverwaltung dann recht flexibel ist (es könnte sogar eine externe Datenbank sein). Allerdings rede ich hier auch von Datensätzen, die nur lokal benötigt werden. Das geht hin bis zu einfachsten Forms wo man nur seinen Namen eingibt. Auch dieser Name müsste mMn nach außerhalb der Form verwaltet werden.


Ich will hier nicht klugscheißen und mir ist bewusst dass es in vielen Fällen viel aufwendiger wäre sowas zu realisieren. Es geht mir nur mal um eine Diskussion über die Logik dahinter. Mich würden Meinungen dazu interessieren.

Danke für die Aufmerksamkeit. ;)
Ohne Input kein Output.
joggel

Re: Design Formulardaten

Beitrag von joggel »

Gibt es für sowas nicht das Model-View-Controller-Paradigma/Pattern?
Benutzeravatar
Artificial Mind
Establishment
Beiträge: 802
Registriert: 17.12.2007, 17:51
Wohnort: Aachen

Re: Design Formulardaten

Beitrag von Artificial Mind »

Du sprichst so wie ich das sehe vom MVC-Pattern, welches prinzipiell sinnvoll für GUIs ist und auch in einigen System verwendet wird. (z. B. kann man in Qt per MVC sein GUI programmieren)

Persönlich finde ich es für Windows Forms in Ordnung, dass die Daten direkt angezeigt werden, da deine Auslagerung und Synchronisierung einen ziemlichen Mehraufwand bedeuten und für einfach Dialoge imho Overkill sind. Wenn man allerdings viele Daten oder große Formulare hat, ist es durchaus sinnvoll und wird auch gemacht. Es gibt in Windows Forms afaik einige Controls, die sogenannte "DataSources" haben können, aus denen dann die Daten gezogen werden. Alternativ gibt es einige 3rd-Party für größere Formulare, Reports, Tabellen usw. die dann direkt externe Datenquellen unterstützen.
Benutzeravatar
Chromanoid
Moderator
Beiträge: 4254
Registriert: 16.10.2002, 19:39
Echter Name: Christian Kulenkampff
Wohnort: Lüneburg

Re: Design Formulardaten

Beitrag von Chromanoid »

Ich finde das Model-View-ViewModel-Pattern ziemlich gut. Viele moderne GUI-Frameworks unterstützen das auch ganz gut (Siehe WPF und Flex). Für MVC ist es bei den meisten GUI Frameworks oft schwer die View vom Controller zu trennen. Das ist bei Windows Forms glaube ich auch so. Am besten kann man sich IMO das Pattern klar machen, wenn man sich eine Webandwendung vorstellt, HTML->View, Anfrageverarbeitung->Controller, Model->Datenmodell und Implementierung der fachlichen Funktionen. Bei XCode und MacOS/iOS ist die Entwicklung mit MVC übrigens ziemlich gut gelungen, da werden Views und Controller nämlich von Haus aus schön getrennt.
Tejio
Establishment
Beiträge: 107
Registriert: 11.11.2010, 11:33

Re: Design Formulardaten

Beitrag von Tejio »

Ich nutze bei WPF- und Silverlight-Projekten gerne das MVVM-Pattern. Mit Hilfe von Caliburn Micro kann man damit ganz nette Sachen sauber und hat nebenbei eine saubere Klassenstruktur. Eine saubere Klassenstruktur im Sinne von: Ich habe meine Daten CarData, den View CarView und das ViewModel CarViewModel mit der Business Logik. Als Hilfe, wo der Unterschied zwischen MVC und MVVM liegt, würde ich dir die folgenden Beiträge empfehlen:
Als Unterstützung bei der Entwicklung der Oberfläche kann man Expression Blend nutzen.
Benutzeravatar
Chromanoid
Moderator
Beiträge: 4254
Registriert: 16.10.2002, 19:39
Echter Name: Christian Kulenkampff
Wohnort: Lüneburg

Re: Design Formulardaten

Beitrag von Chromanoid »

Soweit ich das verstehe sollte die Business Logik nicht im ViewModel sondern eher beim Model angesiedelt sein? Ist das ViewModel nicht eher das was man in die XAML Templates steckt?
Benutzeravatar
BeRsErKeR
Establishment
Beiträge: 689
Registriert: 27.04.2002, 22:01

Re: Design Formulardaten

Beitrag von BeRsErKeR »

Vielen Dank für die Hinweise. Das Pattern war mir sogar geläufig. Allerdings hab ich mich damit noch nie wirklich beschäftigt. Die Links waren auch sehr interessant. Ich glaub ich hab einiges verpasst in den letzten Jahren, gerade was die Windows-Welt angeht. Silverlight hatte ich nur mal am Rande gehört und Expression kannte ich noch gar nicht. Auch mit der WPF habe ich mich noch nicht näher beschäftigt. Scheint ja gar nicht mal so unnütz zu sein.
Ohne Input kein Output.
Tejio
Establishment
Beiträge: 107
Registriert: 11.11.2010, 11:33

Re: Design Formulardaten

Beitrag von Tejio »

[advertising]

Wenn du professionelle .Net-Anwendungen mit Silverlight und WPF schreiben möchtest, dann würde ich dir die Telerik-Tools empfehlen. Sie arbeiten überaus performant, sind einfach zu verwenden und lassen sich sehr gut gestalten. Außerdem enthalten sie Controls für alltägliche Einsatzfälle, wo dir Microsoft nichts passendes anbietet. Als Unterstützung im Programmieralltag würde ich dir die folgenden Visual Studio-Extensions empfehlen: StyleCop, Resharper, VSCommands und meinen Liebling, den Default Browser Switcher (mein Visual Studio setzt meinen Default-Browser gerne zurück auf Google Chrome. Leider greift der Debugger für Silverlight nur unter IE, deswegen muss ich immer wieder diesen Wechsel durchführen....)

[/advertising]

Das sind sie so die wichtigsten Sachen für den Anfang. Wenig überraschend kann man die WCF-SOAP-Webservices sehr gut und leicht mit Silverlight verbinden.
Antworten