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

Подключаемся к удаленной базе данных в 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

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