web-dev-qa-db-ja.com

Qt / C ++と.NET / C#の選択

数か月間取り組んできたデスクトッププロジェクトがあり、WindowsとMacで実行したいと考えています。プロジェクトを始めたとき、私はC++のQt 4.8でそれを書き始めました。開発は順調に進み、アプリケーションはWindowsとMacの両方でかなり期待どおりに動作します。この時点で、約40%完了しています。

簡単な背景情報として、アプリケーションは電子メールクライアントのバリエーションです。

しかし、私はC++/Qtでこれまでに行ったことを放棄し、Xamarin Studioのライセンスを購入し、C#でアプリケーションを作成することを考えています。

私がこれを強く検討しているいくつかの理由があります:

  • 私もこのアプリケーションのモバイルバージョンをリリースしたいと思います。C#を使用すると、多くのバックエンドコードをすべてのプラットフォームで再利用できます。

  • このアプリをApple and Windowsストアで公開します。QtアプリをAppleストアで公開していますが、 WindowsストアにQtアプリを公開している人について何も読んだり見つけたりできませんでした。言うまでもなく、Qt 4.8にはMetro UIのサポートが組み込まれていません(Qt 5.0を使用する必要があるため、大きな部分を書き換える必要があります)とにかくコードの)。

  • 長年C#とC++の両方で働いてきたため、全体的に私はC#で「より幸せに」開発しています。

ただし、コースに滞在する理由はいくつかあります。

  • 上記で述べたように、私はこのプロジェクトの最初の具体化で約40%完了しています。

  • 私のプログラムの大部分はLuaに依存しており、C++でネイティブLuaライブラリーを非常に簡単に使用できます。Mono/ C#で見たLua実装がどの程度うまく機能しているかはわかりません。

  • デスクトップアプリの2つの個別のUIコードを維持する(したがって、Qtでは#include <QtCore> WindowsおよびMacでは、C#ではusing System.Windows.Forms Windowsでは「MonoMacを使用して」。 Mac)

正直なところ、この時点で私はC++でやり直す傾向があり、C++にあるものをガイドとして使用して、リリースを約1か月遅らせます(私の人生の他の責任を考慮するのにどれくらい時間がかかるかについて) )。

私は同じような状況にあった人々からの意見を探していました。また、C#を使用してWindowsおよびMacストアでアプリを公開したことのある人からの連絡に特に興味があります。

どう思いますか?

5
Addy

「草はより環境に優しい」症候群にだまされないでください。あなたは何かが完全になり、それが機能し、あなたが望むように将来他のプラットフォームでも利用できるようになるでしょう...それでなぜ今変更したいのですか?

あなたは現在の状況を知っています。変更した場合、もう一度直面する問題を発見する必要があります。これが 最初から書き直さない理由の1つです

9
gbjbaanb

一から書き直すことは一般的に良い考えではないと思いますが、あなたが言及したいくつかの技術的ポイントに対処するために:

私もこのアプリケーションのモバイルバージョンをリリースしたいと思います。C#を使用すると、多くのバックエンドコードをすべてのプラットフォームで再利用できます。

特に理由はありません C++コードを再利用できなかった理由 モバイルプラットフォームの場合。これはC++愛好家にとって理想的な状況ではありませんが、実現可能です。

私のプログラムの大部分はLuaに依存しており、C++でネイティブLuaライブラリーを非常に簡単に使用できます。Mono/ C#で見たLua実装がどの程度うまく機能しているかはわかりません。

.NET Frameworkでのスクリプト作成は、一般に少し注意が必要です。スクリプトをリロードするには、 特にスクリプト用にいくつかのAppDomainを管理する必要があります 。スクリプトのいくつかの使用例で暗示されているように、スクリプトを頻繁に変更する予定の場合、これは考慮すべき重要な要素です。

さらに、前回チェックしたとき(これは後で簡単に変更されている可能性があります)、. NETのLuaバインディングは、Cの遺産のために使用するのが非常に面倒でした。いくつかのDLR Luaプロジェクトがあり、私が当時使用しようとしていたライブラリよりも優れている場合とそうでない場合があります。 2つ以上のリンクを投稿することはできません。それ以外の場合は2つにリンクしますが、お好みの検索エンジンを使用できます。

4
Joel