#sqlite #xamarin.forms #synchronization #azure-mobile-services
Вопрос:
Я пытаюсь реализовать мобильные службы Azure в Xamarin.Формы, следуя этому руководству: https://docs.microsoft.com/en-us/azure/developer/mobile-apps/azure-mobile-apps/quickstarts/xamarin-forms/offline но я заметил, что синхронизация идет очень медленно. Например, я синхронизировал базу данных, содержащую 15 таблиц и около 60 тысяч записей, и весь процесс занял около 6 минут! Результат немного изменится, если я повторю операцию с уже синхронизированной базой данных. Возможно ли улучшить весь процесс? У меня есть некоторые сомнения в том, что эта технология уже широко используется, потому что в Интернете очень мало документации, и она часто устарела. В таком случае, каковы альтернативы?
Комментарии:
1. пожалуйста, покажите мне свой код
2. Стоит отметить, что автономная синхронизация для форм SQL и Xamarin подошла к концу. Я слышал, как некоторые люди упоминали, что, вероятно, лучше всего просто реализовать это вручную. Я работал с ручными и автономными сервисами. Руководство немного более утомительно, но работает намного лучше.
3. @Janwilx72: Thx. Действительно, после долгих исследований в сети я понимаю, что эта технология больше не поддерживается. В данный момент я смотрю сюда: dotmimsync.readthedocs.io/Overview.html . Кажется, это лучшая альтернатива.
4. Автономная синхронизация для форм SQL и Xamarin по-прежнему поддерживается. Я тот человек, который это поддерживает. В ноябре прошлого года вышла новая версия, и я работаю над новой библиотекой (совместимой с .NET MAUI) и ASP.NET Основное издание. Не уверен, откуда вы взяли «не поддерживается»
Ответ №1:
Во-первых, для синхронизации 60K записей требуется много времени в первый раз. Это неизбежно из-за объема передаваемых данных. 6 минут-это не сюрприз.
Тем не менее, вы должны были реализовать соответствующие средства для инкрементной синхронизации. Это включает в себя обеспечение того, чтобы в вашей модели были метки времени updatedAt и createdAt, а также глобальный уникальный идентификатор, и присвоение имени вашему запросу при использовании PullAsync()
. Что-то вроде:
await mTable.PullAsync('allItems', mTable.CreateQuery());
Дополнительная информация: https://azure.github.io/azure-mobile-apps/howto/client/dotnet/#syncing-an-offline-table