Разработка WPF приложений в стиле ViewModel FirstDenis Tsvettsih
Презентация к докладу «Разработка WPF приложений в стиле ViewModel First» с одиннадцатой конференции dotnetconf (Челябинск, 31 октября 2015)
http://dotnetconf.ru/materialy/viewmodelfirst
Moxy. Как правильно пользоваться? / Юрий Шмаков (Arello Mobile)Ontico
РИТ++ 2017, AppsConf
Зал Касабланка, 6 июня, 16:00
Тезисы:
http://appsconf.ru/2017/abstracts/2704.html
В последнее время паттерн MVP будоражит Android-комьюнити. Уже есть несколько довольно приличных библиотек, которые помогают использовать этот подход. Но с ними вам придётся писать много boilerplate-кода. Поэтому я хочу познакомить вас с Moxy. Покажу, как использовать её компоненты для решения задач, которые будут вставать перед вами, когда вы решите использовать паттерн MVP. И расскажу, как устроены эти компоненты, и почему именно так, чтобы вы не боялись использовать Moxy из-за потенциальных подводных камней.
Разработка WPF приложений в стиле ViewModel FirstDenis Tsvettsih
Презентация к докладу «Разработка WPF приложений в стиле ViewModel First» с одиннадцатой конференции dotnetconf (Челябинск, 31 октября 2015)
http://dotnetconf.ru/materialy/viewmodelfirst
Moxy. Как правильно пользоваться? / Юрий Шмаков (Arello Mobile)Ontico
РИТ++ 2017, AppsConf
Зал Касабланка, 6 июня, 16:00
Тезисы:
http://appsconf.ru/2017/abstracts/2704.html
В последнее время паттерн MVP будоражит Android-комьюнити. Уже есть несколько довольно приличных библиотек, которые помогают использовать этот подход. Но с ними вам придётся писать много boilerplate-кода. Поэтому я хочу познакомить вас с Moxy. Покажу, как использовать её компоненты для решения задач, которые будут вставать перед вами, когда вы решите использовать паттерн MVP. И расскажу, как устроены эти компоненты, и почему именно так, чтобы вы не боялись использовать Moxy из-за потенциальных подводных камней.
«Как я научился не волноваться и полюбил Android-MVP», Никита Бартишок, ABBYYMail.ru Group
Доклад о подходе к разработке Android-приложений с использованием MVP и Clean Architecture. Никита рассмотрит преимущества этого подхода перед традиционным, уделит отдельное внимание вопросам сохранения состояния в Android-MVP, а также особенностям взаимодействия между V и P.
Сегодня многие фреймворки, такие как Prism или Autofac, позволяют разработчику организовать модульную структуру приложения. При этом часто бывает непонятно, для чего ещё нужны модули, кроме как для пресловутой "красоты архитектуры".
В рамках доклада я расскажу о том, какие существуют подходы к организации модульной структуры, в каких фреймворках они реализованы и для решения каких задач дает преимущество каждый подход.
Виктор Брыкcин — Как всё починить и ничего не сломать: работа со сложным кодо...CocoaHeads
Я расскажу, как внести функциональные изменения в плохо спроектированный код в разумные сроки и при этом ничего не сломать — о возможных проблемах, ошибках в процессе и о том, как с ними справляться.
В частности, покажу, как в этом помогают тесты и почему они важны как система раннего обнаружения ошибок. Расскажу о зависимостях, их классификации и о том, какое влияние разные типы зависимостей оказывают на наше понимание работы программы и возможности её протестировать.
Большую часть этого доклада я посвятил простым практическим приёмам рефакторинга и модификации кода — для упрощения понимания системы и более лёгкого внесения функциональных изменений.
Разработка Windows 8 приложений глазами WPF/Silverlight программистаDenis Tsvettsih
Презентация к докладу «Разработка Windows 8 приложений глазами WPF/Silverlight программиста» с десятой конференции dotnetconf (Челябинск, 19 апреля 2015)
http://dotnetconf.ru/materialy/windows8
Roslyn API: SyntaxTree vs CodeDom, SemanticModel vs ReflectionDenis Tsvettsih
Презентация к докладу «Roslyn API: SyntaxTree vs CodeDom, SemanticModel vs Reflection» с конференции .NEXT SPb 2015 (Санкт-Петербург, 5 июня 2015)
http://spb2015.dotnext.ru/#cvetkih_talk
«Как я научился не волноваться и полюбил Android-MVP», Никита Бартишок, ABBYYMail.ru Group
Доклад о подходе к разработке Android-приложений с использованием MVP и Clean Architecture. Никита рассмотрит преимущества этого подхода перед традиционным, уделит отдельное внимание вопросам сохранения состояния в Android-MVP, а также особенностям взаимодействия между V и P.
Сегодня многие фреймворки, такие как Prism или Autofac, позволяют разработчику организовать модульную структуру приложения. При этом часто бывает непонятно, для чего ещё нужны модули, кроме как для пресловутой "красоты архитектуры".
В рамках доклада я расскажу о том, какие существуют подходы к организации модульной структуры, в каких фреймворках они реализованы и для решения каких задач дает преимущество каждый подход.
Виктор Брыкcин — Как всё починить и ничего не сломать: работа со сложным кодо...CocoaHeads
Я расскажу, как внести функциональные изменения в плохо спроектированный код в разумные сроки и при этом ничего не сломать — о возможных проблемах, ошибках в процессе и о том, как с ними справляться.
В частности, покажу, как в этом помогают тесты и почему они важны как система раннего обнаружения ошибок. Расскажу о зависимостях, их классификации и о том, какое влияние разные типы зависимостей оказывают на наше понимание работы программы и возможности её протестировать.
Большую часть этого доклада я посвятил простым практическим приёмам рефакторинга и модификации кода — для упрощения понимания системы и более лёгкого внесения функциональных изменений.
Разработка Windows 8 приложений глазами WPF/Silverlight программистаDenis Tsvettsih
Презентация к докладу «Разработка Windows 8 приложений глазами WPF/Silverlight программиста» с десятой конференции dotnetconf (Челябинск, 19 апреля 2015)
http://dotnetconf.ru/materialy/windows8
Roslyn API: SyntaxTree vs CodeDom, SemanticModel vs ReflectionDenis Tsvettsih
Презентация к докладу «Roslyn API: SyntaxTree vs CodeDom, SemanticModel vs Reflection» с конференции .NEXT SPb 2015 (Санкт-Петербург, 5 июня 2015)
http://spb2015.dotnext.ru/#cvetkih_talk
The difference between the Small Business Owner Mindset and the Entrepreneuri...jane GARDNER
Many small businesses operate under an employee mindset. If your goal as a small business owner is to grow, you need to think like an entrepreneur.A Entrepreneur has big ideas
SBOs solve local problems. They know their business and target audience.To develop your success mindset
go to http://jgtips.com/smindset.
A thought-starter deck on why and how to plan a truly best-practice digital content marketing strategy for B2B companies across Asia and the world. A planning perspective from Zaheer Nooruddin, Head of Digital Innovation, Asia, at Integrated Creative Communications agency, GOLIN.
Сергей Константинов — Что интересного готовит нам W3CYandex
2014 год обещает нам множество интересных нововведений. Помимо новинок в HTML5, нас ждут глобальные изменения в самой веб-платформе. Promises и модули — революция в стандартах разработки стандартов. Service Workers — новый подход к решению проблемы офлайновых веб-приложений. @@create — отнаследуйся от HTMLElement! Обо всём этом и пойдёт речь в докладе.
Мир мобильных телефонов очень сильно изменил нашу жизнь. В наше время невозможно представить современного человека, без этого чудо устройства. На рынке появляется все больше устройств и приложений. И чтобы удобнее пользоваться этими приложениями пользователи выбирают “умные” телефоны, или как их еще принято называть смартфоны. В своем докладе я хочу поделиться своим опытом автоматизации приложений под Android и iOS. Я расскажу о том, какие инструменты автоматизации я использовал. Поговорим о недостатках этих инструментов и какие из них стоит использовать у себя на проекте.
MVVM в WinForms – DevExpress Way (теория и практика)GoSharp
Из доклада вы узнаете о применении популярного паттерна MVVM для упрощения и ускорения процесса разработки desktop-приложений.
Будут рассмотрены общие проблемы этого паттерна и решения которые мы предлагаем в нашем кроссплатформенном MVVM фреймворке. Упор будет сделан на практические аспекты и техники в условиях использования платформы WinForms и контролов от DevExpress.
* Почему Angular 2 такой быстрый и как его ускорить еще сильнее?
* Как работает Change Detection механизм и как им управлять?
* Зачем нам Zone.js и Функциональное Реактивное Программирование?
* Как работать с Redux и Mobx в Angular 2 и что можно от этого выиграть?
Об этом и ряде других вещей вы узнаете из этого доклада.
Превышаем скоростные лимиты с Angular 2 / Алексей Охрименко (IPONWEB)Ontico
* Почему Angular 2 такой быстрый и как его ускорить еще сильнее?
* Как работает Change Detection механизм и как им управлять?
* Зачем нам Zone.js и Функциональное Реактивное Программирование?
* Как работать с Redux и Mobx в Angular 2 и что можно от этого выиграть?
Об этом и ряде других вещей вы узнаете из этого доклада.
4. 4
Опрос
Кто считает, что использовать несколько
MVVM нельзя?
Кто считает, что использовать несколько
MVVM можно, но не использовал?
Кто использовал несколько MVVM в одном
проекте?
5. 5
Зачем нужен MVVM фреймворк?
Навигация
Реализация INPC (ViewModelBase)
Команды
Message Bus (EventAggregator, Messenger)
6. 6
Зачем нужен MVVM фреймворк?
Навигация
Реализация INPC (ViewModelBase)
Команды
Message Bus (EventAggregator, Messenger)
7. 7
Подходы к навигации
View First
ViewModel First
Это не разные реализации паттерна MVVM,
но разные подходы к навигации с
использованием MVVM
8. 8
ViewFirst: показать новую форму
Создать View
Создать ViewModel для View
View.DataContext = ViewModel
Инициализировать ViewModel
9. 9
ViewFirst: показать новую форму
Navigation.Show<ViewModel>(Value);
или
Navigation.Show("View", Value);
Похоже на: http://address.ru/?arg=value
ViewFirst предлагает организовать навигацию
аналогично веб-приложению
10. 10
ViewModelFirst: показать новую форму
Создать ViewModel
Инициализировать ViewModel
Создать View для ViewModel
View.DataContext = ViewModel
11. 11
ViewModelFirst: показать новую форму
var vm = Navigation.Get<ViewModel>();
vm.Arg = Value;
vm.Show();
Аналогично окну WPF:
var wnd = new Window();
wnd.Arg1 = Value1;
wnd.Show();
ViewModel First навигация аналогична
навигации в настольных приложениях
12. 12
ViewFirst vs ViewModelFirst
ViewFirst ViewModelFirst
Создать View Создать ViewModel
Создать ViewModel Инициализировать ViewModel
Инициализировать ViewModel Создать View
View.DataContext = ViewModel View.DataContext = ViewModel
13. 13
Выбор MVVM фреймворка
Выбираем MVVM фреймворк по
реализованному подходу к навигации
Навигация MVVM фреймворка соответствует
навигации в API выбранной технологии
WPF: ViewModelFirst подход (MugenMvvmToolkit, ReactiveUI)
UWP: ViewFirst подход (Prism)
14. 14
Какие задачи решает MVVM фреймворк?
Навигация
Команды
Привязки
На уровне ViewModel: передача событий между ViewModel
На уровне View: Binding в XAML
Разные задачи можно решать при помощи
разных фреймворков!
15. 15
Набор MVVM фреймворков для UWP
Навигация – Prism
Собственное расширение Prism для CompositeUI
Команды – ReactiveCommand из ReactiveUI
Привязки
Привязки ViewModel: Не используем MessageBus (EventAggregator из Prism)
Привязки ViewModel: ObservableForProperty, WhenAny из ReactiveUI
Привязки View: альтернативный Binding из MugenMvvmToolkit
17. 17
Достоинства навигации Prism
ViewFirst подход, реализованный в Prism,
соответствует API для навигации в UWP
CompositeUI не реализован в Prism для UWP, но нужное решение есть
по ссылке
https://github.com/denis-tsv/Prism.StoreApps.Extensions.Mvvm
18. 18
ReactiveUI: команды и ViewModel привязки
public class LoginViewModel //: INotifyPropertyChanged
{
public string Login { get; set; } // PropertyChanged
public string Password { get; set; } // PropertyChanged
public ICommand LoginCommand { get; private set; }
}
26. 26
Достоинства ReactiveUI привязок
Удобное решение типовых задач:
Подписка на изменение одного свойства
Подписка на изменение нескольких свойств
Уменьшается количество инфраструктурного
кода, связанного с подписками и отписками
38. 38
Итоги: навигация
MVVM нужен для навигации
Навигация ViewFirst
Аналог навигации в веб-приложениях
Удобна для WinRT, UWP
Реализована в Prism
Навигация ViewModelFirst
Аналог навигации в настольных приложениях
Удобна для WPF, Silverlight
Реализована в MugenMvvmToolkit, ReactiveUI
39. 39
Несколько MVVM фреймворков для UWP
Навигация – Prism
Команды – ReactiveUI
Привязки ViewModel – ReactiveUI вместо
MessageBus (EventAggregator)
Привязки XAML – Mugen привязки вместо Binding
Prism используется как MVVM фреймворк, Mugen
и ReactiveUI – как библиотеки
40. 40
Особенности использования нескольких MVVM
Достоинство
Соединяем преимущества всех MVVM фреймворков
Недостаток
В рамках CodeReview нужно следить за тем, что каждый MVVM
используется только для своей задачи