SlideShare una empresa de Scribd logo
1 de 21
Descargar para leer sin conexión
Быстрый бэкенд с parse.com
Сергей Белозёров
APPGRANULA
appgranula.com
11-я конференция .NET разработчиков
31 октября 2015
dotnetconf.ru
2
BaaS
Backend as a Service
● Забудьте об администрировании
● Масштабирование из коробки
● SDK
● Быстрый старт
3
Parse.com
● SDK под все
возможные платформы
● Простой серверный
фрэймворк
● Удобное управление контентом
● Аналитика
● Документация на русском
языке
● Достойный бесплатный тариф
4
● Аутентификация через email, телефон и
соц. сети
● Хранение объектов в облаке
● Разграничение прав доступа
● Простые Push Notification
Быстрый старт
5
Аутентификация
● Login - Password
● Email
● Facebook
● Twitter
● Можно прикрутить что угодно
6
Аутентификация
var user = new Parse.User();
user.setUsername("HelloDotNetConf");
user.setPassword("12345")
user.signUp();
Parse.User.logIn("HelloDotNetConf", "12345")
Parse.FacebookUtils.logIn("user_likes,email")
7
Parse.Object
● String, Number, Boolean, Date
● Array, Object
● File
● GeoPoint
● Pointer, Relation
8
Parse.Object
var place = new Parse.Object("Place"),
geoPoint = new Parse.GeoPoint({latitude:55.1503989, longitude:
61.3638819})
place.set("position", geoPoint);
place.set("name", "ParkCity");
place.save();
9
Parse.Query
● get(objectId)
● find()
○ equalTo
○ lessThan, greaterThan, …
○ containedIn, notContainedIn
○ exists, doesNotExist
○ …
10
Parse.Query
var query = new Parse.Query("Place");
query.near("position", new Parse.GeoPoint({latitude:55.1503989,
longitude: 61.3638819}))
query.find().then(function(results){
//do something usefull with results
}, function(error){
//oops
})
11
Безопасность. ParseACL и CLP
● Access Control List
● Class Level Permission
12
Parse.Object. ParseACL
var privatePlace = new Parse.Object("Place");
privatePlace.set("position", new Parse.GeoPoint({latitude:
55.1543989, longitude: 61.3668819}));
privatePlace.set("name", "My Private Place");
privatePlace.setACL(Parse.User.current());
privatePlace.save();
13
ParsePush
● Cloud Code
● REST
● Client push
● Dev console
14
Cloud Code
● Cloud Function (хранимые процедуры)
● Http requests
● Webhooks
● AfterSave/BeforeSave (триггеры)
● Background Jobs (переодические фоновые
задачи)
● Hosting
● Modules (готовые библиотеки)
15
Cloud Function
Parse.Cloud.define("PlaceCreate", function(request, response) {
});
var name = request.params.name, lat = request.params.lat, lng = request.params.lng,
isPremium = request.params.isPremium,
place = new Parse.Object("Place"),
geoPoint = new Parse.GeoPoint({latitude:lat, longitude: lng}),
user = Parse.User.current();
if(isPremium){
if(!user || !user.get("isPremium"))
return response.error("Nope!");
}
Parse.Cloud.useMasterKey();
place.save({
position : geoPoint, name: name, isPremium: isPremium
}).then(function(place){
response.success(place);
}, function(error){
response.error(error);
});
16
Cloud Function
Parse.Cloud.run("PlaceCreate",{
name: "Premium Gold V.I.P. Place",
isPremium: true,
lat: 55.1593989,
lng: 61.3748819
}).then(function(place){
requestPlaces();
}, function(error){
alert(error.message);
});
17
Триггеры
● beforeSave
● afterSave
● beforeDelete
● afterDelete
Parse.Cloud.afterSave("Place", function (request) {
Parse.Push.send({
channels: [ "Places"],
data: {
alert: "New place added - " + request.object.get("name")
}
}
});
18
Background Jobs
Parse.Cloud.job("cleanLocations", function (request, status) {
//...
});
19
Modules
● MailGun, Mandrill, SendGrid
● Moment, Underscore
● ParseImage
● Stripe
● Twilio
var _ = require('underscore');
var mailgun = require('mailgun');
20
Hosting
$ echo "Hello World" > public/index.html
$ parse deploy
21
Спасибо за внимание
Сергей Белозёров
APPGRANULA
belozerow@gmail.com
facebook.com/belozerovsv

Más contenido relacionado

La actualidad más candente

Продвинутая web-отладка с Fiddler
Продвинутая web-отладка с FiddlerПродвинутая web-отладка с Fiddler
Продвинутая web-отладка с Fiddler
Alexander Feschenko
 
HackIoT: wifi гаджет своими руками
HackIoT: wifi гаджет своими рукамиHackIoT: wifi гаджет своими руками
HackIoT: wifi гаджет своими руками
Sergei Silnov
 
Android осень 2013 лекция 4
Android осень 2013 лекция 4Android осень 2013 лекция 4
Android осень 2013 лекция 4
Technopark
 

La actualidad más candente (18)

Продвинутая web-отладка с Fiddler
Продвинутая web-отладка с FiddlerПродвинутая web-отладка с Fiddler
Продвинутая web-отладка с Fiddler
 
Александр Гусак — Путь к Rich Content API. Контент «по-богатому»
Александр Гусак — Путь к Rich Content API. Контент «по-богатому»Александр Гусак — Путь к Rich Content API. Контент «по-богатому»
Александр Гусак — Путь к Rich Content API. Контент «по-богатому»
 
Как встроено СКЗИ от КриптоПро в продукты Check Point
Как встроено СКЗИ от КриптоПро в продукты Check PointКак встроено СКЗИ от КриптоПро в продукты Check Point
Как встроено СКЗИ от КриптоПро в продукты Check Point
 
Инструкция по переходу на HTTPs
Инструкция по переходу на HTTPsИнструкция по переходу на HTTPs
Инструкция по переходу на HTTPs
 
Неочевидные возможности ускорения работы сайта
Неочевидные возможности ускорения работы сайтаНеочевидные возможности ускорения работы сайта
Неочевидные возможности ускорения работы сайта
 
технические возможности икс
технические возможности икстехнические возможности икс
технические возможности икс
 
перевод на Https
перевод на Httpsперевод на Https
перевод на Https
 
Fiddler
FiddlerFiddler
Fiddler
 
HackIoT: wifi гаджет своими руками
HackIoT: wifi гаджет своими рукамиHackIoT: wifi гаджет своими руками
HackIoT: wifi гаджет своими руками
 
Web socket и приложения реального времени
Web socket и приложения реального времениWeb socket и приложения реального времени
Web socket и приложения реального времени
 
Android осень 2013 лекция 4
Android осень 2013 лекция 4Android осень 2013 лекция 4
Android осень 2013 лекция 4
 
Как обезопасить PBN от взлома? Практические рекомендации
Как обезопасить PBN от взлома? Практические рекомендацииКак обезопасить PBN от взлома? Практические рекомендации
Как обезопасить PBN от взлома? Практические рекомендации
 
Перехват трафика — мифы и реальность / Евгений Усков (Qrator Labs)
Перехват трафика — мифы и реальность / Евгений Усков (Qrator Labs)Перехват трафика — мифы и реальность / Евгений Усков (Qrator Labs)
Перехват трафика — мифы и реальность / Евгений Усков (Qrator Labs)
 
Целевые атаки: прицелься первым
Целевые атаки: прицелься первымЦелевые атаки: прицелься первым
Целевые атаки: прицелься первым
 
Шамбулов У. К. (Казахстан), ГТС. Анализ и исследование инцидентов информацион...
Шамбулов У. К. (Казахстан), ГТС. Анализ и исследование инцидентов информацион...Шамбулов У. К. (Казахстан), ГТС. Анализ и исследование инцидентов информацион...
Шамбулов У. К. (Казахстан), ГТС. Анализ и исследование инцидентов информацион...
 
«Разработка и оптимизация высоконагруженного проекта»
«Разработка и оптимизация высоконагруженного проекта» «Разработка и оптимизация высоконагруженного проекта»
«Разработка и оптимизация высоконагруженного проекта»
 
PUG #9 at OWOX: Поиск узких мест в приложении на PHP
PUG #9 at OWOX: Поиск узких мест в приложении на PHP                PUG #9 at OWOX: Поиск узких мест в приложении на PHP
PUG #9 at OWOX: Поиск узких мест в приложении на PHP
 
Информационная безопасность и web-приложения
Информационная безопасность и web-приложенияИнформационная безопасность и web-приложения
Информационная безопасность и web-приложения
 

Similar a Быстрый бэкенд с parse.com

SafeNet Authentication Service
SafeNet Authentication ServiceSafeNet Authentication Service
SafeNet Authentication Service
Michael Oreshin
 
Hl2008 Spy Log Architechture 169
Hl2008 Spy Log Architechture 169Hl2008 Spy Log Architechture 169
Hl2008 Spy Log Architechture 169
Media Gorod
 
AvanPost – комплексное инфраструктурное решение
AvanPost – комплексное инфраструктурное решениеAvanPost – комплексное инфраструктурное решение
AvanPost – комплексное инфраструктурное решение
LETA IT-company
 
Building deployment pipeline - DevOps way
Building deployment pipeline - DevOps wayBuilding deployment pipeline - DevOps way
Building deployment pipeline - DevOps way
Andrey Rebrov
 

Similar a Быстрый бэкенд с parse.com (20)

Брошюра UserGate Proxy & Firewall VPN GOST
Брошюра UserGate Proxy & Firewall VPN GOSTБрошюра UserGate Proxy & Firewall VPN GOST
Брошюра UserGate Proxy & Firewall VPN GOST
 
Программируемость коммутаторов для ЦОД Cisco Nexus
Программируемость коммутаторов для ЦОД Cisco NexusПрограммируемость коммутаторов для ЦОД Cisco Nexus
Программируемость коммутаторов для ЦОД Cisco Nexus
 
Последние новости постгреса с PGCon / О.Бартунов, А.Коротков, Ф.Сигаев (Postg...
Последние новости постгреса с PGCon / О.Бартунов, А.Коротков, Ф.Сигаев (Postg...Последние новости постгреса с PGCon / О.Бартунов, А.Коротков, Ф.Сигаев (Postg...
Последние новости постгреса с PGCon / О.Бартунов, А.Коротков, Ф.Сигаев (Postg...
 
Обзор новых функций СЗИ от НСД Secret Net LSP 1.5
Обзор новых функций СЗИ от НСД Secret Net LSP 1.5Обзор новых функций СЗИ от НСД Secret Net LSP 1.5
Обзор новых функций СЗИ от НСД Secret Net LSP 1.5
 
SafeNet Authentication Service
SafeNet Authentication ServiceSafeNet Authentication Service
SafeNet Authentication Service
 
Валерий Блонский (Казахстан), PACIFICA. Как угнать Ботнет
Валерий Блонский (Казахстан), PACIFICA. Как угнать БотнетВалерий Блонский (Казахстан), PACIFICA. Как угнать Ботнет
Валерий Блонский (Казахстан), PACIFICA. Как угнать Ботнет
 
DevOps в реальном времени
DevOps в реальном времениDevOps в реальном времени
DevOps в реальном времени
 
DevOps для 1С
DevOps для 1СDevOps для 1С
DevOps для 1С
 
SibeCrypt 2016. Практические методы защиты веб-приложений
SibeCrypt 2016. Практические методы защиты веб-приложенийSibeCrypt 2016. Практические методы защиты веб-приложений
SibeCrypt 2016. Практические методы защиты веб-приложений
 
Hl2008 Spy Log Architechture 169
Hl2008 Spy Log Architechture 169Hl2008 Spy Log Architechture 169
Hl2008 Spy Log Architechture 169
 
AvanPost – комплексное инфраструктурное решение
AvanPost – комплексное инфраструктурное решениеAvanPost – комплексное инфраструктурное решение
AvanPost – комплексное инфраструктурное решение
 
Building deployment pipeline - DevOps way
Building deployment pipeline - DevOps wayBuilding deployment pipeline - DevOps way
Building deployment pipeline - DevOps way
 
New SpyLOG architechture (Highload 2008)
New SpyLOG architechture (Highload 2008)New SpyLOG architechture (Highload 2008)
New SpyLOG architechture (Highload 2008)
 
#MBLTdev: Знакомство с codesign (e-Legion)
#MBLTdev: Знакомство с codesign (e-Legion)#MBLTdev: Знакомство с codesign (e-Legion)
#MBLTdev: Знакомство с codesign (e-Legion)
 
ТЕХНОЛОГИЧЕСКАЯ ПОДДЕРЖКА И АВТОМАТИЗАЦИЯ ПРОЕКТНОЙ ДЕЯТЕЛЬНОСТИ
ТЕХНОЛОГИЧЕСКАЯ ПОДДЕРЖКА И АВТОМАТИЗАЦИЯ ПРОЕКТНОЙ ДЕЯТЕЛЬНОСТИТЕХНОЛОГИЧЕСКАЯ ПОДДЕРЖКА И АВТОМАТИЗАЦИЯ ПРОЕКТНОЙ ДЕЯТЕЛЬНОСТИ
ТЕХНОЛОГИЧЕСКАЯ ПОДДЕРЖКА И АВТОМАТИЗАЦИЯ ПРОЕКТНОЙ ДЕЯТЕЛЬНОСТИ
 
Froglogic Squish
Froglogic Squish Froglogic Squish
Froglogic Squish
 
Использование средств шифрования для обеспечения конфиденциальности в процесс...
Использование средств шифрования для обеспечения конфиденциальности в процесс...Использование средств шифрования для обеспечения конфиденциальности в процесс...
Использование средств шифрования для обеспечения конфиденциальности в процесс...
 
презентация икс 2014 новая
презентация икс 2014 новаяпрезентация икс 2014 новая
презентация икс 2014 новая
 
Обзор новых функций Континент TLS VPN 1.0.9
Обзор новых функций Континент TLS VPN 1.0.9Обзор новых функций Континент TLS VPN 1.0.9
Обзор новых функций Континент TLS VPN 1.0.9
 
Scaling PostgreSQL
Scaling PostgreSQLScaling PostgreSQL
Scaling PostgreSQL
 

Más de DotNetConf

Más de DotNetConf (20)

Как грабить корованы
Как грабить корованыКак грабить корованы
Как грабить корованы
 
Как анимировать тысячи объектов на карте и не подвесить браузер
Как анимировать тысячи объектов на карте и не подвесить браузерКак анимировать тысячи объектов на карте и не подвесить браузер
Как анимировать тысячи объектов на карте и не подвесить браузер
 
Микросервисы: взгляд сверху и в бок
Микросервисы: взгляд сверху и в бокМикросервисы: взгляд сверху и в бок
Микросервисы: взгляд сверху и в бок
 
Разработка надежных параллельных, распределенных приложений: быстро и дешево
Разработка надежных параллельных, распределенных приложений: быстро и дешевоРазработка надежных параллельных, распределенных приложений: быстро и дешево
Разработка надежных параллельных, распределенных приложений: быстро и дешево
 
Как приручить реактивное программирование
Как приручить реактивное программированиеКак приручить реактивное программирование
Как приручить реактивное программирование
 
Делаем очередь поверх Кассандры
Делаем очередь поверх КассандрыДелаем очередь поверх Кассандры
Делаем очередь поверх Кассандры
 
К искусству записи пользовательских историй
К искусству записи пользовательских историйК искусству записи пользовательских историй
К искусству записи пользовательских историй
 
Как это будет: ASP.NET Core
Как это будет: ASP.NET CoreКак это будет: ASP.NET Core
Как это будет: ASP.NET Core
 
Continuous Delivery для ASP.NET MVC проекта под Linux
Continuous Delivery для ASP.NET MVC проекта под LinuxContinuous Delivery для ASP.NET MVC проекта под Linux
Continuous Delivery для ASP.NET MVC проекта под Linux
 
Кроссплатформенная библиотека для Android и iOS: за и против
Кроссплатформенная библиотека для Android и iOS: за и противКроссплатформенная библиотека для Android и iOS: за и против
Кроссплатформенная библиотека для Android и iOS: за и против
 
Kotlin в production. Как и зачем?
Kotlin в production. Как и зачем?Kotlin в production. Как и зачем?
Kotlin в production. Как и зачем?
 
Как жить в согласии с SOLID?
Как жить в согласии с SOLID?Как жить в согласии с SOLID?
Как жить в согласии с SOLID?
 
Многопоточное программирование на C#, путевые заметки
Многопоточное программирование на C#, путевые заметкиМногопоточное программирование на C#, путевые заметки
Многопоточное программирование на C#, путевые заметки
 
Платформа Apache Hadoop
Платформа Apache HadoopПлатформа Apache Hadoop
Платформа Apache Hadoop
 
Робототехника для прикладных программистов
Робототехника для прикладных программистовРобототехника для прикладных программистов
Робототехника для прикладных программистов
 
Разработка Windows 8 приложений глазами WPF/Silverlight программиста
Разработка Windows 8 приложений глазами WPF/Silverlight программистаРазработка Windows 8 приложений глазами WPF/Silverlight программиста
Разработка Windows 8 приложений глазами WPF/Silverlight программиста
 
Inversion of Control в .NET
Inversion of Control в .NETInversion of Control в .NET
Inversion of Control в .NET
 
Введение в реактивный .NET
Введение в реактивный .NETВведение в реактивный .NET
Введение в реактивный .NET
 
Особенности передачи и обработки видео данных. Приправа из кодеков или с чем ...
Особенности передачи и обработки видео данных. Приправа из кодеков или с чем ...Особенности передачи и обработки видео данных. Приправа из кодеков или с чем ...
Особенности передачи и обработки видео данных. Приправа из кодеков или с чем ...
 
Машинное обучение на платформе .NET
Машинное обучение на платформе .NETМашинное обучение на платформе .NET
Машинное обучение на платформе .NET
 

Быстрый бэкенд с parse.com

  • 1. Быстрый бэкенд с parse.com Сергей Белозёров APPGRANULA appgranula.com 11-я конференция .NET разработчиков 31 октября 2015 dotnetconf.ru
  • 2. 2 BaaS Backend as a Service ● Забудьте об администрировании ● Масштабирование из коробки ● SDK ● Быстрый старт
  • 3. 3 Parse.com ● SDK под все возможные платформы ● Простой серверный фрэймворк ● Удобное управление контентом ● Аналитика ● Документация на русском языке ● Достойный бесплатный тариф
  • 4. 4 ● Аутентификация через email, телефон и соц. сети ● Хранение объектов в облаке ● Разграничение прав доступа ● Простые Push Notification Быстрый старт
  • 5. 5 Аутентификация ● Login - Password ● Email ● Facebook ● Twitter ● Можно прикрутить что угодно
  • 6. 6 Аутентификация var user = new Parse.User(); user.setUsername("HelloDotNetConf"); user.setPassword("12345") user.signUp(); Parse.User.logIn("HelloDotNetConf", "12345") Parse.FacebookUtils.logIn("user_likes,email")
  • 7. 7 Parse.Object ● String, Number, Boolean, Date ● Array, Object ● File ● GeoPoint ● Pointer, Relation
  • 8. 8 Parse.Object var place = new Parse.Object("Place"), geoPoint = new Parse.GeoPoint({latitude:55.1503989, longitude: 61.3638819}) place.set("position", geoPoint); place.set("name", "ParkCity"); place.save();
  • 9. 9 Parse.Query ● get(objectId) ● find() ○ equalTo ○ lessThan, greaterThan, … ○ containedIn, notContainedIn ○ exists, doesNotExist ○ …
  • 10. 10 Parse.Query var query = new Parse.Query("Place"); query.near("position", new Parse.GeoPoint({latitude:55.1503989, longitude: 61.3638819})) query.find().then(function(results){ //do something usefull with results }, function(error){ //oops })
  • 11. 11 Безопасность. ParseACL и CLP ● Access Control List ● Class Level Permission
  • 12. 12 Parse.Object. ParseACL var privatePlace = new Parse.Object("Place"); privatePlace.set("position", new Parse.GeoPoint({latitude: 55.1543989, longitude: 61.3668819})); privatePlace.set("name", "My Private Place"); privatePlace.setACL(Parse.User.current()); privatePlace.save();
  • 13. 13 ParsePush ● Cloud Code ● REST ● Client push ● Dev console
  • 14. 14 Cloud Code ● Cloud Function (хранимые процедуры) ● Http requests ● Webhooks ● AfterSave/BeforeSave (триггеры) ● Background Jobs (переодические фоновые задачи) ● Hosting ● Modules (готовые библиотеки)
  • 15. 15 Cloud Function Parse.Cloud.define("PlaceCreate", function(request, response) { }); var name = request.params.name, lat = request.params.lat, lng = request.params.lng, isPremium = request.params.isPremium, place = new Parse.Object("Place"), geoPoint = new Parse.GeoPoint({latitude:lat, longitude: lng}), user = Parse.User.current(); if(isPremium){ if(!user || !user.get("isPremium")) return response.error("Nope!"); } Parse.Cloud.useMasterKey(); place.save({ position : geoPoint, name: name, isPremium: isPremium }).then(function(place){ response.success(place); }, function(error){ response.error(error); });
  • 16. 16 Cloud Function Parse.Cloud.run("PlaceCreate",{ name: "Premium Gold V.I.P. Place", isPremium: true, lat: 55.1593989, lng: 61.3748819 }).then(function(place){ requestPlaces(); }, function(error){ alert(error.message); });
  • 17. 17 Триггеры ● beforeSave ● afterSave ● beforeDelete ● afterDelete Parse.Cloud.afterSave("Place", function (request) { Parse.Push.send({ channels: [ "Places"], data: { alert: "New place added - " + request.object.get("name") } } });
  • 19. 19 Modules ● MailGun, Mandrill, SendGrid ● Moment, Underscore ● ParseImage ● Stripe ● Twilio var _ = require('underscore'); var mailgun = require('mailgun');
  • 20. 20 Hosting $ echo "Hello World" > public/index.html $ parse deploy
  • 21. 21 Спасибо за внимание Сергей Белозёров APPGRANULA belozerow@gmail.com facebook.com/belozerovsv