Frage

Ich erwäge eine Cross-Plattform-Desktop-Anwendung zu schreiben, zunächst für Mac / Windows, aber schließlich für Linux als auch.

Zur Zeit plane ich, es zu strukturieren wie folgt:

  • Mac UI mit Cocoa / Objective-C / Interface Builder
  • Windows-Benutzeroberfläche mit WPF
  • In Zukunft, Linux UI mit GTK #
  • Gewerbe- / Datenzugriffsschichten in C # - das heißt .NET unter Windows, Mono auf Mac / Linux

Dies wird unter Windows offensichtlich in Ordnung sein, ich bin ziemlich sicher, dass es auf Linux / Gnome gut gehen, basierend auf den GTK # apps, die ich je gesehen habe. Der Aufruf in Mono auf dem Mac, aber ... Ich denke, ich habe diese Optionen bekommen:

  • ObjC #
  • Dumbarton (sieht irgendwie tot)
  • Monobjc (dies würde bedeuten, die Mac-Benutzeroberfläche in C # statt Objective C zu schreiben - nicht so scharf auf diesem)

Meine Frage: Hat jemand hat keine Erfahrung im Aufbau von Anwendungen in einer ähnlichen Art und Weise? Irgendwelche Empfehlungen? Bin ich verrückt?

FYI - ich bin ziemlich pingelig Desktop-UIs „eins“ mit ihrem Host-Betriebssystemen zu sein, also bin ich nicht daran interessiert, klobig WinForms / Java / QT-Lösungen ...

War es hilfreich?

Lösung

Wenn jemand auf diese stolpert ...

MonoMac sieht aus wie es nach vorne die offensichtliche Art und Weise sein wird.

Andere Tipps

Für das, was es wert ist, ich bin hier von der Mac-Seite kommen., Aber ich denke, dass meine Kommentare universell einsetzbar sind.

Ihr erklärtes Wunsch Bei Anwendungen mit plattformspezifischen UI zu schreiben, denke ich ObjC # die einzige vernünftige Wahl. Es gibt Unmengen von Ressourcen bei der Umsetzung Mac-Seite UIs in Objective-C; Ich denke, es wäre eine Verschwendung von Zeit, zu versuchen, alle Ratschläge übersetzen Sie Monobjc finden, vor allem, wenn Sie in eine API ausführen, die Ihnen einige Hinweise drehen will und eine Funktion Handle übergeben und oh nein, was tun Sie jetzt . Das einzige, was Sie können Aktie zwischen Anwendungen ist das Modell-Code; Ich postulieren, dass es keinen Grund zu versuchen, die Dinge in der gleichen Sprache auf der Präsentationsseite zu halten, es sei denn, Sie denken, können nicht oder nicht in der Lage sein, sich mit Objective-C.

Ich habe seit 2 Jahren auf einem kommerziellen Desktop-Mac-Anwendung arbeitet in C # geschrieben. Wir haben eine Bibliothek in Objective C geschrieben, mit einfachen C-Funktionen ausgesetzt. Unsere C # -Code PInvokes in die einfachen C-Funktionen.

Ursprünglich war die Anwendung verwendet MonobjC erwies sich jedoch als MonobjC zu umständlich zu arbeiten. Viele Mac-APIs übersetzen nicht sehr gut in C # oder Sie benötigen ein Experte in Objective C und MonobjC Semantik sein, um eine einfache Funktion Anruf zu tätigen. Objective C der Message-Passing-System übersetzt nicht immer auf einen C # Methodenaufruf.

Als ich MonoMac ausgewertet, es war weniger ausgereift als MonobjC. Ich habe nicht den Eindruck, dass es keine wirkliche Verbesserung gegenüber MonobjC gemacht, mit Ausnahme von consistant mit Monotouch Stil bleiben und Mustern.

So empfehle ich eine Form von PInvoking in Objective C von C # oder nach der Embedding Mono Führung. http://www.mono-project.com/Embedding_Mono

Sie einen Blick auf Dubrovnik . Dies ist eine aktualisierte Version von Dumbarton, die einen Codegenerator enthält.

Der Code-Generator erleichtert stark die Notwendigkeit, die eingebettete API direkt zu codieren. Zeigen Sie einfach den Generator an Ihrem verwalteten Baugruppen und integriert die Obj-C Ausgabe in Ihr Projekt.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top