none
WinRT + Azure Mobile Service + Azure Table Storage RRS feed

  • Вопрос

  • Возникло несколько вопросов по поводу Windows Azure. Было бы здорово, если бы удалось найти на них ответы или хотя бы направление куда копать.

    Задача следуящая: проектирую WinRT-приложение (C# XAML), которое должно быть опубликовано в Windows Store. Архитектура самая простая: клиент - модуль-прослойка - хранилище данных. Клиентская часть всегда находится на устройстве пользователя в силу того, что приложение WinRT. В качестве хранилища данных хочу использовать Azure Table Storage, а не реляционную базу данных. Еще нужен модуль, который будет обрабатывать запросы клиента, верифицировать их корректность и только после этого предоставлять данные из хранилища или записывать данные в хранилище. Этим занимается модуль-прослойка.

    Как я понял, WinRT-приложение без с проблем дружит только с одним внешним сервисом - это Azure Mobile Service. Но Azure Mobile Service работает с реляционным хранилищем. В поисках информации как использовать для Mobile Service хранилище Table Storage нашел вот эту статью:
    http://blogs.msdn.com/b/paolos/archive/2013/04/09/how-to-use-windows-azure-table-storage-in-windows-azure-mobile-services.aspx
    Но это решение мне кажется несколько кривоватым. Ведь по сути приходится на борту держать и базу данных SQL (за которую требуется платить, хотя она не используется) и хранилище таблиц.
    Потом, у Mobile Service всего четыре метода для каждой таблицы, поэтому сделать на основе Mobile Service полноценный модуль-прослойку никак не получится. Допустим, клиент вызывает какой-либо метод модуля-прослойки, модуль делает верификацию на основании уже сохраненных в Storage данных, если всё успешно, модуль пишет данные в несколько разных таблиц. Как я понял, даже с учетом серверных скриптов для Mobile Service такое реализовать не получится. Остается написать модуль-прослойку в отдельную библиотечку, функции которой будет вызывать приложение-клиент.
    Во всех книгах нас учат, что нельзя доверять информации, пришедшей со стороны клиента. Соответственно размещать эту библиотеку на устройстве пользователя (в составе WinRT-приложения), как минимум, не логично. Логичней было бы разместить эту библиотеку на стороне сервера, а именно в Azure. Тут мне видится вариант: поднять виртуальную машину, там поднять свой Rest-сервис, который получает запросы от клиента, затем обрабатывает их пишет данные в Table Storage. Но, увы, как я понял, WinRT-приложение не пройдет публикацию в Windows Store, если оно использует какие-либо сторонние сервисы, кроме Azure Mobile Service.

    Какие, по вашему мнению, могут быть способы реализации столь простой (по моему мнению) архитектуры приложения, что описана мной выше, в облаке?

    28 апреля 2013 г. 12:35

Ответы

Все ответы