Frage

Wir haben mit dem Bau begonnen Cross platform Android/iOS apps, da ich zuvor ausschließlich in MonoTouch gebaut habe.Wir evaluieren MonoDroid.

Unsere Apps müssen konsumieren JSON und wir würden es gerne nutzen ServiceStack.Xamarin verfügt über einen ServiceStack-Zweig, den wir verwenden – https://github.com/xamarin/ServiceStack

Wir hätten gerne ein gemeinsames Projekt, das für das GETting und POSTing von JSON verantwortlich ist.ServiceStack von Xamarin hat different DLLs for Android and iOS.Wie haben wir ein single project und ServiceStack verwenden, um an unseren JSON zu gelangen?

Wir sind offen für andere Optionen, um auf einheitliche Weise an JSON heranzukommen?

War es hilfreich?

Lösung

Im Großen und Ganzen sind verwaltete *.dlls, die für MonoTouch kompiliert wurden und keine Abhängigkeit von MonoTouch-spezifischen Typen haben, mit Mono für Android-Projekten kompatibel.

ServiceStack ist ein großartiges Beispiel dafür.Ich persönlich habe es für mehrere Projekte im gesamten Xamarin-Mobile-Framework-Angebot verwendet.

Als allgemeine Regel neige ich dazu, alle Aufrufe meiner Webdienste mithilfe einer Teilklasse mit asynchronen Methoden zu kapseln, z FooProjectRestClient.Und wenn dann jemals irgendeine Art von Segmentierung erforderlich ist, kann dies in einer gemeinsam genutzten Klasse mithilfe von #if-Defs erfolgen.

Andere Tipps

Der Grund, warum es MonoTouch gibt Und Mono für Android-spezifische Bibliotheken ist oft aufgrund des (kleineren, Silverlight-ähnlichen) Profils verfügbar (z. B.Dinge, die von den neuen FX4.0-Funktionen abhängen, müssen herausgeschnitten werden.Dabei handelt es sich oft um denselben Code, der mit neu kompiliert wurde SILVERLIGHT (oder MONOTOUCH, MONODROID) definiert.

Der Grund für MonoTouch nur Bestimmte Bibliotheken sind im Allgemeinen darauf zurückzuführen, dass ihre Umgebung (iOS-Geräte) kein JIT'ing zulässt.Es gibt also keine Codegenerierung (z. B. System.Reflection.Emit) oder dynamisches (Herunter-)Laden von Code ...Allerdings ist es oft möglich, (weniger leistungsstarke) Problemumgehungen bereitzustellen oder einige Funktionen zu überspringen und eine beizubehalten besonders Version der Bibliothek für MonoTouch.

Nun zurück zu einem einzel gemeinsame Versammlung/Projekt.Der besonders MonoTouch-Assembly (im Allgemeinen derselbe Code, neu kompiliert mit MONOTOUCH definiert) ist immer noch ein gültig .NET-Assembly und oft kann in Mono für Android, Mono oder .NET verwendet werden (einmal neu kompiliert, sogar mit MONOTOUCH).Es ist definitiv nicht optimal, aber Sie können es versuchen.

Ein anderer hat die gleichen Projekte (z. B.MyLib), über mehrere Lösungen hinweg (z. B.MonoTouchApp, M4AndroidApp) und verwenden Sie spezielle Konfigurationen (genau wie es eine iPhone|Debug-Konfiguration gibt), um verschiedene Definitionen festzulegen (z. B. MONOTOUCH auf dem iPhone*|*).Dadurch können Sie die beste Funktionsimplementierung auf jeder Plattform beibehalten (z. B.für den Fall, dass die gleiche Funktion unterschiedlich implementiert wird).

Ich würde zuerst Letzteres ausprobieren (Konfiguration), dann die MonoTouch-Spezialbaugruppe teilen und schließlich (wenn es wirklich nicht funktioniert) nach anderen Alternativen suchen.

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