2009-04-16 10 views
2

Ich habe eine DVD-Kataloganwendung, die ich vor ein paar Jahren mit MFC geschrieben habe. Datensätze werden in einer SQLite-Datenbank gespeichert, also ist es im Prinzip eine CRUD-App. UI-weise hat es eine Baumansicht auf der linken Seite, eine Listenansicht (Gitter) auf der rechten oberen Ecke und eine HTML-Ansicht (eingebetteter IE) auf der rechten unteren Ecke. Nichts Außergewöhnliches.Welche Sprache/Plattform würden Sie für eine Shareware/Freeware-Desktop-Anwendung verwenden?

Ich wollte die App mit mehr Funktionen aktualisieren, aber ich habe Java EE in den letzten paar Jahren verwendet und ich erkannte, dass ich mit MFC überhaupt nicht produktiv war. Also denke ich, dass ich vielleicht etwas anderes verwenden sollte, um meine Produktivität zu steigern. Cross-Plattform wäre ein großer Bonus, aber es ist nicht unbedingt erforderlich.

Hier sind die Optionen auf der Grundlage meiner Forschung:

  • Java/Swing: Ich kann meine Java-Kenntnisse nutzen; großartige Bibliotheken von Drittanbietern (wie Spring für IoC und Hibernate für ORM); plattformübergreifend Nachteil ist, JRE für Benutzer erforderlich ist; Swing scheint im "Maintenance" -Modus zu sein und bekommt von Sun keine große Aufmerksamkeit.
  • C++/Qt: native Anwendung; plattformübergreifend. Aber ich bin neu in Qt so Ich muss es zuerst lernen.
  • C#/WPF: WPF scheint die Zukunft der Windows-GUI-Entwicklung zu sein, und ich bin beeindruckt von einigen WPF-Beispiel-Apps. I habe einige Erfahrung mit C#, aber ich müssen lernen, WPF. Nachteil ist, nur Windows ; .NET 3.5-Laufzeit erforderlich.

Was würden Sie verwenden, wenn Sie in meiner Situation wären? Vielen Dank im Voraus für Anregungen.

Antwort

4

Wenn Sie einige neue Fähigkeiten während der Entwicklung dieser Anwendung lernen möchten, dann ist C#/WPF und LINQ in C# 3.0 wirklich toll, wenn Sie es nicht in Java hatten.

Wenn Sie nur auf Geschwindigkeit gehen wollen, dann antworten Sie bereits Ihre eigene Frage, Java/Swing. Es ist, was du gut kannst.

4

Ich bin eigentlich ein großer C# -Fan, aber da du gesagt hast, dass Cross-Plattform wäre ein großer Bonus, denke ich, dass Qt könnte eigentlich besser dafür sein. C# kann über Mono plattformübergreifend sein, aber in dieser Hinsicht hatte ich bessere Ergebnisse mit Qt. Sie haben auch wirklich gute Dokumentation in QtAssistant, um loszulegen.

2

Nun, wenn Sie wirklich eine Klassenplattform Art von Anwendung möchten, würde ich es in eine Webanwendung konvertieren und hosten. Auf diese Weise könnte, wenn ein Benutzer DVD-Informationen oder ein DVD-Deckblatt hochlädt, ein anderer Benutzer die bereits in das System eingegebenen Informationen nutzen.

Wenn Sie für den Desktop zu entwickeln versuchen, fühlen Sie sich wie es ist eine Anwendung für diese Plattform mit den Betriebssystem-UI-Tools gemacht. Und für Windows, wählen Sie Ihre 3. Option C#/WPF.

+0

Sie können eine Web-Anwendung sein müssen Internet bereit zu sein. WebStart schafft es gut. Wenn Sie eine Windows-Integration (oder die Integration mit Nicht-Windows-Desktops) benötigen, können Sie sicher geeignete plattformspezifische Java-Bibliotheken finden. –

1

Wenn Sie in Ihrer MFC-App Code für Nicht-UI haben, den Sie gerne wiederverwenden möchten, sollten Sie QT in Erwägung ziehen. Ansonsten wählen Sie, was immer Sie lieber lernen möchten.

1

Anstelle von C#/WPF könnten Sie Silverlight einen Blick geben. Ihre App scheint so einfach zu sein, dass Sie nicht viel Zeit zum Laufen brauchen würden. Ähnlich den Demos, die auf Konferenzen gezeigt werden.

Sobald Sie die Grundlagen haben, wird es ziemlich einfach sein, einige coole Features wie Animationen, Filmclips, Albumcover, Coverflow-ähnliche Schnittstelle usw. hinzuzufügen.

Sie können Windows/Mac-Benutzer und möglicherweise Linux mit Moonlight zielen. Aber ich habe Linux in den letzten 8 Jahren nicht angeschaut, daher kann ich wirklich nicht viel dazu sagen.

3

Betrachten Sie PyQt + Python auch, wenn Ihre Produktivität ein großes Problem ist. Vertrauen Sie mir, wenn ich sage, dass die Lernkurve für Qt es wert ist und nicht so schwer, wie es auf den ersten Blick scheint.

Sqlite-Unterstützung ist in den Python-Standardbibliotheken und dem QSql-Modul in Qt, wenn Sie dies bevorzugen.

PyQt + Python ist auch eine plattformübergreifende Option, da Python für viele Plattformen und Qt's plattformübergreifend verfügbar ist.

Die Steuerelemente, die Sie in Ihrer Anwendung erwähnt haben, sind alle in Qt verfügbar.

3

Das einzige andere Werkzeug außer Raw C++ ist Delphi. Zeitraum.

Mit anderen Tools haben Sie Probleme bei der Bereitstellung.

Mit Delphi werden Sie native Exes produzieren, in sich abgeschlossen. Auch die Datenbankverbindung ist großartig.

Sie werden nie enttäuscht sein durch fehlende Steuerelemente oder 3D-Party-Tools, viel mit Quellcode und mit kostenlosen/kommerziellen Toolset.

Und die Kompilierung Zeiten sind die schnellsten in dieser Galaxie;)

Also, wenn Sie in ernst bieten no-Hasle-App für Ihre Kunden, und die Kunden sind nicht technisch orientiert wie Entwickler könnte so sein verwirrt denn welche der 4 .NET Runtimes installieren, wollen minimale Unterstützung, einfache Downloads, Click-Click-Install-Go, Apps, die sofort funktionieren wie Skype, TopStyle (mit Delphi) und others, dann ist Delphi/C++ das einzige Möglichkeit. Ernst. Die EINZIGEN Optionen.


Wenn Sie einen Querplataform Lösung wollen, arbeiten Freepascal/Lazarus könnte dann, wenn Ihr GUI minimalistisch ist.

1

Mit Eclipse RCP erhalten Sie Java, plattformübergreifende Entwicklung (siehe Delta Pack), natives Aussehen (über SWT) und eine großartige Framework-Sammlung für die Desktop-Entwicklung (deklarative Benutzeroberfläche, Plugin-Verwaltung usw.). Sie sollten das unbedingt ausprobieren.

3

In den meisten Fällen, solange der Umfang des Projekts relativ klein ist und die Rechenanforderungen bescheiden sind, tendiere ich dazu, TCL/Tk zu verwenden. Ich habe noch keine Gui-API gelernt, in der ich produktiver bin als tk (um nicht zu sagen, dass es keine gibt, nur dass ich mehrere ausprobiert habe und sie langsamer fand). TCL ist nicht die wunderbarste Programmiersprache, obwohl es eine Reihe von Add-Ons gibt, die sehr hilfreich sind, speziell und tcllib.

Der Grund, warum ich dies anstelle von anderen Systemen, bevorzuge ich Codierung in Python, zum Beispiel, weil die Bereitstellung mit tcl/tk ist in der Nähe unschlagbar. Mit Starkit haben Sie am Ende eine einzige Datei doppelt klickbare Anwendung, die kein Installationsprogramm benötigt, und ist trivial portabel.

+0

Dem stimme ich zu, obwohl wir uns mit der Definition von "einigermaßen klein" wahrscheinlich nicht einig sind. Ich denke, Tcl skaliert gut zu Dutzenden oder Hunderttausenden von Codezeilen, wenn es richtig ausgeführt wird. Nicht dass du so viele brauchst. Ich habe zur Zeit eine zu 90% fertig gestellte CRUD-App auf meinem USB-Stick, die momentan nur 2000 Zeilen Code enthält. –

0

Ich ging die C++/wxWidgets (aber du könntest Qt) Route ein paar Monate zurück, wenn fast genau das gleiche Szenario präsentiert (Upgrade einer App mit einer SQLite db). wxWidgets war ziemlich leicht zu erlernen, hatte alles, was ich brauchte, und war viel einfacher als MFC.Der beste Teil war, dass ich einen guten C++ - Wrapper für SQLite auf CodeProject gefunden habe (z. B. CPPSQLite) und die ganze Sache in kürzester Zeit zum Laufen brachte ... Das Projekt verkaufte mich auf wxWidgets, für den Fall, dass du es nicht sagen kannst.

0

Ich würde tatsächlich etwas genau wie Adobe Luft betrachten. Es ist plattformübergreifend und kann html/javascript-basiert sein, so dass die Chancen stehen, dass Sie nicht viel lernen werden, außer vielleicht einer Javascript-Bibliothek oder zwei. Er kann mit einem lokalen Datenspeicher oder über das Interweb mit einem Webservice oder RESTFUL-Dienst kommunizieren. Die Entwicklung ist kostenlos mit aptana. Sehen Sie sich einige der Dinge, die in es geschrieben:

http://www.adobe.com/products/air/showcase/