Pregunta

Hemos comenzado a construir Cross platform Android/iOS apps, habiendo construido exclusivamente en MonoTouch antes.estamos evaluando MonoDroid.

Nuestras aplicaciones necesitan consumir JSON y nos gustaría usar ServiceStack.Xamarin tiene una rama ServiceStack que estamos usando: https://github.com/xamarin/ServiceStack

Nos gustaría tener un proyecto común responsable de OBTENER y PUBLICAR JSON.ServiceStack de Xamarin tiene different DLLs for Android and iOS.¿Cómo tenemos un single project ¿Y usar ServiceStack para acceder a nuestro JSON?

¿Estamos abiertos a otras opciones para llegar a JSON de forma unificada?

¿Fue útil?

Solución

En general, los *.dll administrados compilados para MonoTouch que no dependen de tipos específicos de MonoTouch son compatibles con proyectos Mono para Android.

ServiceStack es un gran ejemplo de esto.Personalmente lo he usado para múltiples proyectos en todas las ofertas de marcos móviles de Xamarin.

Como regla general, tiendo a encapsular todas las invocaciones a mis servicios web usando una clase parcial con métodos asíncronos, como FooProjectRestClient.Y luego, si alguna vez es necesario realizar algún tipo de segmentación, puede ocurrir en una clase compartida usando #if defs.

Otros consejos

La razón por la que existen MonoTouch y Las bibliotecas específicas de Mono para Android a menudo se deben al perfil (más pequeño, similar a Silverlight) disponible (p. ej.cosas que dependen de las nuevas características de FX4.0 deben eliminarse).A menudo son el mismo código recompilado con SILVERLIGHT (o MONOTOUCH, MONODROID) definido.

El motivo de MonoTouch solo bibliotecas específicas generalmente se deben a que su entorno (dispositivos iOS) no permite el JIT.Por lo tanto, no hay generación de código (p. ej. System.Reflection.Emit) o cargando dinámicamente (descargando) código...Sin embargo, a menudo es posible proporcionar soluciones alternativas (de menor rendimiento) u omitir algunas funciones y mantener una especial versión de la biblioteca para MonoTouch.

Ahora volvamos a tener un soltero montaje/proyecto compartido.El especial Conjunto MonoTouch (generalmente el mismo código recompilado con MONOTOUCH definido) sigue siendo un válido Ensamblaje .NET y a menudo se puede utilizar en Mono para Android, Mono o .NET (una vez recompilado, incluso con MONOTOUCH).Definitivamente no es óptimo, pero es algo que puedes probar.

Otro es tener los mismos proyectos (p. ej.MyLib), en varias soluciones (p. ej.MonoTouchApp, M4AndroidApp) y use configuraciones especiales (como si hubiera una de iPhone|Debug) para establecer diferentes definiciones (p. ej. MONOTOUCH en iPhone*|*).Eso puede permitirle mantener la mejor implementación de funciones en cada plataforma (p. ej.en caso de que la misma característica se implemente de manera diferente).

Probaría primero lo último (config), luego compartiría el ensamblaje especial MonoTouch y finalmente (si realmente no funciona) buscaría otras alternativas.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top