Monotouch / Monodroidサービス層の非互換性
-
09-12-2019 - |
質問
前にMonotouchで排他的に構築したCross platform Android/iOS apps
の構築を開始しました。MonoDroid
を評価しています。
私たちのアプリはJSON
を消費する必要があり、ServiceStack
を使用します。Xamarinには、 https://github.com/xamarin/servicestack
JSONを取得して投稿する責任がある一般的なプロジェクトをお願いします。XamarinによるServiceStackはdifferent DLLs for Android and iOS
を持っています。single project
を使用して、JSONにアクセスするためにServiceStackを使用するのですか?
統一された方法でJSONに入るために他のオプションにオープンしていますか?
解決
by and large、moneotouchに依存しないMonotouch用にコンパイルされていたMonotouch用にコンパイルされています。
ServiceStackはこれの素晴らしい例です。私は個人的にXamarin Mobile Framework製品を渡って複数のプロジェクトに使用しました。
一般的な規則として、FooProjectRestClient
のように、ASYNCメソッドを使用して、ASYNCメソッドを使用してすべての呼び出しをWebサービスにカプセル化する傾向があります。そして、それが発生する必要がある種類のセグメンテーションがある場合は、#if defsを使用して共有クラスで発生する可能性があります。
他のヒント
Android特定のライブラリのためのMonotouch および Monoがある理由は、利用可能な(より小さい、シルバーライトのような)プロファイルのためにしばしば(例えば、新しいFX4.0機能に依存するもの)切り取る)。それらはしばしばSILVERLIGHT
(またはMONOTOUCH
、MONODROID
)と一緒に定義された同じコードが再コンパイルされます。
Monotouch のみ特別なライブラリairiesの理由は、一般的にその環境(iOSデバイス)がJIT 'を許可しないためです。そのため、コード生成(System.Reflection.Emit
など)または動的に(ダウン)ロードする...しかし、(パフォーマンスが低い)回避策を提供したり、いくつかの機能をスキップしたり、 Special バージョンを維持することは可能です。 Monotouch用。
今 Single 共有アセンブリ/プロジェクトを持っていることに戻ります。 特殊 Monotouchアセンブリ(一般に、定義されたMONOTOUCH
で再コンパイルされた同じコード)は依然として有効な .NETアセンブリとしばしばを使用できます。 Android、Mono、.NET用のモノラル(MONOTOUCH
でも、再コンパイルされます)。それは間違いなく最適ではありませんが、それはあなたが試すことができるものです。
別のものは、異なる定義を設定するためのいくつかの解決策(MonotouchApp、M4androidAppなど)にまたがって特別な構成(iPhoneがデバッグするのと同じように)を使用している(iPhoneがデバッグするのと同じように)特別な構成を使用しています(iPhone *。 )。それはあなたが各プラットフォームで最高の機能実装を保つことを可能にすることができます(例えば、同じ機能が異なるように実装されている場合)。
後で最初の(config)を試してから、Monotouchの特別なアセンブリを共有し、ついに(実際には機能しない場合)他の選択肢を探します。