Posted on Leave a comment

WPF und Windows Forms: GUIs im .NET-Framework

WPF und Windows Forms: GUIs im .NET-Framework

Moderne Computerprogramme verwenden in der Regel eine grafische Benutzeroberfläche. Diese wird häufig auch als GUI bezeichnet – als Abkürzung für graphical user interface. Dabei erscheint ein Fenster, das verschiedene Elemente enthält, die der Interaktion dienen. Dabei kann es sich um eine einfache Textausgabe, um ein Eingabefeld, um einen Button oder um viele weitere Schaltflächen handeln. Diese dienen dazu, dem Anwender Inhalte anzuzeigen oder Befehle und Daten von diesem entgegenzunehmen. Das ist deutlich einfacher und intuitiver als bei einem Konsolenprogramm, bei dem alle Eingaben in Schriftform erfolgen. Daher basieren fast alle modernen Programme auf GUIs.

Die Frameworks Windows Presentation Foundation (WPF) und Windows Forms (WinForms) dienen dazu, GUIs zu erstellen. In vielen Fällen ist es möglich, zwischen beiden Techniken auszuwählen. Dieser Artikel stellt die beiden Alternativen mit ihren jeweiligen Vor- und Nachteilen vor. Das ist insbesondere dann von Bedeutung, wenn Sie selbst lernen wollen, eine grafische Benutzeroberfläche zu gestalten. In diesem Fall müssen Sie sich für eines der beiden Frameworks entscheiden. Anhand dieses Artikels können Sie abwägen, welche Technik sich für Ihre Bedürfnisse besser eignet.

Ein Framework für die Erstellung grafischer Benutzeroberflächen

Wenn Sie ein Computerprogramm mit einer grafischen Benutzeroberfläche erstellen, gestalten Sie die Fenster, die hierbei zum Einsatz kommen, in der Regel nicht von Grund auf selbst. Für diese Aufgabe wären weit fortgeschrittene Programmierkenntnisse erforderlich. Darüber hinaus wäre der Aufwand enorm, wenn Sie für jedes Fenster und jedes darin enthaltene Element zunächst einmal das Erscheinungsbild und die Funktionsweise von Grund auf definieren müssten.

Deshalb kommen zu diesem Zweck sogenannte Frameworks zum Einsatz. Diese bieten Ihnen vorgefertigte Funktionen an, mit denen Sie beispielsweise ein Fenster erstellen oder einen Button einfügen können. Dafür sind nur wenige Befehle notwendig. Außerdem stehen vielfältige Funktionen bereit, mit denen Sie die Größe, die Farbe und andere Aspekte des Erscheinungsbilds beeinflussen können. Das entsprechende Framework setzt dann diese Befehle um und sorgt dafür, dass die entsprechenden Elemente an der gewünschten Stelle auf dem Bildschirm erscheinen. Der Umgang mit diesen Hilfsmitteln ist für die Erstellung eines modernen Programms unverzichtbar. Als Programmierer ist es daher sehr wichtig, sich in diese Technik einzuarbeiten.

WPF und Windows Forms – Bestandteile des .NET-Frameworks

Bevor wir uns dem Vergleich der beiden Frameworks widmen können, stellt sich noch die Frage, zu welchem Zweck wir diese einsetzen können. Wie bereits dargestellt, dienen sie der Erstellung von grafischen Benutzeroberflächen. Um diese zu erzeugen, ist jedoch auch eine Programmiersprache erforderlich. Jede Sprache benötigt ein GUI-Framework, das genau auf sie zugeschnitten ist.

Sowohl WPF als auch WinForms stellen einen Bestandteil des .NET-Frameworks dar. Dabei handelt es sich um eine Sammlung von Entwicklungswerkzeugen, Klassenbibliotheken und Schnittstellen, die der Softwarehersteller Microsoft 2002 präsentierte. Diese dienen der Erstellung von Programmen für das Betriebssystem Windows. Um innerhalb des .NET-Frameworks grafische Benutzeroberflächen zu erstellen, kam ursprünglich WinForms zum Einsatz. 2006 ergänzte Microsoft diese Technik jedoch um WPF. Seither sind beide Frameworks parallel verfügbar. Das bedeutet, dass Sie sich für jede dieser Alternativen entscheiden können, wenn Sie ein Programm im .NET-Framework erstellen.

Für welche Programmiersprachen eignen sich WPF und WinForms?

Da sowohl WPF als auch WinForms Bestandteil des .NET-Frameworks sind, können Sie diese Techniken für alle Programmiersprachen verwenden, die dieses unterstützt. Dabei ist insbesondere die Programmiersprache C# zu nennen. Diese ist weit verbreitet und die Mehrheit der Programme, die in C# verfasst sind, verwendet entweder WPF oder WinForms. Doch ist dies nicht die einzige Anwendungsmöglichkeit für diese beiden GUI-Frameworks. Darüber hinaus können Sie sie für Programme verwenden, die in VB.NET verfasst sind. Außerdem ist es möglich, sie für die Programmiersprache C++/CLI zu verwenden. Dabei müssen Sie beachten, dass es sich hierbei nicht um die weit verbreitete Programmiersprache C++ handelt. Diese ist weder zu WPF noch zu WinForms kompatibel. Bei C++/CLI handelt es sich um eine Adaption von C++, die Microsoft für das .NET-Framework erstellt hat. Diese ist zwar sehr ähnlich zu C++, aber nicht mit dieser Sprache identisch.

WPF und Windows Forms im Vergleich

Nachdem wir die wichtigsten Grundlagen und die Anwendungsmöglichkeiten von WPF und WinForms erklärt haben, können wir uns nun den Vor- und Nachteilen dieser beiden Systeme widmen. Anhand der hier dargestellten Punkte können Sie entscheiden, welche dieser Techniken Sie erlernen wollen.

Die Aktualität der Systeme

Ein wichtiger Punkt ist hierbei die Aktualität der Systeme. WinForms ist die ältere der beiden Techniken. Sie entstand bereits zu den Anfangszeiten des .NET-Frameworks. Das mag einige Vorteile mit sich bringen – beispielsweise ist diese Technik bereits länger erprobt, sodass die Wahrscheinlichkeit für Fehler nur gering ist. Aber auch WPF ist mittlerweile sehr robust, sodass in dieser Hinsicht kaum Unterschiede bestehen.

Als neueres Framework bietet WPF jedoch eine modernere Technik. Diese entspricht dem aktuellen Stand und ermöglicht die Gestaltung von grafischen Benutzeroberflächen mit vielen praktischen Funktionen und mit einer ansprechenden Gestaltung. Daher ziehen die meisten Programmierer mittlerweile WPF vor. Lediglich wenn Sie sich auf die Wartung älterer Programme spezialisieren möchten, die häufig noch mit WinForms verfasst sind, bietet es Vorteile, diese Technik zu erlernen.

Einfacherer Einsteig mit Windows Forms

Wenn Sie gerade erst damit beginnen, grafische Benutzeroberflächen zu gestalten, möchten Sie sicherlich möglichst schnell ansprechende Fenster mit vielen verschiedenen Funktionen gestalten. Daher stellt es eine wichtige Frage dar, welche dieser Techniken einfacher zu erlernen ist.

In dieser Hinsicht bietet WinForms einige Vorteile. Dieses Framework zeichnet sich dadurch aus, dass Sie damit sehr schnell ansprechende Ergebnisse erzielen. Die ersten Fenster sind auf diese Weise schnell erstellt.

Bei WPF fällt der Einstieg hingegen etwas schwerer. Selbst für sehr einfache Fenster und Funktionen müssen Sie hierbei zahlreiche Details beachten. Daher ist deutlich mehr Zeit notwendig, um zu erlernen, wie Sie Ihr erstes GUI-Programm erstellen.

Höhere Flexibilität bei WPF

Im vorigen Abschnitt haben wir erwähnt, dass es mit WinForms sehr einfach ist, die ersten Fenster zu erstellen. Sobald Sie jedoch ein Fenster mit etwas umfangreicheren Funktionen in Ihr Programm einfügen möchten, die vom Standard abweichen, wendet sich das Blatt allerdings. Hierbei zeichnet sich WPF durch eine deutlich höhere Flexibilität aus. Das bedeutet, dass Sie mit diesem Framework die Elemente auf einfache Weise an Ihre persönlichen Anforderungen anpassen können, ohne dass dadurch die Komplexität der Programme deutlich ansteigt.

Um dieses Verhalten zu verstehen, ist es sinnvoll, die Grundlage dieser beiden Techniken zu betrachten. Hierbei gibt es große Unterschiede. Bei WinForms handelt es sich nicht um eine vollkommen eigenständige Entwicklung. Diese Technik stellt lediglich eine Erweiterung der Standard-Windows-Bedienelemente dar. WinForms macht diese für das .NET-Framework verfügbar. Diese Standard-Bedienelemente können Sie daher auf einfache Weise in Ihr Programm einbinden. Sobald ein Element jedoch von diesem Standard abweichen soll, ist ein enormer Programmieraufwand erforderlich, der weit fortgeschrittene Kenntnisse erforderlich macht.

WPF wurde hingegen von Grund auf neu entwickelt. Dieses Framework bietet eine große Anzahl an unterschiedlichen Elementen. Diese können Sie nach Ihren Wünschen kombinieren und verändern. Um dies an einem Beispiel zu verdeutlichen, stellen wir uns vor, dass wir einen Button in ein Fenster einfügen wollen. Dieser soll nun nicht nur eine Beschriftung erhalten, sondern auch eine kleine Grafik. Die Buttons, die zu den Standard-Bedienelementen in Windows gehören, unterstützen jedoch keine Grafiken. Deshalb ist es notwendig, dieses Element von Grund auf selbst zu erzeugen. Dafür sind umfangreiche Kenntnisse notwendig und außerdem ist der Aufwand hierfür enorm. Mit WPF können wir jedoch in das Button-Element beliebige weitere Elemente einfügen – beispielsweise Schriftzüge und Grafiken. Daher ist die Erstellung eines Buttons, der auch eine Grafik enthält, nicht wesentlich komplizierter, als wenn Sie einen gewöhnlichen Button verwenden.

Vektor- und Pixelgrafiken

Ein weiterer wichtiger Unterschied zwischen den beiden Systemen besteht in der grafischen Darstellung. WPF verwendet Vektor-Grafiken. Das bedeutet, dass sich die Darstellung an Linien und anderen geometrischen Elementen orientiert. WinForms verwendet hingegen Pixel-Grafiken.

Bei vielen Anwendungen ergeben sich daraus kaum Unterschiede. Möchten Sie ein Element jedoch skalieren – also in einer anderen Größe darstellen – bieten Vektorgrafiken große Vorteile. Diese lassen sich problemlos an neue Größenverhältnisse anpassen. Bei Pixelgrafiken ist dies zwar ebenfalls möglich. Allerdings kommt es hierbei häufig zu einer Beeinträchtigung der Darstellung.

Trennung von Funktionalität und Design

Wenn Sie ein Programm mit WinForms erstellen, fügen Sie alle Vorgaben für das Design direkt in den Programmcode ein. WPF verwendet hierbei jedoch ein anderes System. Hierbei entstehen zwei separate Dateien. Zum einen müssen Sie die eigentliche Programmdatei erstellen. Diese fügt die einzelnen Elemente in das Fenster ein und weist diesen verschiedene Funktionen zu. Sie steuert den Ablauf des Programms. Darüber hinaus ist eine sogenannte XAML-Datei erforderlich. Diese enthält alle Vorgaben zum Design. XAML ist eine Auszeichnungssprache, die speziell zu diesem Zweck entwickelt wurde. Allerdings handelt es sich hierbei um eine Erweiterung von XML. Dabei ist es wichtig, zu beachten, dass XAML keine Programmiersprache ist. Das entsprechende Dokument enthält nur die Vorgaben zur Darstellung der einzelnen grafischen Elemente des Programms. Diese Angaben sind lediglich mit verschiedenen Tags versehen, um die Funktion deutlich zu machen.

Wenn Sie Ihr Programm komplett selbst erstellen, besteht kein großer Unterschied zwischen den beiden Techniken. Dabei bietet eventuell WinForms sogar einen kleinen Vorteil, da Sie sich hierbei nicht in die Struktur des XAML-Dokuments einarbeiten müssen. Das ist einer der wesentlichen Gründe dafür, dass WinForms für Anfänger etwas einfacher zu verwenden ist. Wenn Sie ein Programm in einem professionellen Umfeld entwickeln, findet hierbei jedoch häufig eine Spezialisierung statt. Während ein Software-Entwickler die Funktionen des Programms festlegt, kümmert sich ein Designer um das Layout. Die strikte Trennung zwischen Funktion und Design, die WPF auszeichnet, erleichtert hierbei die Zusammenarbeit deutlich. XAML ist eine einfache Auszeichnungssprache, die deutlich leichter als eine Programmiersprache zu erlernen ist. Daher kann sich der Designer hierbei problemlos einarbeiten und das Dokument so gestalten, dass es seine Entwürfe umsetzt. Der Software-Entwickler erstellt seinen Programmcode vollkommen unabhängig davon.

Die Sicherheit der Anwendungen

Ein weiterer Aspekt ist die Sicherheit der Anwendungen. Auch in diesem Bereich kann WPF überzeugen. Diese Technik bietet moderne Security-Features, die Angriffe auf Ihr Programm abwehren können.

Die Performance der Anwendungen

Schließlich ist es wichtig, einen Blick auf die Performance der beiden Techniken zu werfen. Auch hierbei bietet WPF Vorteile. Wenn Sie ein Programm entwickeln wollen, bei dem es auf eine schnelle Erledigung der Rechenprozesse ankommt, stellt WPF die bessere Wahl dar.

Fazit: WPF bietet in den meisten Fällen viele Vorteile

Wenn wir nun ein Fazit aus der Gegenüberstellung ziehen, stellen wir fest, dass es sich fast immer lohnt, WPF zu lernen – obwohl dies zu Beginn etwas komplizierter erscheinen mag. Dieses GUI-Framework bietet im Vergleich zu Windows Forms zahlreiche Vorteile. Dabei sind insbesondere die höhere Flexibilität, die einfachere Skalierbarkeit und die Trennung zwischen Funktionalität und Layout zu nennen. Auch hinsichtlich der Sicherheit und der Performance bietet WPF Vorteile. Deshalb nutzen die meisten modernen Programme diese Technik. Im Bereich der professionellen Software ist WinForms fast ausschließlich bei älteren Programmen zu finden. Obwohl der Einstieg bei WPF etwas schwieriger sein mag, lohnt es sich auch für Anfänger, sich von Beginn an in diese Technik einzuarbeiten.

Bildquelle: Licht-Ausmach-Män, https://de.wikipedia.org/wiki/Datei:WPF-Test-App-Button-w-Grid.png, Creative Commons by sa 2.0/de https://creativecommons.org/licenses/by-sa/2.0/de/legalcode

Ähnliche Produkte

Schreibe einen Kommentar