0

エンタープライズ アプリのソリューションを探していましたが、少なくとも 3 つのプラットフォーム (iOS、Android、および Window Phone) をサポートする必要があります。丸一日の検索の後、私は最終的に2つの有望なクロスプラットフォームソリューションに目を向けました.1つはモノクロスで、もう1つはフォンギャップです. monocross は c# と .net をまったく使用していないようですが、ネイティブのライブラリと言語にアクセスできますか? ターゲットプラットフォームで実行できるバイナリに直接コンパイルされている場所を読みました。phonegap については、各プラットフォームで Web ビューを使用して、ユーザー インターフェイスを最終ユーザーに提示する機能を提供します。インタープリター言語と高レベル API を介して実装されているため、パフォーマンスがニーズを満たしていない可能性があります。最後に、私たち (私のチーム) は mono で試してみることにしました。アーキテクチャは次のように示されています。

+++++++++++++++++++++表現レイヤー++++++++++++++++++++++++++++
[モノタッチ、モノドロイド、シルバーライト] または [ネイティブ GUI 呼び出し] または [html5/js/css]

+++++++++++++表現コントローラー/ビジネスロジック層++++++++++++++++
[ mono/c# ]

++++++++++++++++++++++++++ ++サーバー側++++++++++++++++++++++++++++
[クラウド]

mono/c# を使用して、一般的な目的のビジネス ロジックとデータ構造を記述したいと考えています。また、ストレージ サービス、通知などの一般的なプラットフォーム機能については、各プラットフォームでラップして、統一された API を公開したいと考えています。 c#(ビジネス ロジック レイヤー) を使用します。表現層に関しては、上記の 3 つのオプション ソリューションから選択することにします。

これを実現するには、まず、ネイティブ フレームワークを呼び出すことができるかどうかを確認する必要があります。では、私の質問は次のとおりです
。1、mono はどのように機能しますか。つまり、C# コードは、iOS、Android、および Windows Phone で直接実行できるバイナリにコンパイルされますか?
2, ネイティブ呼び出しを行う仕組みはありますか? cocos2d-x のように JNI 経由で Java メソッドを呼び出すことができ、iOS では c++ で oc を直接呼び出すことができます。c# を使用して mono でココア タッチのものを呼び出すことはできますか?
3, これらすべてのものを 1 つのプロジェクトで管理することは可能ですか? また、それらを構築する方法は?
4, より良い解決策はありますか?

お待ちいただきありがとうございます。

4

2 に答える 2

1

Xamarin が検索結果の最初のページに表示されないのはなぜでしょうか。

http://xamarin.com/features

しかし、これは、モバイル プラットフォームをターゲットにしたい C# 開発者のために Mono の連中が作成したものです。MonoTouch と Mono for Android は、それぞれ Microsoft .NET と共通のライブラリ ベースと、プラットフォーム固有のバインディングを特徴としています。

UI 以外のコードは、ポータブル ライブラリで使用し、ライブラリ間で共有できる必要があります。Microsoft のポータブル ライブラリは Windows 固有のものであり、Mono 関係者がどれだけそれを受け入れることができるかは現時点ではわかりませんが、PCL が失敗したとしても、ソース ファイルの同じコピーに基づいて複数のプラットフォーム固有のプロジェクトを作成できます (これは #SNMP で行いました)。 )。残りのタスクは、Windows Phone、iOS、および Android 用のプラットフォーム固有の UI を開発することです。

機能を示す記事がたくさんありますが、

http://docs.xamarin.com/

また、多くの成功したアプリ

http://xamarin.com/apps

製品を学習する最善の方法は、試してみることです (Xamarin の場合は無料です)。これは、MonoCross (Mono 上に構築されたフレームワーク) にも当てはまります。

私は PhoneGap に詳しくないので、誰かのアドバイスが必要です。

于 2013-01-21T06:38:36.383 に答える
0

免責事項:これは完全な答えではありませんが、少なくともあなたの質問の一部に答えることを願っています


18か月前にMono製品を使用してクロスプラットフォーム開発を開始したときに、同様の問題が発生しました。

それ以来私が構築したアプローチはMvvmCrossと呼ばれています-それはずっと前にMonoCrossから分岐しました-今ではそれとコードを共有していません(しかし多分私たちはいつか再びチームを組むでしょう!)。

このアプローチでは、PCLを使用してコードを共有します。これは完全に苦痛がないわけではありませんが、いくつかのセットアップ手順を実行した後は簡単です-http ://slodge.blogspot.co.uk/2012/12/cross-platform-winrt-monodroid.html

このアプローチの詳細については、次のビデオをご覧ください:http ://slodge.blogspot.co.uk/2012/12/mvvmcross-video-presentation-xaminar.html

于 2013-01-28T17:08:40.260 に答える