24

現在、次のような複数のモバイルプラットフォームでC#プログラミングを使用できます。

(見逃した場合は自由に編集してください)もちろん、UIのプログラミング作業はまだですが、アプリのメインライブラリを共有することはできます。

モノプロジェクトとスーパーヒーローのミゲル・デ・イカザの周りに集まったチームに感謝します。彼らの努力は貴重です。

私を悩ませているのは、これらのオプションの利点は何ですか?複数のモバイルプラットフォーム間で1つのアプリを維持するコストは、パフォーマンスを向上させるために各ライブラリを個別にコーディングするよりも障害が少ないですか。各言語の学習曲線?.NET忍者対すべての取引のジャックであること

または、ネイティブ環境でプログラムされたアプリのバイナリのサイズが小さく、最適化されている可能性があり、新しいプラットフォームのOSアップデートのサポートを待つ必要があることを忘れないでください。

更新:明らかに、考慮すべきことがもう1つあり、それはサポートです。NovellはAttachmateGroupに買収されているため、Monoチームはすべて解雇されます。ただし、Miguel De Icazaが率いるチームのコアメンバーは、 MonoMobile開発ツールをゼロから再発明する新会社 Xamarinを設立しました。

4

8 に答える 8

19

私の意見では、単一の環境(つまり、C#/。NET)を使用することの大きな利点は、コードの移植性です。そして、LINQのようなクールなものは、一度慣れると、それなしでは生きていけません。ただし、いくつかのモバイルOS(iOS、Android、WP7)は、UIに関してまったく異なります。

そして、私があなたのアプリケーションについて誤解していなければ、それがモバイルデバイス上で実行される場合、それはUIインタラクションのかなりの部分を持っています。ほとんどのモバイルアプリは80%のUIコードのようなものです。

したがって、いずれにせよ、プラットフォームごとに個別のUIコードのセットを作成することになります。たとえば、Silverlight WP7(およびすべてのWPFの良さ)で作成する場合は、まったく異なるコードのセットを作成することになります。 CocoaのiOS(IB、ビュー、コントローラーなど)の場合、Android用のまったく異なるコードセットを作成することになります。

私の経験では、どのプラットフォームでも優れたUIコードを作成するには多くの経験が必要です。たとえば、WPF / SLの学習はすでに悪夢です。つまり、CocoaTouchとAndroid全体の混乱を招きます。もちろん、見た目も感じもかなり似ている3セットのUIを作成できますが、コードを再利用し、共通のデータ構造を使用しているため、専用アプリと比較した場合、UIは標準以下になる可能性があります。 -そして今日のモバイルアプリのこの斬新な世界では、非スーパー(サブパーは言うまでもなく)UIエクスペリエンスは、アプリの死を意味します。

また、3つのモバイル環境はすべて、マルチメディアパラダイムだけでなく、異なる接続パラダイムも持っています。慣れ親しんだ1つの言語で書いていても、最終的に3つのバージョンを作成し、3つの環境を学習することになります。

再利用するのが最も多いのはバックエンドモジュールです。意思決定エンジン、検索ルーチン、データ管理など。3つの異なるUIパラダイムで動作する3つの異なるUIコードのセットと簡単に統合できるようにするためだけに、データ構造に妥協を強いられるため、これらでも問題が発生します。 。たとえば、MVVMモデルのSilverlightビューにバインドするためにDependencyObjectsを使用していますか?そうした場合、CocoaのMVCモデルでは機能しないため、これらのバインディングを個別にコーディングする必要があります。

また、すべてのモバイル環境ですべての機能を使用できるわけではないため、たとえば、MonoTouch for iOSは、コンパイル時に決定できない汎用構造を備えていません。基本的に、.NETの非常に小さなサブセットを使用しています(そして、どの機能をどこで使用できるかを常に思い出しておく必要があります)。これにより、大きな変更を加えることなく、3つの異なるプラットフォームですべてを実行できます。

.NET機能セット全体をサポートするWP7プラットフォーム用に作成する場合、これらすべての制限があるイメージになります。私はあなたのことを知りませんが、私は夢中になります。また、WP7アプリは、他のアプリとの競争力に近づくことはありません。

私の意見では、痛みと妥協はそれだけの価値はありません。最終的には3つのまあまあのアプリになりますが、どちらのプラットフォームの人も気に入らないでしょう。

すべての長所がアプリのバックエンドロジックにある場合を除き、アプリのバックエンド機能を利用するためだけにUIの問題を無視するほどの長所があります。私の経験では、これはほとんど起こりません。

于 2011-03-23T13:12:29.073 に答える
2

私にとっての最大の利点は、モバイルプラットフォーム間でビジネスロジックと通信コードを再利用できることです。はい、UIを何度も作成する必要があり、頭を悩ませるには時間がかかりますが、少なくとも私のベースプラットフォームは再利用可能です。

新しいプラットフォームに移行するときの私の経験では、新しい言語を学ぶよりもUIフレームワークを学ぶ方がはるかに時間がかかります。

于 2011-03-24T10:02:24.283 に答える
2

受け入れられた回答が2011年に作成されて以来、いくつかの異なるフレームワークが登場しました。これにより、MVCおよびMVVMパターンがMono for AndroidおよびMonoTouchにもたらされ、これらのターゲットのアプリケーションを開発する際に非常に役立ちます。

MVCについては、 MonoCrossというプロジェクトをチェックしてください。

MVVMについては、StuartLodgeのMvvmCrossを確認ください

後者には、3つのプラットフォームで画像を開いたり、電子メールを作成したり、Webブラウザーを開いたり、サウンドを再生したりするための多くのコードが含まれています。また、ViewModel間のナビゲーションも処理します。

于 2012-08-20T08:55:02.680 に答える
0

大きな利点は確かに、プラットフォーム間でのコード/クラスライブラリの再利用性です。そのことを念頭に置いて、アプリケーションをさらに高速に移植/開発できるため、コストが削減されます。

また、コードの再利用性により、メンテナンス費用を削減します。

于 2011-03-17T06:57:05.607 に答える
0

利点:

  • すべて同じ言語でコーディングし、(ほとんど)各プラットフォームで使用可能
  • 開発時間の短縮
  • 安い

短所:

  • 必要なライブラリを含めると、最小アプリケーションサイズが大幅に増加します。アプリが大きくなる場合、違いはそれほど重要ではありません。
  • パフォーマンスのオーバーヘッド

お金と人がいる場合は、iPhoneとObjective-C、AndroidとJavaなどに焦点を当てた人がいる方が常に良いでしょう。そうすれば、プログラマーはあなたがターゲットにしているプラ​​ットフォームについての深い知識を持ち、アプリケーションがプラットフォームの機能を最大限に活用していることを確認してください-アプリはすべてのプラットフォームで(おそらくゲームを除いて)完全に同じであってはならず、長所と短所を試してみる必要があります:iPhoneアプリはiPhoneのように見えて機能する必要がありますアプリなど

とはいえ、人やお金がない場合は、単一の言語を複数のフレームワークと一緒に使用する方が確かに安価で高速であり、プラットフォームごとに個別に開発しようと努力した結果よりも良い結果が得られる可能性があります。

于 2011-03-20T16:20:00.147 に答える
0

Monotouch/Droid-librariesにはいくつかの欠点があります。速度の低下が少しあります(約5%なので、ほとんどの場合無視できます)。

私の経験では、サイズはそれほど変わりません。サイズの大部分はリソース(データリソース、パックされた画像など-プロセッサの使用量ではありません)にあり、ほとんどのアプリはそれほど多くのリソースを持ちません(読み込み時間とモバイルプラットフォームでの多くのデフォルトコントロールの可用性のため) 。

ただし、ゲームでフレームワークを使用するべきではないと思います。私はモバイルゲーム開発の経験があまりありませんが、ゲーム開発で使用しているフレームワーク(XNA、AndroidのNDKなど)がかなり異なり、システムリソース(プロセッサの使用量、メモリなど)が必要なため、かなり役に立たないです。私見では。

于 2011-03-17T10:59:23.210 に答える
0

これを確認する別の方法は、 WebORB統合サーバーを使用して、既存の.NET / C#アプリケーションをさまざまなモバイルクライアント(ネイティブおよび非ネイティブの両方)に比較的簡単に移植できることです。クライアント側では、ネイティブ言語でコーディングするか、iOS、Android、BlackBerryPlayBookなどのさまざまなモバイルOS間でかなり移植可能なAdobeAIRアプリケーションを作成する必要があります。

于 2011-04-18T23:13:27.823 に答える
0

クロスプラットフォームソリューションは、アプリケーションがシンプルでわかりやすい場合にのみ機能します。複雑なオブジェクトグラフを備えたローカルデータストアなどの複雑な機能が必要な場合は、ネイティブにするか、問題のデバッグに数か月を費やすことを期待してください

于 2014-03-07T01:23:43.643 に答える