Несовместимости уровня сервиса MonoTouch / MonoDroid?

Мы начали создавать 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 mobile framework.

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

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

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

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

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

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

Intereting Posts
Как запустить событие, например, запуск приложения при выборе текста Быстрое размытие растровых изображений для Android SDK Как открыть браузер по умолчанию из плена на Android Android startService () занимает много времени, чтобы вернуться к потоку пользовательского интерфейса Как получить текущий выбранный индекс вкладки в TabLayout? ScrollView не прокручивается, если видна мягкая клавиатура Альтернатива атрибута singleLine (устаревший) TextInputEditText Как получить размер виджета приложения? LoaderManager с несколькими загрузчиками: как получить правильный загрузчик курсора Сообщение об ошибке отказано Виджет приложения: эффект пульсации теряется в элементе списка, когда фон добавлен к внешней компоновке Программно добавляя SurfaceView к FrameLayout, который Z-упорядочен в ImageView Genymotion Android-эмулятор – доступ adb? Преобразование простой прошивки Java в дату Java Zoom и черная рамка