Вопрос

Мы начали строить Cross platform Android/iOS apps, ранее создававший исключительно в MonoTouch.Мы оцениваем MonoDroid.

Наши приложения должны потреблять JSON и мы хотели бы использовать ServiceStack.У Xamarin есть ветка ServiceStack, которую мы используем: https://github.com/xamarin/ServiceStack

Мы хотели бы иметь общий проект, отвечающий за GETting и POSTing JSON.ServiceStack от Xamarin имеет different DLLs for Android and iOS.Как у нас есть single project и использовать ServiceStack, чтобы получить наш JSON?

Мы открыты для других вариантов унифицированного использования JSON?

Это было полезно?

Решение

В целом управляемые файлы *.dll, скомпилированные для MonoTouch, которые не зависят от конкретных типов MonoTouch, совместимы с проектами Mono для Android.

ServiceStack — отличный тому пример.Я лично использовал его для нескольких проектов в рамках мобильных платформ Xamarin.

Как правило, я склонен инкапсулировать все вызовы своих веб-сервисов, используя частичный класс с асинхронными методами, например FooProjectRestClient.И затем, если когда-либо потребуется какая-либо сегментация, это может произойти в общем классе с использованием #if defs.

Другие советы

Причина, по которой существует MonoTouch и Специфические библиотеки Mono для Android часто возникают из-за доступного профиля (меньшего размера, похожего на Silverlight) (например,все, что зависит от новых функций FX4.0, необходимо исключить).Часто это один и тот же код, перекомпилированный с помощью SILVERLIGHT (или MONOTOUCH, MONODROID) определенный.

Причина MonoTouch только конкретные библиотеки обычно связаны с тем, что их среда (устройства iOS) не допускает JIT-компиляции.Таким образом, нет генерации кода (например. System.Reflection.Emit) или динамическую (загрузку) кода...Однако часто можно предложить (менее производительные) обходные пути или пропустить некоторые функции и сохранить особенный версия библиотеки для MonoTouch.

Теперь вернемся к тому, чтобы иметь одинокий общая сборка/проект.А особенный Сборка MonoTouch (как правило, тот же код, перекомпилированный с помощью MONOTOUCH определено) по-прежнему действительный сборка .NET и часто можно использовать в Mono для Android, Mono или .NET (после перекомпиляции, даже с MONOTOUCH).Это определенно не оптимально, но вы можете попробовать.

У другого есть такие же проекты (например.MyLib), в нескольких решениях (например.MonoTouchApp, M4AndroidApp) и использовать специальные конфигурации (как в iPhone | Debug) для установки различных определений (например, MONOTOUCH на iPhone*|*).Это позволит вам сохранить лучшую реализацию функций на каждой платформе (например,в случае, если одна и та же функция реализована по-другому).

Я бы сначала попробовал более поздний (конфиг), потом поделился специальной сборкой MonoTouch и наконец (если уж совсем не работает) поискал другие варианты.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top