Нужен ли мне контроллер хранилища для всех моих классов моделей в приложении, чтобы использовать синхронизацию файлов Azure?

Предыстория:

  • Клиентское приложение Xamrin Forms
  • Серверная часть Azure с Dot Net
  • Использование автономной синхронизации данных Azure
  • попытка использовать автономную синхронизацию файлов Azure

Связанные вопросы SO я задал здесь еще 2 вопроса, которые несколько связаны Получение ошибки 404 при использовании Azure File Sync

Получение 500 при использовании Azure File Sync

Решение Как указано выше в первой ссылке, мне пришлось создать контроллер хранилища для сущности пользователя, чтобы иметь возможность успешно войти в систему, хотя я не собираюсь использовать файлы для пользователей.

По мере того, как я работаю дальше в приложении, я все еще получаю больше ошибок 404, как я вижу в скрипаче. Это аналогичные вызовы, которые ищут доступ к API, как показано ниже.

GET /tables/{EntityName}/{Id}/MobileServ‌​iceFiles HTTP/1.1

Мой вопрос сейчас Нужен ли мне контроллер хранилища для каждого объекта в моем решении? может быть каждая сущность, которая наследуется от EntityData?

Есть ли способ выборочно указать системе, какие объекты будут работать с файлами и иметь контроллеры хранилища только для них? Типа, может быть, помечая их каким-то Атрибутом?

Справочник Я использую эту запись в блоге, чтобы реализовать Azure File Sync в моем приложении.


person Supreet    schedule 28.09.2016    source источник


Ответы (1)


Чтобы ответить на мой собственный вопрос (а не ответ, который я хотел услышать) ДА. Нам нужен контроллер хранилища для всех сущностей, даже если у них нет файлов для хранения в учетной записи хранилища. Это ограничение. Нашел эту информацию в комментариях оригинального блога, за которым я следил (хотел бы я сделать это раньше), чтобы процитировать автора

Донна Малайери [donnam@MSFT] Крис • 2 месяца назад Ограничение текущего пакета SDK для хранения состоит в том, что вы не можете указать, в каких таблицах есть файлы. См. эту проблему GitHub: https://github.com/Azure/azure...

В качестве обходного пути вы должны создать собственную фабрику триггеров синхронизации файлов. Вот пример: https://github.com/azure-appse...

Причина, по которой SDK вызывает Get/Delete для файлов в контроллере хранилища, заключается в том, что сервер управляет сопоставлением записи с именем контейнера или большого двоичного объекта. Например, вам не обязательно предоставлять клиенту доступ к учетной записи BLOB-объекта для доступа к произвольным файлам или контейнерам. В случае удаления серверу даже не нужно выдавать токен SAS с разрешениями на удаление, поскольку он может просто аутентифицировать пользователя и выполнить удаление самостоятельно.

person Supreet    schedule 28.09.2016