В помощь мобильному разработчику
База данных

Подключаемся к удаленной базе данных в Xamarin.Forms

Александр Алексеев

Распространенный вопрос, что особенно любят задавать новички в работе с Xamarin, которые имеют опыт разработки в веб-сфере, следующий — как можно подключиться к удаленной базе данных из мобильного приложения? Работа с клиентским приложением отличается от работы с приложением, функционирующим на сервере, поскольку у разработчика в этом случае нет прямого доступа к ресурсам, реализуемым на сервере, например, таким, как базы данных. В этом случае требуется способ для приема запросов от клиента и передачи их базе данных.

 

API на основе REST

Наиболее распространенным способом для достижения этой цели является API-интерфейс, основанный на REST. Этот API-интерфейс похож на веб-страницу, но пользователь её не просматривает и не видит на ней код HTML, вместо этого мобильное приложение или другой клиент, подключается к этому интерфейсу, отправляет ему команды и получает данные из него; чаще всего эти данные приходят в формате JSON.

API-интерфейс REST позволяет выполнять вызовы HTTP и возвращать требуемые данные. Например, можно отправить следующие:

А вернется нечто подобное:

Если требуется добавить данные, используется запрос POST и данные отправляются в форме запроса.

Если вы хотите разобраться в том, как создать API и базу данных в Azure, ознакомьтесь со следующими материалами:

Если требуются дополнительные сведения о API-интерфейсах REST и о том, как они работают, ознакомьтесь с материалом Передача состояний представления или воспользуйтесь Google для поиска дополнительных статей или видеозаписей по этой теме.

 

HttpClient

Предположим, что Вы следовали приведенным выше статьям или уже имеете API-интерфейс, теперь рассмотрим, как мы подключаемся к этой базе данных из Xamarin.

К сведению: HttpClient предназначен для повторного использования, поэтому создается один экземпляр HttpClient и многократно используется в приложении.

Если мы хотим сделать запрос GET, мы должны использовать вот что:

Если мы хотим сделать запрос POST, мы должны использовать вот это:

И если мы хотим добавить некий заголовок, например, заголовок проверки подлинности, мы можем сделать следующее:

Используя JSON.NET, мы также можем легко преобразовать ответ JSON в объект. Можно сказать, что API возвращает в формате JSON следующие:

Затем мы создадим эту модель в нашем проекте Xamarin:

Теперь, когда мы получаем ответ от API, мы используем JSON.NET для преобразования его в объект.

Как Вы могли видеть, когда я сделал запрос POST выше, я ввел строку. Если необходимо преобразовать модель/объект в строку JSON, мы также можем использовать для этого JSON.NET.

 

Почему бы не подключиться напрямую к базе данных?

Вы, быть может, недоумеваете, почему Вы не можете просто подключиться непосредственно к базе данных из мобильного приложения? Основные причины:

 

Безопасность

Не в Ваших интересах, чтобы мобильные клиентские приложения имели строку подключения к базе данных с именем пользователя и паролем. Таким образом Ваша база данных будет открыта для всех. Можно создать пользователя с разрешениями только для чтения и открыть доступ только к определенным таблицам, однако, в этом случае пользователи все еще смогут видеть все данные в этих таблицах. В API-интерфейсе можно реализовать дополнительные проверки безопасности и проверить подлинность на основе OAuth или существующей системы управления пользователями.

 

Производительность

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

 

Контроль

С помощью API-интерфейса можно управлять потоком данных, идущих в базу данных и исходящих из нее. Можно реализовать ограничение скорости и осуществлять наблюдение за всеми запросами. Если потребуется изменить бизнес-логику или даже то, какие базы данных или ресурсы используются с помощью каждого запроса API, это можно будет сделать на сервере без необходимости повторного развертывания мобильного приложения.

 

Ресурсы

Благодаря API уменьшается потребность в серверных ресурсах. Хотя может возникнуть необходимость установки другого сервера для обработки какого-нибудь API, интерфейс API REST создан эффективным и не фиксирующим состояние. Благодаря API в будущем для многих пользователей упрощается масштабирование.

 

Автор: Adam Pedley
ИсточникXamarinHelp.com

Александр Алексеев
Александр Алексеев

Xamarin - разработчик. Работаю с .NET платформой с 2012 года, программирую в основном с использованием C#. За это время успел поработать с ASP.NET, Entity Framework, MSSQL, Git

xamarin forms

1 Comment

  1. Здравствуйте! Я в прошлом году мучался с REST-APi и Xamarin. Суть была вот в чем. Я поднял сайт на WordPress и собрал в нем каталог кружков и секций для детей. Потом скачал плагин REST, который давал ссылку на полный список кружков в формате json. Ссылка была очень странной и другого форматаб чем у вас в статьеб всвязи с этим у меня назрел такой впрос — А можно ли указать простую ссылку на определенный каталог? Или ссылка долна быть специальной? Что если бы меня не было плагина REST для WordPressб как бы мне пришлось получить ссылку на данные в формате json? Подскажите пожалуйстаб а то не могу понять.

Написать ответ