Was ist der Unterschied zwischen GTK # und Windows Forms?

9

Was ist der Unterschied zwischen GTK # und Windows Forms? Sind sie völlig anders?

Danke

    
Josh 28.04.2009, 08:44
quelle

4 Antworten

23

Gtk # :

GTK # ist eine .NET-Bindung für das Gtk + -Toolkit. Das Toolkit ist aus Gründen der Geschwindigkeit und Kompatibilität in C geschrieben, während die GTK # -Bindung eine benutzerfreundliche, objektorientierte API für die verwaltete Verwendung bietet. Es ist in aktiver Entwicklung durch das Mono-Projekt, und es gibt verschiedene reale Anwendungen, die es verwenden ( Banshee , F-Spot , Beagle , MonoDevelop ).

Im Allgemeinen werden GTK # -Anwendungen mit MonoDevelop geschrieben, das einen visuellen Designer für die Erstellung von GTK # -GUs bietet.

Plattformen: Unix, Windows, OSX

Pros:

  • Gute Unterstützung für die Zugänglichkeit durch sein Gtk + Erbe.
  • Layout-Engine ideal für die Handhabung internationalisierte Umgebungen und passt sich der Schriftgröße an, ohne zu brechen Anwendungen.
  • Anwendungen integrieren sich mit dem Gnome Desktop.
  • API ist den Gtk + -Entwicklern bekannt.
  • Große Gtk + -Gemeinschaft.
  • Ein Win32-Port ist verfügbar, mit natives Aussehen auf Windows XP.
  • Die API ist dabei ziemlich stabil Punkt, und syntaktischer Zucker wird hinzugefügt, um es zu verbessern.
  • Unicode-Unterstützung ist außergewöhnlich.

Nachteile:

  • Gtk + Apps laufen wie fremd Anwendungen auf MacOS X.
  • Unvollständige Dokumentation.

Windows.Forms :

Windows.Forms ist eine von Microsoft entwickelte Bindung an das Win32-Toolkit. Als beliebtes Toolkit, das von Millionen von Windows-Entwicklern verwendet wird (speziell für interne Unternehmensanwendungen), entschied sich das Mono-Projekt für eine kompatible Implementierung (Winforms), die es Entwicklern ermöglicht, ihre Anwendungen einfach auf Linux und anderen Mono-Plattformen zu portieren.

Während die .Net-Implementierung eine Bindung an das Win32-Toolkit darstellt, wird die Mono-Implementierung in C # geschrieben, damit sie auf mehreren Plattformen arbeiten kann. Die meisten Windows.Forms-APIs arbeiten mit Mono, jedoch umgehen einige Anwendungen (und insbesondere Steuerelemente von Drittanbietern) gelegentlich die API und P / Invoke direkt an die Win32-API. Diese Anrufe müssen wahrscheinlich geändert werden, um an Mono zu arbeiten.

Im Allgemeinen werden Winforms-Anwendungen mit Microsoft Visual Studio oder SharpDevelop geschrieben, die beide einen visuellen Designer zum Erstellen bereitstellen Winforms-GUIs.

Plattformen: Windows, Unix, OSX

Pros:

  • Es gibt eine umfangreiche Dokumentation dafür (Bücher, Tutorials, Online-Dokumente).
  • Große Gemeinschaft aktiver Entwickler.
  • Einfachste Route, um eine existierende zu portieren Windows.Forms-Anwendung.

Nachteile:

  • Internationalisierung kann schwierig sein mit festen Layouts.
  • Sieht auf Nicht-Windows-Plattformen fremd aus.
  • Code, der die Win32-API aufruft, ist dies nicht tragbar.

Quelle: Auswahl des richtigen Toolkits

    
CSharper 29.04.2009, 11:27
quelle
8

Sie sind beide GUI-Toolkits, die jeweils ihre Stärken und Schwächen haben. Aus meiner Erfahrung:

  • Winforms erfordert keine Installation unter Windows, Gtk # erfordert die Installation unter Windows.
  • Winforms hat einen Designer in Visual Studio, Gtk # hat einen eigenständigen Designer und integriert in MonoDevelop.
  • Winforms ist an Windows gebunden, Gtk # ist plattformübergreifend.
  • Winforms ist langsam und flackert. Gtk ist schneller.
  • Die meisten Winforms-Steuerelemente sind Wrapper um Standard-Windows-Steuerelemente und bieten sehr eingeschränkte Funktionalität. Gtk-Widgets sind funktionsreicher.
  • Gtk ermöglicht das Erstellen von Formularen und Widgets mit komplexem Layout. Winforms bietet nur triviale Varianten des Layouts und FlowLayout & amp; TableLayout & amp; AutoSize ist zu schwach, um komplexe Formen zu verwenden, die ihre Größe ändern und automatisch an unterschiedliche Schriftgrößen und unterschiedliche Auflösungen angepasst werden können.
  • Cairo ist schneller und hat mehr Funktionen als Gdi + (Cairo unterstützt Ausgabe und Eingabe von mehr Dateitypen, z. B. svg, pdf)
  • Gtk # ist Open-Source, winforms ist nicht
  • Winforms und Gtk # haben Steuerelemente / Widgets von Drittanbietern (mit Gtk # ist es jedoch weniger nötig, weil grundlegende Steuerelemente wirklich gut funktionieren).

Kurz gesagt, ich würde die Verwendung von Winforms nicht empfehlen (außer wenn es einen starken Grund gibt, nicht mehr Abhängigkeiten als .NET FW zu haben), sondern Gtk # oder WPF.

    
dmitry_vk 28.04.2009 17:09
quelle
2

Sie sind verschiedene grafische Toolkits zum Erstellen von Fensteranwendungen mit unterschiedlichen Ursprüngen.

GTK # ist eine Bindung für die GTK-Bibliothek, die hauptsächlich für Linux / Unix gedacht ist. Es funktioniert auch unter Windows, aber es ist nicht die native Umgebung, für die es entworfen wurde.

Winforms ist ein weiteres Toolkit, das von Microsoft stammt.

Sie sind völlig unterschiedliche APIs, um die gleichen Ergebnisse zu erzielen, sind aber für eine Plattform besser geeignet.

Wenn Sie nach einem Multiplattform-Fenster in .net suchen, könnte Qt eine Option sein, da es jetzt LGPLed ist.

    
David Suarez 28.04.2009 08:57
quelle
0

Kurz gesagt: Ja

Beide sind GUI-Tookits, aber WinForms (wie der Name sagt) wurde hauptsächlich für Windows entwickelt. GTK wurde für Gimp entwickelt und ist ein Ansatz für ein Multi-Betriebssystem-Toolkit.

Wenn Ihre Anwendung nur unter Windows läuft, sollten Sie in den meisten Fällen WinForms verwenden.

Wenn Ihre Anwendung unter verschiedenen Betriebssystemen läuft (wie Linux, BSD, Windows, MacOS, ...), bevorzugen Sie GTK.

Für eine bessere Erklärung schauen Sie hier .

    
Xn0vv3r 28.04.2009 08:46
quelle

Tags und Links