Pergunta

Começamos a construir Cross platform Android/iOS apps, tendo construído exclusivamente em MonoTouch antes.Estamos avaliando MonoDroid.

Nossos aplicativos precisam consumir JSON e gostaríamos de usar ServiceStack.O Xamarin tem uma ramificação ServiceStack que estamos usando - https://github.com/xamarin/ServiceStack

Gostaríamos de ter um projeto comum responsável por GETting e POSTing JSON.ServiceStack da Xamarin tem different DLLs for Android and iOS.Como temos um single project e usar ServiceStack para chegar ao nosso JSON?

Estamos abertos a outras opções para chegar ao JSON de forma unificada?

Foi útil?

Solução

Em geral, *.dlls gerenciados compilados para MonoTouch que não dependem de tipos específicos do MonoTouch são compatíveis com projetos Mono para Android.

ServiceStack é um ótimo exemplo disso.Eu pessoalmente o usei para vários projetos nas ofertas da estrutura móvel Xamarin.

Como regra geral, costumo encapsular todas as chamadas aos meus serviços da Web usando uma classe parcial com métodos assíncronos, como FooProjectRestClient.E então, se houver algum tipo de segmentação que precise ocorrer, isso pode acontecer em uma classe compartilhada usando #if defs.

Outras dicas

A razão pela qual existe MonoTouch e Bibliotecas específicas do Mono para Android geralmente são devido ao perfil (menor, semelhante ao Silverlight) disponível (por exemplo,coisas que dependem dos novos recursos do FX4.0 precisam ser eliminadas).Geralmente são o mesmo código recompilado com SILVERLIGHT (ou MONOTOUCH, MONODROID) definiram.

A razão do MonoTouch apenas bibliotecas específicas geralmente são porque seu ambiente (dispositivos iOS) não permite JIT.Portanto, não há geração de código (por exemplo System.Reflection.Emit) ou carregamento dinâmico de código (download)...No entanto, muitas vezes é possível fornecer soluções alternativas (de menor desempenho) ou ignorar alguns recursos e manter um especial versão da biblioteca para MonoTouch.

Agora, de volta a ter um solteiro montagem/projeto compartilhado.O especial Assembly MonoTouch (geralmente o mesmo código recompilado com MONOTOUCH definido) ainda é um válido Montagem .NET e muitas vezes pode ser usado em Mono para Android, Mono ou .NET (uma vez recompilado, mesmo com MONOTOUCH).Definitivamente não é o ideal, mas é algo que você pode tentar.

Outro está tendo os mesmos projetos (por ex.MyLib), em diversas soluções (por exemplo,MonoTouchApp, M4AndroidApp) e use configurações especiais (assim como há um iPhone | Debug) para definir diferentes definições (por exemplo, MONOTOUCH no iPhone*|*).Isso pode permitir que você mantenha a melhor implementação de recursos em cada plataforma (por exemplo,caso o mesmo recurso seja implementado de forma diferente).

Eu tentaria primeiro o último (config), depois compartilharia a montagem especial do MonoTouch e finalmente (se realmente não funcionar) procuraria outras alternativas.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top