Rich-client, или Как я перестал боятся и полюбил велосипеды / Владимир Дупелев

Ontico
OnticoOntico
Rich-client, или Как я перестал
бояться и полюбил велосипеды
Владимир Дупелев
Rich UI приложение
• Функциональность без перезагрузки страницы
• Большой объем данных
• Разнообразные визуальные компоненты
• Вложенные диалоги
• Быстрый отклик
• Стабильность
Rich-client, или Как я перестал боятся и полюбил велосипеды / Владимир Дупелев
Где проблемы?
• Архитектура
• Отображение
• Поддержка
Архитектура Rich UI приложения
• Уровни абстракции, модули
• Разрешение зависимостей
• Асинхронная работа с сервером
Разрешение зависимостей
• Поиск файлов
• Объявления модулей
• Кеширование модулей
• Создание синглетонов
• Перезапись
Спецификация Модуля:
- CommonJS / Modules
- CommonJS / Packages
- AMD
Быстрый загрузчик
Модуль RequreJS
Имя можно опустить
Магия поиска модуля
Циркулярные зависимости
Время и память
Изменения
Имя модуля = Путь в проекте
Поиск только по имени
Доверяйте программистам
Соберите ядро в один файл
Определение модуля
AMD
define(['a.js', 'b.js'],
function(A, B) {…})
Не сопоставить пути и аргументы
Добавить в середину невозможно
Конфликты имен
Изменения
define({A:'a.js', B:'b.js'},
function($$) {…})
Группировка путей и имен модулей
Легко изменять, удалять, добавлять
Есть корневое пространство
Архитектура Rich UI приложения
• Уровни абстракции, модули
• Разрешение зависимостей. Inversion of control
• Асинхронная работа с сервером
Обещания
Шаблон future, в библиотеке JQuery - Deferred
• Откажитесь от цепочек .then
• Динамический require ведет к deferred
• Разрешите модули заранее, используйте их синхронно
Где проблемы?
• Архитектура
• Отображение
• Поддержка
• Model — чистые данные
• ModelView — активные данные + команды
• Bindings — связь активных данных и компонентов
• View — компоненты и DOM
Шаблон MVVM
• Различные источники и схемы данных
• Несколько операций на чтение и запись
• Каскады асинхронных команд
• Прерывание и подключение
• Агрегация в сервисном слое
Model — чистые данные
• Содержит свойства или набор сущностей
• Дает их изменить
• Бросает события
• Не воздействует на вложенные активные данные
• Содержит бизнес-логику
• Аккуратно разрушается
ModelView — активные данные
Backbone
Разбор параметров
Опции для событий
Событие «всё изменилось»
Отслеживание циклов
Установка свойств
Изменения
Пара - имя, значение
Отдельный код для silent
Никогда не используется
Тестирование
Backbone, AngularJS
Разбор параметров
Не различает цель
Всегда отрабатывает
События изменения
Изменения
Однозначные параметры
Отдельный код для self trigger
Проверка на disposed
• Компонент — тоже активная модель
• Отображается в DOM
• Следит за свойствами, обновляет DOM
• Следит за событиями DOM, обновляет свойства
• Не содержит бизнес-логики
• Аккуратно разрушается
View — компоненты и DOM
Представление DOM
JQuery обертка
Читает из html строки
Ссылка на DOM Element
Добавление .append()
Вставка в броузер .append()
Изменения
Свой dsl
Объект в AST со свойством id
Конкатинация строк
Вставка в броузер .innerHTML
Вставка 10 000 <div>
.append()
500-1000мс
Не теряем DOM Element
Установка событий когда угодно
Strings + InnerHTML
30-60мс
Ленивый поиск по id
Установка событий после вставки
Где проблемы?
• Архитектура
• Отображение
• Поддержка
Поддержка Rich UI приложения
• Лог
– Отдавайте на сервер
– Покажите объекты в JSON
• Дамп состояния
– Данные — малый объем, быстро
– Компонеты — большой объем, медленно
• Консоль
Спасибо за внимание!
1 de 22

Recomendados

RDSDataSource: Flux, Redux, ReSwift por
RDSDataSource: Flux, Redux, ReSwiftRDSDataSource: Flux, Redux, ReSwift
RDSDataSource: Flux, Redux, ReSwiftRAMBLER&Co
466 visualizações33 slides
CloudsNN 2013 Гаджиев Георгий. Windows azure iaas обзор por
CloudsNN 2013 Гаджиев Георгий. Windows azure iaas обзорCloudsNN 2013 Гаджиев Георгий. Windows azure iaas обзор
CloudsNN 2013 Гаджиев Георгий. Windows azure iaas обзорClouds NN
709 visualizações53 slides
CQRS innovations por
CQRS innovationsCQRS innovations
CQRS innovationsAndrey Lomakin
2.2K visualizações58 slides
ASP.NET MVC por
ASP.NET MVCASP.NET MVC
ASP.NET MVCGetDev.NET
784 visualizações21 slides
PowerShell DSC и SharePoint 2016 por
PowerShell DSC и SharePoint 2016PowerShell DSC и SharePoint 2016
PowerShell DSC и SharePoint 2016Vitaly Zhukov
536 visualizações13 slides
JavaScript design patterns overview por
JavaScript design patterns overview JavaScript design patterns overview
JavaScript design patterns overview Kseniya Redunova
1.7K visualizações32 slides

Mais conteúdo relacionado

Mais procurados

ASP.NET MVC: new era? por
ASP.NET MVC: new era?ASP.NET MVC: new era?
ASP.NET MVC: new era?Alexander Konduforov
1.6K visualizações20 slides
Azure - хранение данных в облаке por
Azure - хранение данных в облакеAzure - хранение данных в облаке
Azure - хранение данных в облакеAlexander Babich
263 visualizações64 slides
Интеграция TeamCity и сервера символов | Алексей Соловьев por
Интеграция TeamCity и сервера символов | Алексей СоловьевИнтеграция TeamCity и сервера символов | Алексей Соловьев
Интеграция TeamCity и сервера символов | Алексей СоловьевPositive Hack Days
2.3K visualizações9 slides
knockout.js por
knockout.jsknockout.js
knockout.jsAnton Patrushev
691 visualizações31 slides
API в SAAS, с облаком и без: ресурсы, SLA, балансировка, расширяемость por
API в SAAS, с облаком и без: ресурсы, SLA, балансировка, расширяемостьAPI в SAAS, с облаком и без: ресурсы, SLA, балансировка, расширяемость
API в SAAS, с облаком и без: ресурсы, SLA, балансировка, расширяемостьEatDog
463 visualizações41 slides
04-Hibernate. Создание проекта por
04-Hibernate. Создание проекта04-Hibernate. Создание проекта
04-Hibernate. Создание проектаRoman Brovko
3.1K visualizações7 slides

Mais procurados(20)

ASP.NET MVC: new era? por Alexander Konduforov
ASP.NET MVC: new era?ASP.NET MVC: new era?
ASP.NET MVC: new era?
Alexander Konduforov1.6K visualizações
Azure - хранение данных в облаке por Alexander Babich
Azure - хранение данных в облакеAzure - хранение данных в облаке
Azure - хранение данных в облаке
Alexander Babich263 visualizações
Интеграция TeamCity и сервера символов | Алексей Соловьев por Positive Hack Days
Интеграция TeamCity и сервера символов | Алексей СоловьевИнтеграция TeamCity и сервера символов | Алексей Соловьев
Интеграция TeamCity и сервера символов | Алексей Соловьев
Positive Hack Days2.3K visualizações
knockout.js por Anton Patrushev
knockout.jsknockout.js
knockout.js
Anton Patrushev691 visualizações
API в SAAS, с облаком и без: ресурсы, SLA, балансировка, расширяемость por EatDog
API в SAAS, с облаком и без: ресурсы, SLA, балансировка, расширяемостьAPI в SAAS, с облаком и без: ресурсы, SLA, балансировка, расширяемость
API в SAAS, с облаком и без: ресурсы, SLA, балансировка, расширяемость
EatDog463 visualizações
04-Hibernate. Создание проекта por Roman Brovko
04-Hibernate. Создание проекта04-Hibernate. Создание проекта
04-Hibernate. Создание проекта
Roman Brovko3.1K visualizações
Drupal и мобильные устройства por Konstantin Komelin
Drupal и мобильные устройстваDrupal и мобильные устройства
Drupal и мобильные устройства
Konstantin Komelin721 visualizações
Drupal и мобильные устройства комелин константин por drupalconf
Drupal и мобильные устройства комелин константинDrupal и мобильные устройства комелин константин
Drupal и мобильные устройства комелин константин
drupalconf498 visualizações
ВІТАЛІЙ ГОНЧАРУК «За допомогою чого пишуться серйозні веб додатки на .NET» O... por WDDay
ВІТАЛІЙ ГОНЧАРУК «За допомогою чого пишуться серйозні веб додатки на .NET»  O...ВІТАЛІЙ ГОНЧАРУК «За допомогою чого пишуться серйозні веб додатки на .NET»  O...
ВІТАЛІЙ ГОНЧАРУК «За допомогою чого пишуться серйозні веб додатки на .NET» O...
WDDay 20 visualizações
Azure - подведение итогов por Alexander Babich
Azure - подведение итоговAzure - подведение итогов
Azure - подведение итогов
Alexander Babich302 visualizações
Евгений Остапчук "Tips&Tricks for ASP.NET MVC performance" por Fwdays
Евгений Остапчук "Tips&Tricks for ASP.NET MVC performance"Евгений Остапчук "Tips&Tricks for ASP.NET MVC performance"
Евгений Остапчук "Tips&Tricks for ASP.NET MVC performance"
Fwdays518 visualizações
Андрей Чебукин "Построение успешных API" por Fwdays
Андрей Чебукин "Построение успешных API"Андрей Чебукин "Построение успешных API"
Андрей Чебукин "Построение успешных API"
Fwdays853 visualizações
02-Hibernate. Hibernate por Roman Brovko
02-Hibernate. Hibernate02-Hibernate. Hibernate
02-Hibernate. Hibernate
Roman Brovko3K visualizações
API плюс толстый клиент – новая парадигма веб-разработки? / Андрей Лебедев (Г... por Ontico
API плюс толстый клиент – новая парадигма веб-разработки? / Андрей Лебедев (Г...API плюс толстый клиент – новая парадигма веб-разработки? / Андрей Лебедев (Г...
API плюс толстый клиент – новая парадигма веб-разработки? / Андрей Лебедев (Г...
Ontico1.1K visualizações
Тестирование web-приложений на базе технологий Ruby/Cucumber/Watir Webdriver por Alex Mikitenko
Тестирование web-приложений на базе технологий Ruby/Cucumber/Watir WebdriverТестирование web-приложений на базе технологий Ruby/Cucumber/Watir Webdriver
Тестирование web-приложений на базе технологий Ruby/Cucumber/Watir Webdriver
Alex Mikitenko752 visualizações
Построение собственного JS SDK — зачем и как? por buranLcme
Построение собственного JS SDK — зачем и как?Построение собственного JS SDK — зачем и как?
Построение собственного JS SDK — зачем и как?
buranLcme2.4K visualizações
Сергей Рыжиков (1С-Битрикс) por Ontico
Сергей Рыжиков (1С-Битрикс)Сергей Рыжиков (1С-Битрикс)
Сергей Рыжиков (1С-Битрикс)
Ontico1.6K visualizações
Разработка бизнес-приложений на OpenUI5 — Николай Надоричев, MOLGA Consulting por Yandex
Разработка бизнес-приложений на OpenUI5 — Николай Надоричев, MOLGA ConsultingРазработка бизнес-приложений на OpenUI5 — Николай Надоричев, MOLGA Consulting
Разработка бизнес-приложений на OpenUI5 — Николай Надоричев, MOLGA Consulting
Yandex1.5K visualizações
Объединенная вычислительная система Cisco UCS. Часть 2 por Cisco Russia
Объединенная вычислительная система Cisco UCS. Часть 2Объединенная вычислительная система Cisco UCS. Часть 2
Объединенная вычислительная система Cisco UCS. Часть 2
Cisco Russia 436 visualizações
Диагностика производительности корпоративных приложений (Малышев) por КРОК
Диагностика производительности корпоративных приложений (Малышев)Диагностика производительности корпоративных приложений (Малышев)
Диагностика производительности корпоративных приложений (Малышев)
КРОК145 visualizações

Similar a Rich-client, или Как я перестал боятся и полюбил велосипеды / Владимир Дупелев

ASP.NET, MVC, ASP.NET MVC por
ASP.NET, MVC, ASP.NET MVCASP.NET, MVC, ASP.NET MVC
ASP.NET, MVC, ASP.NET MVCGetDev.NET
2.6K visualizações29 slides
Simonova sql server-enginetesting por
Simonova sql server-enginetestingSimonova sql server-enginetesting
Simonova sql server-enginetestingComputer Science Club
258 visualizações35 slides
Simonova sql server-enginetesting por
Simonova sql server-enginetestingSimonova sql server-enginetesting
Simonova sql server-enginetestingLiloSEA
254 visualizações35 slides
Simonova CSEDays por
Simonova CSEDaysSimonova CSEDays
Simonova CSEDaysLiloSEA
216 visualizações35 slides
Katerina Simonova CSEDays por
Katerina Simonova CSEDaysKaterina Simonova CSEDays
Katerina Simonova CSEDaysLiloSEA
278 visualizações35 slides
Katerina Simonova CSEDays por
Katerina Simonova CSEDaysKaterina Simonova CSEDays
Katerina Simonova CSEDaysLiloSEA
1 visão35 slides

Similar a Rich-client, или Как я перестал боятся и полюбил велосипеды / Владимир Дупелев(20)

ASP.NET, MVC, ASP.NET MVC por GetDev.NET
ASP.NET, MVC, ASP.NET MVCASP.NET, MVC, ASP.NET MVC
ASP.NET, MVC, ASP.NET MVC
GetDev.NET2.6K visualizações
Simonova sql server-enginetesting por Computer Science Club
Simonova sql server-enginetestingSimonova sql server-enginetesting
Simonova sql server-enginetesting
Computer Science Club258 visualizações
Simonova sql server-enginetesting por LiloSEA
Simonova sql server-enginetestingSimonova sql server-enginetesting
Simonova sql server-enginetesting
LiloSEA254 visualizações
Simonova CSEDays por LiloSEA
Simonova CSEDaysSimonova CSEDays
Simonova CSEDays
LiloSEA216 visualizações
Katerina Simonova CSEDays por LiloSEA
Katerina Simonova CSEDaysKaterina Simonova CSEDays
Katerina Simonova CSEDays
LiloSEA278 visualizações
Katerina Simonova CSEDays por LiloSEA
Katerina Simonova CSEDaysKaterina Simonova CSEDays
Katerina Simonova CSEDays
LiloSEA1 visão
Создание повторно используемых бизнес моделей с помощью технологии Domain Com... por GetDev.NET
Создание повторно используемых бизнес моделей с помощью технологии Domain Com...Создание повторно используемых бизнес моделей с помощью технологии Domain Com...
Создание повторно используемых бизнес моделей с помощью технологии Domain Com...
GetDev.NET1.5K visualizações
И снова разработка под iOS. Павел Тайкало por Stanfy
И снова разработка под iOS. Павел ТайкалоИ снова разработка под iOS. Павел Тайкало
И снова разработка под iOS. Павел Тайкало
Stanfy659 visualizações
Расширяемая платформа для создания и управления автоматизированными тестами н... por jazzteam
Расширяемая платформа для создания и управления автоматизированными тестами н...Расширяемая платформа для создания и управления автоматизированными тестами н...
Расширяемая платформа для создания и управления автоматизированными тестами н...
jazzteam1.9K visualizações
Database Tuning Method & Technics por Denis Beskov
Database Tuning Method & TechnicsDatabase Tuning Method & Technics
Database Tuning Method & Technics
Denis Beskov630 visualizações
09 - Web-технологии. MVC фреймворки por Roman Brovko
09 - Web-технологии. MVC фреймворки09 - Web-технологии. MVC фреймворки
09 - Web-технологии. MVC фреймворки
Roman Brovko158 visualizações
Great functional testing with WebDriver and Thucydides por Mikalai Alimenkou
Great functional testing with WebDriver and ThucydidesGreat functional testing with WebDriver and Thucydides
Great functional testing with WebDriver and Thucydides
Mikalai Alimenkou8.9K visualizações
14-02-26 DBA 101_ как найти и устранить причины замедления работы БД por Andrew Sovtsov
14-02-26 DBA 101_ как найти и устранить причины замедления работы БД14-02-26 DBA 101_ как найти и устранить причины замедления работы БД
14-02-26 DBA 101_ как найти и устранить причины замедления работы БД
Andrew Sovtsov403 visualizações
Платформа Docsvision por Docsvision
Платформа DocsvisionПлатформа Docsvision
Платформа Docsvision
Docsvision13.4K visualizações
Версионирование требований. Бейзлайны por Evgeny Savitsky
Версионирование требований. БейзлайныВерсионирование требований. Бейзлайны
Версионирование требований. Бейзлайны
Evgeny Savitsky402 visualizações
Стандарты и соглашения в сложных ООП-приложениях por Magecom Ukraine
Стандарты и соглашения в сложных ООП-приложенияхСтандарты и соглашения в сложных ООП-приложениях
Стандарты и соглашения в сложных ООП-приложениях
Magecom Ukraine539 visualizações
FrontTalks: Роман Дворнов (Ostrovok.ru), «Basis.js: почему я не бросил разраб... por Yandex
FrontTalks: Роман Дворнов (Ostrovok.ru), «Basis.js: почему я не бросил разраб...FrontTalks: Роман Дворнов (Ostrovok.ru), «Basis.js: почему я не бросил разраб...
FrontTalks: Роман Дворнов (Ostrovok.ru), «Basis.js: почему я не бросил разраб...
Yandex1.1K visualizações
Basis.js - почему я не бросил разрабатывать свой фреймворк (extended) por Roman Dvornov
Basis.js - почему я не бросил разрабатывать свой фреймворк (extended)Basis.js - почему я не бросил разрабатывать свой фреймворк (extended)
Basis.js - почему я не бросил разрабатывать свой фреймворк (extended)
Roman Dvornov1.7K visualizações
Корпоративное приложение на Rails por Андрей Колешко
Корпоративное приложение на RailsКорпоративное приложение на Rails
Корпоративное приложение на Rails
Андрей Колешко634 visualizações

Mais de Ontico

One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасье... por
One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасье...One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасье...
One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасье...Ontico
3.4K visualizações50 slides
Масштабируя DNS / Артем Гавриченков (Qrator Labs) por
Масштабируя DNS / Артем Гавриченков (Qrator Labs)Масштабируя DNS / Артем Гавриченков (Qrator Labs)
Масштабируя DNS / Артем Гавриченков (Qrator Labs)Ontico
1.1K visualizações78 slides
Создание BigData-платформы для ФГУП Почта России / Андрей Бащенко (Luxoft) por
Создание BigData-платформы для ФГУП Почта России / Андрей Бащенко (Luxoft)Создание BigData-платформы для ФГУП Почта России / Андрей Бащенко (Luxoft)
Создание BigData-платформы для ФГУП Почта России / Андрей Бащенко (Luxoft)Ontico
1.3K visualizações24 slides
Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса... por
Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...
Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...Ontico
1.1K visualizações58 slides
Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre... por
Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre...Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre...
Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre...Ontico
1.1K visualizações28 slides
PostgreSQL Configuration for Humans / Alvaro Hernandez (OnGres) por
PostgreSQL Configuration for Humans / Alvaro Hernandez (OnGres)PostgreSQL Configuration for Humans / Alvaro Hernandez (OnGres)
PostgreSQL Configuration for Humans / Alvaro Hernandez (OnGres)Ontico
2.3K visualizações35 slides

Mais de Ontico(20)

One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасье... por Ontico
One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасье...One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасье...
One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасье...
Ontico3.4K visualizações
Масштабируя DNS / Артем Гавриченков (Qrator Labs) por Ontico
Масштабируя DNS / Артем Гавриченков (Qrator Labs)Масштабируя DNS / Артем Гавриченков (Qrator Labs)
Масштабируя DNS / Артем Гавриченков (Qrator Labs)
Ontico1.1K visualizações
Создание BigData-платформы для ФГУП Почта России / Андрей Бащенко (Luxoft) por Ontico
Создание BigData-платформы для ФГУП Почта России / Андрей Бащенко (Luxoft)Создание BigData-платформы для ФГУП Почта России / Андрей Бащенко (Luxoft)
Создание BigData-платформы для ФГУП Почта России / Андрей Бащенко (Luxoft)
Ontico1.3K visualizações
Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса... por Ontico
Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...
Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...
Ontico1.1K visualizações
Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre... por Ontico
Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre...Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre...
Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre...
Ontico1.1K visualizações
PostgreSQL Configuration for Humans / Alvaro Hernandez (OnGres) por Ontico
PostgreSQL Configuration for Humans / Alvaro Hernandez (OnGres)PostgreSQL Configuration for Humans / Alvaro Hernandez (OnGres)
PostgreSQL Configuration for Humans / Alvaro Hernandez (OnGres)
Ontico2.3K visualizações
Inexpensive Datamasking for MySQL with ProxySQL — Data Anonymization for Deve... por Ontico
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...
Ontico4.3K visualizações
Опыт разработки модуля межсетевого экранирования для MySQL / Олег Брославский... por Ontico
Опыт разработки модуля межсетевого экранирования для MySQL / Олег Брославский...Опыт разработки модуля межсетевого экранирования для MySQL / Олег Брославский...
Опыт разработки модуля межсетевого экранирования для MySQL / Олег Брославский...
Ontico440 visualizações
ProxySQL Use Case Scenarios / Alkin Tezuysal (Percona) por Ontico
ProxySQL Use Case Scenarios / Alkin Tezuysal (Percona)ProxySQL Use Case Scenarios / Alkin Tezuysal (Percona)
ProxySQL Use Case Scenarios / Alkin Tezuysal (Percona)
Ontico766 visualizações
MySQL Replication — Advanced Features / Петр Зайцев (Percona) por Ontico
MySQL Replication — Advanced Features / Петр Зайцев (Percona)MySQL Replication — Advanced Features / Петр Зайцев (Percona)
MySQL Replication — Advanced Features / Петр Зайцев (Percona)
Ontico429 visualizações
Внутренний open-source. Как разрабатывать мобильное приложение большим количе... por Ontico
Внутренний open-source. Как разрабатывать мобильное приложение большим количе...Внутренний open-source. Как разрабатывать мобильное приложение большим количе...
Внутренний open-source. Как разрабатывать мобильное приложение большим количе...
Ontico1.2K visualizações
Подробно о том, как Causal Consistency реализовано в MongoDB / Михаил Тюленев... por Ontico
Подробно о том, как Causal Consistency реализовано в MongoDB / Михаил Тюленев...Подробно о том, как Causal Consistency реализовано в MongoDB / Михаил Тюленев...
Подробно о том, как Causal Consistency реализовано в MongoDB / Михаил Тюленев...
Ontico544 visualizações
Балансировка на скорости проводов. Без ASIC, без ограничений. Решения NFWare ... por Ontico
Балансировка на скорости проводов. Без ASIC, без ограничений. Решения NFWare ...Балансировка на скорости проводов. Без ASIC, без ограничений. Решения NFWare ...
Балансировка на скорости проводов. Без ASIC, без ограничений. Решения NFWare ...
Ontico372 visualizações
Перехват трафика — мифы и реальность / Евгений Усков (Qrator Labs) por Ontico
Перехват трафика — мифы и реальность / Евгений Усков (Qrator Labs)Перехват трафика — мифы и реальность / Евгений Усков (Qrator Labs)
Перехват трафика — мифы и реальность / Евгений Усков (Qrator Labs)
Ontico450 visualizações
И тогда наверняка вдруг запляшут облака! / Алексей Сушков (ПЕТЕР-СЕРВИС) por Ontico
И тогда наверняка вдруг запляшут облака! / Алексей Сушков (ПЕТЕР-СЕРВИС)И тогда наверняка вдруг запляшут облака! / Алексей Сушков (ПЕТЕР-СЕРВИС)
И тогда наверняка вдруг запляшут облака! / Алексей Сушков (ПЕТЕР-СЕРВИС)
Ontico361 visualizações
Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU) por Ontico
Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)
Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)
Ontico2K visualizações
Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.) por Ontico
Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.)Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.)
Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.)
Ontico1.7K visualizações
100500 способов кэширования в Oracle Database или как достичь максимальной ск... por Ontico
100500 способов кэширования в Oracle Database или как достичь максимальной ск...100500 способов кэширования в Oracle Database или как достичь максимальной ск...
100500 способов кэширования в Oracle Database или как достичь максимальной ск...
Ontico286 visualizações
Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает... por Ontico
Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает...Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает...
Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает...
Ontico434 visualizações
Механизмы мониторинга баз данных: взгляд изнутри / Дмитрий Еманов (Firebird P... por Ontico
Механизмы мониторинга баз данных: взгляд изнутри / Дмитрий Еманов (Firebird P...Механизмы мониторинга баз данных: взгляд изнутри / Дмитрий Еманов (Firebird P...
Механизмы мониторинга баз данных: взгляд изнутри / Дмитрий Еманов (Firebird P...
Ontico379 visualizações

Rich-client, или Как я перестал боятся и полюбил велосипеды / Владимир Дупелев

  • 1. Rich-client, или Как я перестал бояться и полюбил велосипеды Владимир Дупелев
  • 2. Rich UI приложение • Функциональность без перезагрузки страницы • Большой объем данных • Разнообразные визуальные компоненты • Вложенные диалоги • Быстрый отклик • Стабильность
  • 4. Где проблемы? • Архитектура • Отображение • Поддержка
  • 5. Архитектура Rich UI приложения • Уровни абстракции, модули • Разрешение зависимостей • Асинхронная работа с сервером
  • 6. Разрешение зависимостей • Поиск файлов • Объявления модулей • Кеширование модулей • Создание синглетонов • Перезапись Спецификация Модуля: - CommonJS / Modules - CommonJS / Packages - AMD
  • 7. Быстрый загрузчик Модуль RequreJS Имя можно опустить Магия поиска модуля Циркулярные зависимости Время и память Изменения Имя модуля = Путь в проекте Поиск только по имени Доверяйте программистам Соберите ядро в один файл
  • 8. Определение модуля AMD define(['a.js', 'b.js'], function(A, B) {…}) Не сопоставить пути и аргументы Добавить в середину невозможно Конфликты имен Изменения define({A:'a.js', B:'b.js'}, function($$) {…}) Группировка путей и имен модулей Легко изменять, удалять, добавлять Есть корневое пространство
  • 9. Архитектура Rich UI приложения • Уровни абстракции, модули • Разрешение зависимостей. Inversion of control • Асинхронная работа с сервером
  • 10. Обещания Шаблон future, в библиотеке JQuery - Deferred • Откажитесь от цепочек .then • Динамический require ведет к deferred • Разрешите модули заранее, используйте их синхронно
  • 11. Где проблемы? • Архитектура • Отображение • Поддержка
  • 12. • Model — чистые данные • ModelView — активные данные + команды • Bindings — связь активных данных и компонентов • View — компоненты и DOM Шаблон MVVM
  • 13. • Различные источники и схемы данных • Несколько операций на чтение и запись • Каскады асинхронных команд • Прерывание и подключение • Агрегация в сервисном слое Model — чистые данные
  • 14. • Содержит свойства или набор сущностей • Дает их изменить • Бросает события • Не воздействует на вложенные активные данные • Содержит бизнес-логику • Аккуратно разрушается ModelView — активные данные
  • 15. Backbone Разбор параметров Опции для событий Событие «всё изменилось» Отслеживание циклов Установка свойств Изменения Пара - имя, значение Отдельный код для silent Никогда не используется Тестирование
  • 16. Backbone, AngularJS Разбор параметров Не различает цель Всегда отрабатывает События изменения Изменения Однозначные параметры Отдельный код для self trigger Проверка на disposed
  • 17. • Компонент — тоже активная модель • Отображается в DOM • Следит за свойствами, обновляет DOM • Следит за событиями DOM, обновляет свойства • Не содержит бизнес-логики • Аккуратно разрушается View — компоненты и DOM
  • 18. Представление DOM JQuery обертка Читает из html строки Ссылка на DOM Element Добавление .append() Вставка в броузер .append() Изменения Свой dsl Объект в AST со свойством id Конкатинация строк Вставка в броузер .innerHTML
  • 19. Вставка 10 000 <div> .append() 500-1000мс Не теряем DOM Element Установка событий когда угодно Strings + InnerHTML 30-60мс Ленивый поиск по id Установка событий после вставки
  • 20. Где проблемы? • Архитектура • Отображение • Поддержка
  • 21. Поддержка Rich UI приложения • Лог – Отдавайте на сервер – Покажите объекты в JSON • Дамп состояния – Данные — малый объем, быстро – Компонеты — большой объем, медленно • Консоль