speaker: Andrei Tserakhau
full-stack .net developer EPAM Systems
Что бы не умереть со скуки опенсорсю (aspnet, angular)
Кому интересно - https://github.com/laskoviymishka
Делаю в основном кровавый ынтырпрайз
Шаг 1 - классическое серверное приложение
1. ASP.NET MVC или Web Forms сервер
2. Вся бизнес логика располагается на сервере
3. Сервер обеспечивает всю логику представления
4. Любое взаимодействие с пользователем требует полной перезагрузки страницы
Шаг 2 - а давайте добавим немного Javascript-а и jQuery магии
PROS
CONS
Легко разрабатывать
Все еще большая часть кода не JS
Код представления невозможно или крайне сложно тестировать
Добавление действительно сложный функций болзененно
Приемлемый пользовательский опыт
Код представления становится кашей
Шаг 3 - SPA приложение (а давайте используем JS-фреймворк)
PROS
CONS
Лучший пользовательский опыт
Сложные фичи делаются просто (относительно)
JavaScript
Четкое разделение зависимостей
Тестируемый код
Первый рендер страницы может быть ОЧЕНЬ медленным
Приложение может стать большим
Клиент написан на модненьком фреймворке (ng1-2, react, aurelia, хомяк бла-бла что-то JS)
Ваш клиент так или иначе собирается (npm, webpack, стакан, свинья, капуста, что угодно, не важно)
Сервер делает REST API (web api, nancy, свят-свят WCF json или упаси бог asmx)
У вас реализован SPA-fallback для реализации HTML5 маршрутизации
Итого : Клиент умный, а сервер нет
Богатый пользовательский опыт
Приложение выглядит как нативное
Ваш сайт быстрый и плавный
Первый запуск приложения медленный (размер приложения ~5mb)
Сайт выпадает из SEO
Особенно на слабых девайсах (около 5-10 sec)
Давайте посмотрим на загрузку нашей страницы
Загрузили страницу
Фреймворк инициализирует себя
Выполняем код нашего приложения
Ура загрузили
ASPNET сервер (ваш код)
SpaServices
pre-render-module
NodeServices
Ваш boot-server.js
Дочерний Node
Кривая обучения
Пока-пока jQuery
Сложнее дебажить
Быстрая загрузка
Отношения между клиентом и сервером становятся более тесными ( и странными)
Может работать даже там где не должно (ie7-8)
Лучшие из обоих миров - js-front и .net-back.
Легко комбинировать серверную бизнесс логику и клиентскую логику представления