SlideShare uma empresa Scribd logo
1 de 27
Толстый клиент + API –
новая
парадигма веб-разработки?
Андрей Лебедев
Толстый клиент + API –
удобно, эффективно, выгодно!
• Быстрый интерфейс удобен пользователю
• Эффективные преимущества MVC на клиенте для
разработчиков
• Запуск проекта с большей для бизнеса выгодой
Удобный пользовательский интерфейс
• Скорость отклика пользовательского интерфейса
• Минимизация траффика между сервером и клиентом
• Доступ к данным с различных устройств
Эффективные преимущества для разработчиков
• Архитектура Model – View на клиенте. Разделение бизнес-
логики и визуализации
• Модульное тестирование всех компонентов системы
• Четкие зоны ответственности – гарантия качества кода
Запуск проекта с большей для бизнеса
выгодой.
• Параллельная разработка с API
• Удобный доступ для партнеров и сторонних
разработчиков
• Поисковая оптимизация страниц с выгодой для себя
20 лет назад: толстый и тонкий.
Двухзвенная архитектура,
бизнес-логика на клиенте
Сервер
(БД)
Толстый клиент
(бизнес -
логика)
Трехзвенная архитектура,
бизнес-логика на сервере
БД
Сервер
приложений
(бизнес - логика)
Тонкий
клиент
Веб-сервер как сервер приложений
Model-View-Controller
DB
WEB Server
BROWSER
CONTROLVIEW
MODEL
HTTP
HTML
HTTP
IMAGES, CSS, JS
Проблемы современных веб-приложений
• Рендеринг страницы на сервере на каждый запрос
пользователя
• Рендеринг страницы браузером при каждой загрузке
Rest API
Серверное API и одностраничное веб-приложение
BROWSER
DB
CONTVIEW
MODEL
CSS
Javascript
WEB SERVER
HTML
CSS
JS
IMAGES
HTTP
HTML
HTTP
JSON, XML, …
Websockets
API как средство интеграции клиентов
API
Web Site Public API
Native App
REST API. Универсальный интерфейс работы с
данным.
• Scalability of component interactions
• Generality of interfaces
• Independent deployment of components
• Intermediary components to reduce latency, enforce
security and encapsulate legacy systems
REST API. Основные понятия
• Stateless
• Cacheable
• Uniform interface
REST API: HTTP запросы к серверу
• GET http://example.com/resources/
• GET http://example.com/resources/item19
• POST http://example.com/resources/
• PUT http://example.com/resources/item19
• DELETE http://example.com/resources/item19
REST API. Ответы от сервера
• HTTP Заголовки имеют значение!
• Формат тела ответа от сервера
JSON, XML, HTML, текст и т.д.
«Пугающие» особенности одностраничных
веб-приложение
• Сломанная кнопка «Назад»
• Проблема поисковой оптимизации страницы
• Отсутствие статистики о просмотренных страницах
• Ошибки на клиенте никто не мониторит
Сломанная кнопка «Назад»
$(window).bind(‘hashchange’, function(event) {
if(event.target.location.hash == ‘#!category’) {
// show category
}
});
Проблема поисковой оптимизации страницы
www.example.com!#key=value
www.example.com?_escaped_fragment_=key=value
Отсутствие статистики о просмотренных
страницах
_gaq.push(['_trackPageview', "/#{url}"])
Ошибки на клиенте никто не мониторит
Ajax
Javascript фреймворки и библиотеки
Современная архитектура web-приложения
DOM
VIEW
MODEL
TEMPLATE
STORAGE
???
Кросс-доменные запросы и политика одного
домена.
Server response head:
Access-Control-Allow-Origin: http://example.com
Или
Access-Control-Allow-Origin: *
Запросы с авторизацией без использования
cookies.
• Используйте кастомные заголовки в
запросе
Выводы
Вопросы и ответы

Mais conteúdo relacionado

Mais procurados

Тимофей Лавренюк (Provectus): "Progressive Web Apps in Production"
Тимофей Лавренюк (Provectus): "Progressive Web Apps in Production"Тимофей Лавренюк (Provectus): "Progressive Web Apps in Production"
Тимофей Лавренюк (Provectus): "Progressive Web Apps in Production"
Provectus
 
Rich-client, или Как я перестал боятся и полюбил велосипеды / Владимир Дупелев
Rich-client, или Как я перестал боятся и полюбил велосипеды / Владимир ДупелевRich-client, или Как я перестал боятся и полюбил велосипеды / Владимир Дупелев
Rich-client, или Как я перестал боятся и полюбил велосипеды / Владимир Дупелев
Ontico
 
Java cloud platforms. jee conf 2012
Java cloud platforms. jee conf 2012Java cloud platforms. jee conf 2012
Java cloud platforms. jee conf 2012
Yuriy Ryashko
 
Solit 2014, Измеряем производительность Webприложения на сторне клиента с пом...
Solit 2014, Измеряем производительность Webприложения на сторне клиента с пом...Solit 2014, Измеряем производительность Webприложения на сторне клиента с пом...
Solit 2014, Измеряем производительность Webприложения на сторне клиента с пом...
solit
 
Drupal и мобильные устройства комелин константин
Drupal и мобильные устройства комелин константинDrupal и мобильные устройства комелин константин
Drupal и мобильные устройства комелин константин
drupalconf
 

Mais procurados (20)

Антон Киршанов — Особенности архитектуры Single Page Application
Антон Киршанов — Особенности архитектуры Single Page Application Антон Киршанов — Особенности архитектуры Single Page Application
Антон Киршанов — Особенности архитектуры Single Page Application
 
Тимофей Лавренюк (Provectus): "Progressive Web Apps in Production"
Тимофей Лавренюк (Provectus): "Progressive Web Apps in Production"Тимофей Лавренюк (Provectus): "Progressive Web Apps in Production"
Тимофей Лавренюк (Provectus): "Progressive Web Apps in Production"
 
WSS Docs
WSS DocsWSS Docs
WSS Docs
 
Особенности разработки мобильных приложений на платформе «1С-Битрикс: Мобильн...
Особенности разработки мобильных приложений на платформе «1С-Битрикс: Мобильн...Особенности разработки мобильных приложений на платформе «1С-Битрикс: Мобильн...
Особенности разработки мобильных приложений на платформе «1С-Битрикс: Мобильн...
 
Stas Sultanov "REST again? Oh, come on!"
Stas Sultanov "REST again? Oh, come on!"Stas Sultanov "REST again? Oh, come on!"
Stas Sultanov "REST again? Oh, come on!"
 
Руслан Близнюк, PROMO.UA — «Google Data Studio – первые результаты», доклад н...
Руслан Близнюк, PROMO.UA — «Google Data Studio – первые результаты», доклад н...Руслан Близнюк, PROMO.UA — «Google Data Studio – первые результаты», доклад н...
Руслан Близнюк, PROMO.UA — «Google Data Studio – первые результаты», доклад н...
 
Rich-client, или Как я перестал боятся и полюбил велосипеды / Владимир Дупелев
Rich-client, или Как я перестал боятся и полюбил велосипеды / Владимир ДупелевRich-client, или Как я перестал боятся и полюбил велосипеды / Владимир Дупелев
Rich-client, или Как я перестал боятся и полюбил велосипеды / Владимир Дупелев
 
Java cloud platforms. jee conf 2012
Java cloud platforms. jee conf 2012Java cloud platforms. jee conf 2012
Java cloud platforms. jee conf 2012
 
Изоморфные приложения на JavaScript - Озеров Илья. (Инвентос)
Изоморфные приложения на JavaScript - Озеров Илья. (Инвентос)Изоморфные приложения на JavaScript - Озеров Илья. (Инвентос)
Изоморфные приложения на JavaScript - Озеров Илья. (Инвентос)
 
Асинхронный биллинг для службы такси - IzhDevCom November 2014
Асинхронный биллинг для службы такси - IzhDevCom November 2014Асинхронный биллинг для службы такси - IzhDevCom November 2014
Асинхронный биллинг для службы такси - IzhDevCom November 2014
 
CloudsNN 2013 Гаджиев Георгий. Windows azure iaas обзор
CloudsNN 2013 Гаджиев Георгий. Windows azure iaas обзорCloudsNN 2013 Гаджиев Георгий. Windows azure iaas обзор
CloudsNN 2013 Гаджиев Георгий. Windows azure iaas обзор
 
SECON'2016. Алексеев Олег, Живой API
SECON'2016. Алексеев Олег, Живой APISECON'2016. Алексеев Олег, Живой API
SECON'2016. Алексеев Олег, Живой API
 
"Создание высоконагруженного интернет-магазина на UMI.CMS" Дмитрий Сизов, исп...
"Создание высоконагруженного интернет-магазина на UMI.CMS" Дмитрий Сизов, исп..."Создание высоконагруженного интернет-магазина на UMI.CMS" Дмитрий Сизов, исп...
"Создание высоконагруженного интернет-магазина на UMI.CMS" Дмитрий Сизов, исп...
 
ReactJS: Свет в конце тоннеля
ReactJS: Свет в конце тоннеляReactJS: Свет в конце тоннеля
ReactJS: Свет в конце тоннеля
 
Solit 2014, Измеряем производительность Webприложения на сторне клиента с пом...
Solit 2014, Измеряем производительность Webприложения на сторне клиента с пом...Solit 2014, Измеряем производительность Webприложения на сторне клиента с пом...
Solit 2014, Измеряем производительность Webприложения на сторне клиента с пом...
 
Преимущества PHP 7: от D7 до новой виртуальной машины
Преимущества PHP 7:  от D7 до новой виртуальной машиныПреимущества PHP 7:  от D7 до новой виртуальной машины
Преимущества PHP 7: от D7 до новой виртуальной машины
 
Rambler.iOS #4: Как мы стали писать бизнес-логику
Rambler.iOS #4: Как мы стали писать бизнес-логикуRambler.iOS #4: Как мы стали писать бизнес-логику
Rambler.iOS #4: Как мы стали писать бизнес-логику
 
6.dev meetup2 wistia_android_y_bondarev
6.dev meetup2 wistia_android_y_bondarev6.dev meetup2 wistia_android_y_bondarev
6.dev meetup2 wistia_android_y_bondarev
 
Drupal и мобильные устройства
Drupal и мобильные устройстваDrupal и мобильные устройства
Drupal и мобильные устройства
 
Drupal и мобильные устройства комелин константин
Drupal и мобильные устройства комелин константинDrupal и мобильные устройства комелин константин
Drupal и мобильные устройства комелин константин
 

Semelhante a API плюс толстый клиент – новая парадигма веб-разработки? / Андрей Лебедев (Грамант)

Дизайн REST API для высокопроизводительных систем / Александр Лебедев (Новые ...
Дизайн REST API для высокопроизводительных систем / Александр Лебедев (Новые ...Дизайн REST API для высокопроизводительных систем / Александр Лебедев (Новые ...
Дизайн REST API для высокопроизводительных систем / Александр Лебедев (Новые ...
Ontico
 
Новые возможности IBM WebSphere Portal v8 и IBM WCM v8
Новые возможности IBM WebSphere Portal v8 и IBM WCM v8Новые возможности IBM WebSphere Portal v8 и IBM WCM v8
Новые возможности IBM WebSphere Portal v8 и IBM WCM v8
Anatoly Kireev
 
Платформа Docsvision
Платформа DocsvisionПлатформа Docsvision
Платформа Docsvision
Docsvision
 
1С-Битрикс: Управление сайтом Версия .NET
1С-Битрикс: Управление сайтом Версия .NET1С-Битрикс: Управление сайтом Версия .NET
1С-Битрикс: Управление сайтом Версия .NET
Media Gorod
 
DUMP-2012 - Мобильные технологии - "Как мы выстраиваем разработку сервиса под...
DUMP-2012 - Мобильные технологии - "Как мы выстраиваем разработку сервиса под...DUMP-2012 - Мобильные технологии - "Как мы выстраиваем разработку сервиса под...
DUMP-2012 - Мобильные технологии - "Как мы выстраиваем разработку сервиса под...
it-people
 
2013 09 17 архитектура веб-приложений
2013 09 17 архитектура веб-приложений2013 09 17 архитектура веб-приложений
2013 09 17 архитектура веб-приложений
Yandex
 
Roman Zdebskiy - Client vs. Browser
Roman Zdebskiy - Client vs. BrowserRoman Zdebskiy - Client vs. Browser
Roman Zdebskiy - Client vs. Browser
Andrew Mayorov
 
битрикс Framework сергей рыжиков
битрикс Framework   сергей рыжиковбитрикс Framework   сергей рыжиков
битрикс Framework сергей рыжиков
Media Gorod
 

Semelhante a API плюс толстый клиент – новая парадигма веб-разработки? / Андрей Лебедев (Грамант) (20)

Дизайн REST API для высокопроизводительных систем / Александр Лебедев (Новые ...
Дизайн REST API для высокопроизводительных систем / Александр Лебедев (Новые ...Дизайн REST API для высокопроизводительных систем / Александр Лебедев (Новые ...
Дизайн REST API для высокопроизводительных систем / Александр Лебедев (Новые ...
 
Web and mobile development for intersystems caché, Eduard Lebedyuk
Web and mobile development for intersystems caché, Eduard LebedyukWeb and mobile development for intersystems caché, Eduard Lebedyuk
Web and mobile development for intersystems caché, Eduard Lebedyuk
 
Новые возможности IBM WebSphere Portal v8 и IBM WCM v8
Новые возможности IBM WebSphere Portal v8 и IBM WCM v8Новые возможности IBM WebSphere Portal v8 и IBM WCM v8
Новые возможности IBM WebSphere Portal v8 и IBM WCM v8
 
ITmozg, Даниил Павлючков
ITmozg, Даниил ПавлючковITmozg, Даниил Павлючков
ITmozg, Даниил Павлючков
 
Платформа Docsvision
Платформа DocsvisionПлатформа Docsvision
Платформа Docsvision
 
1С-Битрикс: Управление сайтом Версия .NET
1С-Битрикс: Управление сайтом Версия .NET1С-Битрикс: Управление сайтом Версия .NET
1С-Битрикс: Управление сайтом Версия .NET
 
DUMP-2012 - Мобильные технологии - "Как мы выстраиваем разработку сервиса под...
DUMP-2012 - Мобильные технологии - "Как мы выстраиваем разработку сервиса под...DUMP-2012 - Мобильные технологии - "Как мы выстраиваем разработку сервиса под...
DUMP-2012 - Мобильные технологии - "Как мы выстраиваем разработку сервиса под...
 
2013 09 17 архитектура веб-приложений
2013 09 17 архитектура веб-приложений2013 09 17 архитектура веб-приложений
2013 09 17 архитектура веб-приложений
 
Андрей Завадский "Бессерверная архитектура"
 Андрей Завадский "Бессерверная архитектура" Андрей Завадский "Бессерверная архитектура"
Андрей Завадский "Бессерверная архитектура"
 
доклад на вмк 15.10.2015
доклад на вмк 15.10.2015доклад на вмк 15.10.2015
доклад на вмк 15.10.2015
 
Введение во фронтенд-разработку
Введение во фронтенд-разработкуВведение во фронтенд-разработку
Введение во фронтенд-разработку
 
Экскурс в мир WEB разработки
Экскурс в мир WEB разработкиЭкскурс в мир WEB разработки
Экскурс в мир WEB разработки
 
Современные технологии сайтостроения для решения бизнес-задач
Современные технологии сайтостроения для решения бизнес-задач Современные технологии сайтостроения для решения бизнес-задач
Современные технологии сайтостроения для решения бизнес-задач
 
3 Все о разработке интернет проектов
3 Все о разработке интернет проектов3 Все о разработке интернет проектов
3 Все о разработке интернет проектов
 
1С-Битрикс: От Старта к Большому бизнесу
1С-Битрикс: От Старта к Большому бизнесу1С-Битрикс: От Старта к Большому бизнесу
1С-Битрикс: От Старта к Большому бизнесу
 
Roman Zdebskiy - Client vs. Browser
Roman Zdebskiy - Client vs. BrowserRoman Zdebskiy - Client vs. Browser
Roman Zdebskiy - Client vs. Browser
 
битрикс Framework сергей рыжиков
битрикс Framework   сергей рыжиковбитрикс Framework   сергей рыжиков
битрикс Framework сергей рыжиков
 
Обзор возможностей IBM WebSphere Portal v8
Обзор возможностей IBM WebSphere Portal v8Обзор возможностей IBM WebSphere Portal v8
Обзор возможностей IBM WebSphere Portal v8
 
Лучшие практики корпоративной разработки. Лекция 0: обзор курса.
Лучшие практики корпоративной разработки. Лекция 0: обзор курса.Лучшие практики корпоративной разработки. Лекция 0: обзор курса.
Лучшие практики корпоративной разработки. Лекция 0: обзор курса.
 
Владимир Никонов "Вызовы при разработке enterprise продукта"
Владимир Никонов "Вызовы при разработке enterprise продукта"Владимир Никонов "Вызовы при разработке enterprise продукта"
Владимир Никонов "Вызовы при разработке enterprise продукта"
 

Mais de Ontico

Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...
Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...
Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...
Ontico
 

Mais de Ontico (20)

One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасье...
One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасье...One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасье...
One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасье...
 
Масштабируя DNS / Артем Гавриченков (Qrator Labs)
Масштабируя DNS / Артем Гавриченков (Qrator Labs)Масштабируя DNS / Артем Гавриченков (Qrator Labs)
Масштабируя DNS / Артем Гавриченков (Qrator Labs)
 
Создание BigData-платформы для ФГУП Почта России / Андрей Бащенко (Luxoft)
Создание BigData-платформы для ФГУП Почта России / Андрей Бащенко (Luxoft)Создание BigData-платформы для ФГУП Почта России / Андрей Бащенко (Luxoft)
Создание BigData-платформы для ФГУП Почта России / Андрей Бащенко (Luxoft)
 
Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...
Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...
Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...
 
Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre...
Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre...Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre...
Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre...
 
PostgreSQL Configuration for Humans / Alvaro Hernandez (OnGres)
PostgreSQL Configuration for Humans / Alvaro Hernandez (OnGres)PostgreSQL Configuration for Humans / Alvaro Hernandez (OnGres)
PostgreSQL Configuration for Humans / Alvaro Hernandez (OnGres)
 
Inexpensive Datamasking for MySQL with ProxySQL — Data Anonymization for Deve...
Inexpensive Datamasking for MySQL with ProxySQL — Data Anonymization for Deve...Inexpensive Datamasking for MySQL with ProxySQL — Data Anonymization for Deve...
Inexpensive Datamasking for MySQL with ProxySQL — Data Anonymization for Deve...
 
Опыт разработки модуля межсетевого экранирования для MySQL / Олег Брославский...
Опыт разработки модуля межсетевого экранирования для MySQL / Олег Брославский...Опыт разработки модуля межсетевого экранирования для MySQL / Олег Брославский...
Опыт разработки модуля межсетевого экранирования для MySQL / Олег Брославский...
 
ProxySQL Use Case Scenarios / Alkin Tezuysal (Percona)
ProxySQL Use Case Scenarios / Alkin Tezuysal (Percona)ProxySQL Use Case Scenarios / Alkin Tezuysal (Percona)
ProxySQL Use Case Scenarios / Alkin Tezuysal (Percona)
 
MySQL Replication — Advanced Features / Петр Зайцев (Percona)
MySQL Replication — Advanced Features / Петр Зайцев (Percona)MySQL Replication — Advanced Features / Петр Зайцев (Percona)
MySQL Replication — Advanced Features / Петр Зайцев (Percona)
 
Внутренний open-source. Как разрабатывать мобильное приложение большим количе...
Внутренний open-source. Как разрабатывать мобильное приложение большим количе...Внутренний open-source. Как разрабатывать мобильное приложение большим количе...
Внутренний open-source. Как разрабатывать мобильное приложение большим количе...
 
Подробно о том, как Causal Consistency реализовано в MongoDB / Михаил Тюленев...
Подробно о том, как Causal Consistency реализовано в MongoDB / Михаил Тюленев...Подробно о том, как Causal Consistency реализовано в MongoDB / Михаил Тюленев...
Подробно о том, как Causal Consistency реализовано в MongoDB / Михаил Тюленев...
 
Балансировка на скорости проводов. Без ASIC, без ограничений. Решения NFWare ...
Балансировка на скорости проводов. Без ASIC, без ограничений. Решения NFWare ...Балансировка на скорости проводов. Без ASIC, без ограничений. Решения NFWare ...
Балансировка на скорости проводов. Без ASIC, без ограничений. Решения NFWare ...
 
Перехват трафика — мифы и реальность / Евгений Усков (Qrator Labs)
Перехват трафика — мифы и реальность / Евгений Усков (Qrator Labs)Перехват трафика — мифы и реальность / Евгений Усков (Qrator Labs)
Перехват трафика — мифы и реальность / Евгений Усков (Qrator Labs)
 
И тогда наверняка вдруг запляшут облака! / Алексей Сушков (ПЕТЕР-СЕРВИС)
И тогда наверняка вдруг запляшут облака! / Алексей Сушков (ПЕТЕР-СЕРВИС)И тогда наверняка вдруг запляшут облака! / Алексей Сушков (ПЕТЕР-СЕРВИС)
И тогда наверняка вдруг запляшут облака! / Алексей Сушков (ПЕТЕР-СЕРВИС)
 
Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)
Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)
Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)
 
Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.)
Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.)Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.)
Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.)
 
100500 способов кэширования в Oracle Database или как достичь максимальной ск...
100500 способов кэширования в Oracle Database или как достичь максимальной ск...100500 способов кэширования в Oracle Database или как достичь максимальной ск...
100500 способов кэширования в Oracle Database или как достичь максимальной ск...
 
Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает...
Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает...Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает...
Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает...
 
Механизмы мониторинга баз данных: взгляд изнутри / Дмитрий Еманов (Firebird P...
Механизмы мониторинга баз данных: взгляд изнутри / Дмитрий Еманов (Firebird P...Механизмы мониторинга баз данных: взгляд изнутри / Дмитрий Еманов (Firebird P...
Механизмы мониторинга баз данных: взгляд изнутри / Дмитрий Еманов (Firebird P...
 

API плюс толстый клиент – новая парадигма веб-разработки? / Андрей Лебедев (Грамант)