ГлавнаяSoftwareМобильные приложенияParse.com — BaaS для мобильных приложений

Parse.com — BaaS для мобильных приложений

С каждым днем облачные сервисы все больше и больше используются в нашей жизни. Хорошим примером могут служить такие сервисы, как Amazon Web Services, Google Cloud Platform, Heroku, Parse и т.д. Все перечисленные решения позволяют нам не волноваться по поводу масштабирования проекта и заниматься воплощением самой идеи. Я расскажу вам о том, как сервис Parse.com может облегчить разработку мобильного приложения со своим бэкендом.

Parse1Parse.com — это облачный сервис типа Backend as a Service (BaaS). Рассмотрим его на примере небольшого приложения, которое должно после авторизации пользователей позволять им загружать фотографии с описанием. К тому же в приложении должна присутствовать возможность просмотра всех фотографий, загруженных пользователями. При создании данного приложения в первую очередь нужно реализовать серверную часть, которая будет выполнять функции регистрации, авторизации пользователей, а также хранения и получения данных, загруженных пользователями. Также для доступа ко всем этим функциям из приложения нужно создать REST API.

Если вы так же, как и я не очень любите заниматься разработкой серверной части и хотите разрабатывать только клиентскую часть (client side), которая на порядок ближе к пользователю, то сервис Parse.com решит большинство этих проблем. Теперь не нужно нанимать программиста на Python или специалиста по PHP для разработки API и других неприятных, но очень важных частей приложения. Эти задачи возьмет на себя Parse.com. Parse предоставляет SDK для большинства популярных платформ: iOS, OSx, Android, JavaScript, .NET и Unity. Все примеры кода в этой статье используют Android SDK, но доступны для понимания разработчикам других платформ.

Parse3Хранение данных

Parse позволяет хранить данные в нереляционном хранилище. Вместо привычных таблиц данные будут находиться в коллекциях с JSON-совместимыми объектами. Рассмотрим небольшой пример:

ParseObject gameScore = new ParseObject(«GameScore»);
gameScore.put(«score», 1337);
gameScore.put(«playerName», «Sean Plott»);
gameScore.put(«cheatMode», false);
gameScore.saveInBackground();

Для записи данных в хранилище Parse нужно создать экземпляр класса ParseObject и передать ему в конструкторе название коллекции (таблицы), в которую будет сохранен объект. Далее указываем объекту нужные нам значения с помощью интерфейса key-value и вызываем метод saveInBackground(), который выполнит вызов REST API в фоновом потоке. Как видите, все просто и лаконично. Благодаря тому, что Parse использует нереляционное хранилище, о схеме данных не нужно волноваться. Ее можно менять как угодно без каких либо конфигураций на стороне сервера.

Вернемся к нашему приложению. Первым делом нужно написать код для авторизации и регистрации пользователей. Для этого в Parse SDK есть готовый класс ParseUser, который унаследован от ParseObject и имеет такие же свойства. Разница заключается лишь в том, что ParseUser реализует в себе функции для работы с авторизацией. Вот небольшой пример кода, который используется для регистрации новых пользователей:

ParseUser user = new ParseUser();
user.setUsername(«mecid»);
user.setPassword(«mecidpwd»);
user.setEmail(«cmecid@gmail.com»);
user.put(«phone», «+994557140000»);

user.signUpInBackground(new SignUpCallback() {
public void done(ParseException e) {
}
});

Как видно из примера, у ParseUser есть поля для хранения логина, пароля, адреса электронной почты и метод для регистрации новых пользователей signUpInBackground. Для авторизации же пользователей используется метод logInInBackground, который вызывается таким же способом.

Следующим шагом будет создание возможности загрузки фотографий в наше хранилище. Для хранения файлов необходимо использовать класс ParseFile:

ParseFile file = new ParseFile(«image.png», someByteData);
file.saveInBackground();

При создании экземпляра класса ParseFile нужно передать в конструкторе описание файла и его представление в виде массива байтов. Загрузка файла в хранилище осуществляется с помощью все того же метода saveInBackground():

ParseObject post = new ParseObject(«Post»);
post.put(«description», «Best photo»);
post.put(«user», user);
post.put(«photo», file);
post.saveInBackground();

В этом примере отображен код сохранения фотографии с ее описанием и аккаунтом пользователя, который ее загрузил. Стоит обратить внимание на то, что, прежде чем указывать значение ключа photo, нужно обязательно дождаться сохранения объекта file.

Осталось реализовать получение данных из хранилища. Для этого воспользуемся классом ParseQuery. Именно этот класс выполняет запросы к хранилищу, выборки разного типа, пагинацию и многое другое. Вот пример получения постов из хранилища:

ParseQuery<ParseObject> query = ParseQuery.getQuery(«Post»);
query.findInBackground(new FindCallback<ParseObject>() {
public void done(List<ParseObject> postList, ParseException e) {
}
});

Инициализируется запрос с помощью фабричного метода getQuery, где в качестве параметра нужно передать название коллекции, по которой будет выполнена выборка данных. В данном примере мы просто получим список всех постов загруженных пользователями. Для выполнения запроса используется метод findInBackground, при вызове которого в новом потоке будет послан REST-запрос для поиска объектов.

Друзья, вот мы и создали наше приложение со своей серверной логикой. С большой легкостью можно добавить к фотографиям геопозицию, реализовать push-уведомления и другие нужные в повседневной жизни функции, — все это уже есть в Parse SDK.

Минусы и плюсы данного решения

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

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

Одним из важных плюсов данного решения стала цена. Parse предоставляет миллион запросов в месяц совершенно бесплатно. Что такое запрос на языке Parse? Запросом является каждый REST-вызов SDK. Чтобы лучше понять это, вернемся к нашему примеру. Авторизация, получение и публикация фотографий – это все запросы. Если же вы пройдете лимит в миллион запросов, то нужно будет заплатить по 7 центов за каждую тысячу последующих запросов. Как видите, цены достаточно приемлемые, но если ваша идея стала мега-популярной, то вам лучше перейти на платный тариф с ограничением в 15 миллионов запросов, цена которого составляет 199 долларов.

Заключение

В апреле 2013 года сервис Parse.com был приобретен компанией Facebook за 85 миллионов долларов, что говорит о серьезном развитии проекта. В этом же году Facebook устроил конференцию Parse Developer Day, которую мы настоятельно рекомендуем посмотреть перед тем, как приступить к использованию Parse (https://www.youtube.com/watch?v=CwxJ5Puu5H4)

Parse4К сожалению, сейчас Parse не может полностью заменить те возможности, которыми располагает PHP. Сложные web-приложения все еще требуют написания кода, но со своим кругом задач он справляется просто отлично. Советую вам обратить внимание на этот сервис, так как мою работу удалось значительно упростить благодаря Parse. Ну и на последок для убедительности приведу небольшой список компаний, которые уже используют Parse: Hipmunk, Cadillac, Food Network, Cisco и другие.

Автор статьи: Меджид Джабраилов, программист-разработчик, создатель ряда приложений, в том числе популярного Twitter-клиента Robird.

ТЕГИ:
Sony SmartBand SWR10: умный фитнес-браслет
Школьники Азербайджана готовятся к финалу Intel ISEF 2014
Оформление подписки
Оформить подписку на журнал InfoCity вы можете заполнив приведенную
ниже форму. Стоимость одного выпуска — 2 маната.
Ваше имя
Адрес доставки журнала и номер телефона для контактов
Число месяцев подписки
Благодарим вас за подписку!