SlideShare a Scribd company logo
Паттерны быстрой
разработки WPF MVVM
бизнес-приложений.
(Несколько	
  типовых	
  задач,	
  возникающих	
  при	
  разработке	
  
бизнес-­‐приложений	
  на	
  платформе	
  WPF,	
  
и	
  
эффективные	
  способы	
  решения	
  этих	
  задач,	
  воплощенные	
  в	
  
DevExpress	
  Scaffolding	
  Wizard	
  -­‐	
  
инструменте	
  быстрой	
  разработки	
  CRUD	
  и	
  LOB	
  приложений.)	
  
	
  
1. Бизнес-­‐приложения,	
  CRUD-­‐приложения,	
  
DevExpress	
  Scaffolding.	
  
2. Навигация	
  в	
  приложении.	
  
3. Простая	
  асинхронная	
  загрузка	
  данных.	
  
4. Асинхронная	
  загрузка	
  данных	
  
и	
  lazy	
  loading	
  navigaYon	
  properYes.	
  
5. Instant	
  Feedback	
  Mode	
  
6. Формы	
  редактирования.	
  WPF	
  bindings	
  and	
  
EnYty	
  Framework	
  objects.	
  
Приложения	
  
CRUD-­‐приложения	
  
Приложения,	
  
созданные	
  с	
  помощью	
  
DevExpress	
  Scaffolding	
  Wizard	
  
CRUD-­‐приложения	
  
CRUD-­‐приложения	
  
Структура
наскафолженног
о приложения
IDocumentManagerService
IDocument CreateDocument(
string documentID,
object parentViewModel);
IDocument ActiveDocument { get; }
IEnumerable<IDocument> Documents { get; }
IDocument
object Content { get; }
void Close();
Навигация.	
  
IDocumentManagerService
IDocument CreateDocument(
string documentID,
object parentViewModel);
IDocument ActiveDocument { get; }
IEnumerable<IDocument> Documents { get; }
IDocument
object Content { get; }
void Close();
Навигация.	
  
Main	
  View	
  Model	
  
EnYty	
  CollecYon	
  View	
  Model	
  
EnYty	
  View	
  Model	
  
Tabbed	
  MDI	
  
DocumentManagerService	
  
Навигация.	
  
Tabbed	
  MDI	
  
DocumentManagerService	
  
Main	
  View	
  Model	
  
EnYty	
  CollecYon	
  View	
  Model	
  
EnYty	
  View	
  Model	
  
Windowed	
  
DocumentManagerService	
  
Навигация.	
  
Простая	
  асинхронная	
  загрузка.	
  
Асинхронная	
  загрузка	
  и	
  EnYty	
  
Framework.	
  
class	
  Order	
  {	
  
	
  	
  	
  	
  long	
  Id;	
  
	
  	
  	
  	
  decimal	
  Discount;	
  
	
  	
  	
  	
  decimal	
  UnitPrice;	
  
	
  	
  	
  	
  byte[]	
  Picture;	
  
	
  	
  	
  	
  int	
  Quantity;	
  
	
  	
  	
  	
  long	
  ProductId;	
  
	
  	
  	
  	
  virtual	
  Product	
  Product;	
  
}	
  
class	
  Product	
  {	
  
	
  	
  	
  	
  long	
  Id;	
  
	
  	
  	
  	
  string	
  Name;	
  
	
  	
  	
  	
  byte[]	
  Picture;	
  
	
  	
  	
  	
  string	
  QuantityPerUnit;	
  
	
  	
  	
  	
  double	
  UnitPrice;	
  
	
  	
  	
  	
  string	
  Description;	
  
}	
  
class	
  OrderInfo	
  {	
  
	
  	
  	
  	
  long	
  Id;	
  
	
  	
  	
  	
  decimal	
  UnitPrice;	
  
	
  	
  	
  	
  int	
  Quantity;	
  
	
  	
  	
  	
  string	
  ProductName;	
  
}	
  
Id	
  =	
  x.Id	
  
UnitPrice	
  =	
  x.UnitPrice	
  
QuanYty	
  =	
  x.QuanYty	
  
ProductName	
  =	
  x.ProductName	
  
.Select(x	
  =>	
  new	
  OrderInfo()	
  {	
  …	
  })	
  Repository	
  EnYty	
   ProjecYon	
  EnYty	
  
Data	
  Layer	
  
View	
  Model	
  
Data	
  Grid	
  Control	
  
IQueryable	
  
Async	
  Loading	
  
ObservableCollecYon	
  
Data	
  Layer	
  
View	
  Model	
  
Data	
  Grid	
  Control	
  
IQueryable	
  
EnYty	
  
SelectedItem	
   ItemsSource	
   SelectedItem	
   ItemsSource	
  
Async	
  Loading	
  
SelectedEnYty	
   SelectedEnYty	
  
Instant	
  Feedback	
  Mode.	
  
EnYty	
  Framework.	
  Редактирование	
  enYty.	
  
•  Обновление	
  эдиторов	
  на	
  форме	
  при	
  изменении	
  свойства	
  enYty	
  
<dxe:TextEdit	
  EditValue="{Binding	
  Entity.Name,	
  
UpdateSourceTrigger=PropertyChanged,	
  
	
  ValidatesOnDataErrors=True,	
  
	
  NotifyOnSourceUpdated=True}"	
  />
•  Обновление	
  состояния	
  вьюмодели	
  при	
  изменении	
  enYty	
  эдитором	
  
	
  
<dxe:TextEdit	
  EditValue="{Binding	
  Entity.Name,	
  
UpdateSourceTrigger=PropertyChanged,	
  
	
  ValidatesOnDataErrors=True,	
  
	
  NotifyOnSourceUpdated=True}"	
  />

More Related Content

What's hot

Java Persistence API (JPA) Basics
Java Persistence API (JPA) BasicsJava Persistence API (JPA) Basics
Java Persistence API (JPA) Basics
SSA KPI
 
Модульная структура
Модульная структураМодульная структура
Модульная структура
Denis Tsvettsih
 
Основы Java. 5. Databases
Основы Java. 5. DatabasesОсновы Java. 5. Databases
Основы Java. 5. Databases
Sergey Nemchinsky
 
создание живых сайтов
создание живых сайтовсоздание живых сайтов
создание живых сайтов
metaform
 
MVP, Moxy. Как правильно пользоваться
MVP, Moxy. Как правильно пользоватьсяMVP, Moxy. Как правильно пользоваться
MVP, Moxy. Как правильно пользоваться
Yuri Shmakov
 
MyBatis на практике
MyBatis на практикеMyBatis на практике
MyBatis на практике
Vitebsk Miniq
 
[C++ CoreHard Autumn 2018] Actors vs CSP vs Task...
[C++ CoreHard Autumn 2018] Actors vs CSP vs Task...[C++ CoreHard Autumn 2018] Actors vs CSP vs Task...
[C++ CoreHard Autumn 2018] Actors vs CSP vs Task...
Yauheni Akhotnikau
 
Android - 13 - Database
Android - 13 - DatabaseAndroid - 13 - Database
Android - 13 - Database
Noveo
 
My batis
My batisMy batis
Rambler.iOS #3: Dependency Injection в iOS
Rambler.iOS #3: Dependency Injection в iOSRambler.iOS #3: Dependency Injection в iOS
Rambler.iOS #3: Dependency Injection в iOS
RAMBLER&Co
 
Создание графического интерфейса пользователя мобильных Android приложений (ч...
Создание графического интерфейса пользователя мобильных Android приложений (ч...Создание графического интерфейса пользователя мобильных Android приложений (ч...
Создание графического интерфейса пользователя мобильных Android приложений (ч...
metaform
 
Шаблоны разработки ПО. Часть 3. Шаблоны GoF
Шаблоны разработки ПО. Часть 3. Шаблоны GoFШаблоны разработки ПО. Часть 3. Шаблоны GoF
Шаблоны разработки ПО. Часть 3. Шаблоны GoFSergey Nemchinsky
 
Mastering Declarative Database Schema - MageConf 2019
Mastering Declarative Database Schema - MageConf 2019Mastering Declarative Database Schema - MageConf 2019
Mastering Declarative Database Schema - MageConf 2019
Max Pronko
 
Java осень 2014 занятие 7
Java осень 2014 занятие 7Java осень 2014 занятие 7
Java осень 2014 занятие 7
Technopark
 
Yii2
Yii2Yii2
Yii2
Noveo
 
Глава 2: Среда разработки NetBeans
Глава 2: Среда разработки NetBeansГлава 2: Среда разработки NetBeans
Глава 2: Среда разработки NetBeansmetaform
 
Шаблоны проектирования 1
Шаблоны проектирования 1Шаблоны проектирования 1
Шаблоны проектирования 1
Constantin Kichinsky
 
Чистая архитектура с VIPER / Сергей Крапивенский (Rambler&Co)
Чистая архитектура с VIPER / Сергей Крапивенский (Rambler&Co)Чистая архитектура с VIPER / Сергей Крапивенский (Rambler&Co)
Чистая архитектура с VIPER / Сергей Крапивенский (Rambler&Co)
Ontico
 
Референсная архитектура приложения на ASP.NET MVC
Референсная архитектура приложения на ASP.NET MVCРеференсная архитектура приложения на ASP.NET MVC
Референсная архитектура приложения на ASP.NET MVCAndrew Mayorov
 
VIQA - Тестирование UI с помощью Виртуального интеллекта
VIQA - Тестирование UI с помощью Виртуального интеллектаVIQA - Тестирование UI с помощью Виртуального интеллекта
VIQA - Тестирование UI с помощью Виртуального интеллекта
SQALab
 

What's hot (20)

Java Persistence API (JPA) Basics
Java Persistence API (JPA) BasicsJava Persistence API (JPA) Basics
Java Persistence API (JPA) Basics
 
Модульная структура
Модульная структураМодульная структура
Модульная структура
 
Основы Java. 5. Databases
Основы Java. 5. DatabasesОсновы Java. 5. Databases
Основы Java. 5. Databases
 
создание живых сайтов
создание живых сайтовсоздание живых сайтов
создание живых сайтов
 
MVP, Moxy. Как правильно пользоваться
MVP, Moxy. Как правильно пользоватьсяMVP, Moxy. Как правильно пользоваться
MVP, Moxy. Как правильно пользоваться
 
MyBatis на практике
MyBatis на практикеMyBatis на практике
MyBatis на практике
 
[C++ CoreHard Autumn 2018] Actors vs CSP vs Task...
[C++ CoreHard Autumn 2018] Actors vs CSP vs Task...[C++ CoreHard Autumn 2018] Actors vs CSP vs Task...
[C++ CoreHard Autumn 2018] Actors vs CSP vs Task...
 
Android - 13 - Database
Android - 13 - DatabaseAndroid - 13 - Database
Android - 13 - Database
 
My batis
My batisMy batis
My batis
 
Rambler.iOS #3: Dependency Injection в iOS
Rambler.iOS #3: Dependency Injection в iOSRambler.iOS #3: Dependency Injection в iOS
Rambler.iOS #3: Dependency Injection в iOS
 
Создание графического интерфейса пользователя мобильных Android приложений (ч...
Создание графического интерфейса пользователя мобильных Android приложений (ч...Создание графического интерфейса пользователя мобильных Android приложений (ч...
Создание графического интерфейса пользователя мобильных Android приложений (ч...
 
Шаблоны разработки ПО. Часть 3. Шаблоны GoF
Шаблоны разработки ПО. Часть 3. Шаблоны GoFШаблоны разработки ПО. Часть 3. Шаблоны GoF
Шаблоны разработки ПО. Часть 3. Шаблоны GoF
 
Mastering Declarative Database Schema - MageConf 2019
Mastering Declarative Database Schema - MageConf 2019Mastering Declarative Database Schema - MageConf 2019
Mastering Declarative Database Schema - MageConf 2019
 
Java осень 2014 занятие 7
Java осень 2014 занятие 7Java осень 2014 занятие 7
Java осень 2014 занятие 7
 
Yii2
Yii2Yii2
Yii2
 
Глава 2: Среда разработки NetBeans
Глава 2: Среда разработки NetBeansГлава 2: Среда разработки NetBeans
Глава 2: Среда разработки NetBeans
 
Шаблоны проектирования 1
Шаблоны проектирования 1Шаблоны проектирования 1
Шаблоны проектирования 1
 
Чистая архитектура с VIPER / Сергей Крапивенский (Rambler&Co)
Чистая архитектура с VIPER / Сергей Крапивенский (Rambler&Co)Чистая архитектура с VIPER / Сергей Крапивенский (Rambler&Co)
Чистая архитектура с VIPER / Сергей Крапивенский (Rambler&Co)
 
Референсная архитектура приложения на ASP.NET MVC
Референсная архитектура приложения на ASP.NET MVCРеференсная архитектура приложения на ASP.NET MVC
Референсная архитектура приложения на ASP.NET MVC
 
VIQA - Тестирование UI с помощью Виртуального интеллекта
VIQA - Тестирование UI с помощью Виртуального интеллектаVIQA - Тестирование UI с помощью Виртуального интеллекта
VIQA - Тестирование UI с помощью Виртуального интеллекта
 

Similar to Паттерны быстрой разработки WPF MVVM бизнес-приложений

Диагностика проблем в рабочей среде при помощи IntelliTrace и Visual Studio 2...
Диагностика проблем в рабочей среде при помощи IntelliTrace и Visual Studio 2...Диагностика проблем в рабочей среде при помощи IntelliTrace и Visual Studio 2...
Диагностика проблем в рабочей среде при помощи IntelliTrace и Visual Studio 2...
Герман Криммель
 
Android Development Course in HSE lecture #1
Android Development Course in HSE lecture #1Android Development Course in HSE lecture #1
Android Development Course in HSE lecture #1
Empatika
 
Вебинар "Оптимизация производительности мобильных веб-приложений"
Вебинар "Оптимизация производительности мобильных веб-приложений"Вебинар "Оптимизация производительности мобильных веб-приложений"
Вебинар "Оптимизация производительности мобильных веб-приложений"MobiDev
 
Приложения для Windows Phone: как мы это делаем #codefest
Приложения для Windows Phone: как мы это делаем #codefestПриложения для Windows Phone: как мы это делаем #codefest
Приложения для Windows Phone: как мы это делаем #codefest
Actis Wunderman
 
Модульная структура. Цветцих Денис D2D Just.NET
Модульная структура. Цветцих Денис D2D Just.NETМодульная структура. Цветцих Денис D2D Just.NET
Модульная структура. Цветцих Денис D2D Just.NET
Dev2Dev
 
Статический анализ кода в DDD
Статический анализ кода в DDDСтатический анализ кода в DDD
Статический анализ кода в DDD
Aleksei Alekseev
 
LvivJS 2014 - Win-win c React.js
LvivJS 2014 - Win-win c React.jsLvivJS 2014 - Win-win c React.js
LvivJS 2014 - Win-win c React.js
Max Klymyshyn
 
Лекция Android
Лекция AndroidЛекция Android
Лекция Android
Pavel Tsukanov
 
CQRS на практике. В поиске точки масштабирования и новых метафор
CQRS на практике. В поиске точки масштабирования и новых метафорCQRS на практике. В поиске точки масштабирования и новых метафор
CQRS на практике. В поиске точки масштабирования и новых метафор
Alexander Byndyu
 
What's new in Visual Studio 2012
What's new in Visual Studio 2012What's new in Visual Studio 2012
What's new in Visual Studio 2012InTRUEdeR
 
#3 "Webpack и Vue.JS: Создание больших приложений и их расширение" Кирилл Кай...
#3 "Webpack и Vue.JS: Создание больших приложений и их расширение" Кирилл Кай...#3 "Webpack и Vue.JS: Создание больших приложений и их расширение" Кирилл Кай...
#3 "Webpack и Vue.JS: Создание больших приложений и их расширение" Кирилл Кай...
JSib
 
Обзор платформы B4
Обзор платформы B4Обзор платформы B4
Обзор платформы B4
Bars Group
 
Хватит писать инфраструктурный код
Хватит писать инфраструктурный кодХватит писать инфраструктурный код
Хватит писать инфраструктурный код
Vadim Martynov
 
"Windows Azure для мобильных платформ". Владимир Юнев, Microsoft
"Windows Azure для мобильных платформ". Владимир Юнев, Microsoft"Windows Azure для мобильных платформ". Владимир Юнев, Microsoft
"Windows Azure для мобильных платформ". Владимир Юнев, Microsoft
Yandex
 
Общая архитектура Yii2
Общая архитектура Yii2Общая архитектура Yii2
Общая архитектура Yii2
Paul Klimov
 
2016-11-12 01 Егор Непомнящих. Агрегация и осведомленность
2016-11-12 01 Егор Непомнящих. Агрегация и осведомленность 2016-11-12 01 Егор Непомнящих. Агрегация и осведомленность
2016-11-12 01 Егор Непомнящих. Агрегация и осведомленность
Омские ИТ-субботники
 
Антон Валюх - Использование паттерна Mvvm в android
Антон Валюх - Использование паттерна Mvvm в androidАнтон Валюх - Использование паттерна Mvvm в android
Антон Валюх - Использование паттерна Mvvm в android
DataArt
 
iOS-05_2-UIKit
iOS-05_2-UIKitiOS-05_2-UIKit
iOS-05_2-UIKit
Noveo
 
HTML 5: будущее уже сегодня, Сергей Байдачный, Microsoft Ukraine
HTML 5: будущее уже сегодня, Сергей Байдачный, Microsoft UkraineHTML 5: будущее уже сегодня, Сергей Байдачный, Microsoft Ukraine
HTML 5: будущее уже сегодня, Сергей Байдачный, Microsoft Ukraine
Volha Banadyseva
 
Простой и кросс-платформенный WEB-сервер на .NET
Простой и кросс-платформенный WEB-сервер на .NETПростой и кросс-платформенный WEB-сервер на .NET
Простой и кросс-платформенный WEB-сервер на .NET
Mikhail Shcherbakov
 

Similar to Паттерны быстрой разработки WPF MVVM бизнес-приложений (20)

Диагностика проблем в рабочей среде при помощи IntelliTrace и Visual Studio 2...
Диагностика проблем в рабочей среде при помощи IntelliTrace и Visual Studio 2...Диагностика проблем в рабочей среде при помощи IntelliTrace и Visual Studio 2...
Диагностика проблем в рабочей среде при помощи IntelliTrace и Visual Studio 2...
 
Android Development Course in HSE lecture #1
Android Development Course in HSE lecture #1Android Development Course in HSE lecture #1
Android Development Course in HSE lecture #1
 
Вебинар "Оптимизация производительности мобильных веб-приложений"
Вебинар "Оптимизация производительности мобильных веб-приложений"Вебинар "Оптимизация производительности мобильных веб-приложений"
Вебинар "Оптимизация производительности мобильных веб-приложений"
 
Приложения для Windows Phone: как мы это делаем #codefest
Приложения для Windows Phone: как мы это делаем #codefestПриложения для Windows Phone: как мы это делаем #codefest
Приложения для Windows Phone: как мы это делаем #codefest
 
Модульная структура. Цветцих Денис D2D Just.NET
Модульная структура. Цветцих Денис D2D Just.NETМодульная структура. Цветцих Денис D2D Just.NET
Модульная структура. Цветцих Денис D2D Just.NET
 
Статический анализ кода в DDD
Статический анализ кода в DDDСтатический анализ кода в DDD
Статический анализ кода в DDD
 
LvivJS 2014 - Win-win c React.js
LvivJS 2014 - Win-win c React.jsLvivJS 2014 - Win-win c React.js
LvivJS 2014 - Win-win c React.js
 
Лекция Android
Лекция AndroidЛекция Android
Лекция Android
 
CQRS на практике. В поиске точки масштабирования и новых метафор
CQRS на практике. В поиске точки масштабирования и новых метафорCQRS на практике. В поиске точки масштабирования и новых метафор
CQRS на практике. В поиске точки масштабирования и новых метафор
 
What's new in Visual Studio 2012
What's new in Visual Studio 2012What's new in Visual Studio 2012
What's new in Visual Studio 2012
 
#3 "Webpack и Vue.JS: Создание больших приложений и их расширение" Кирилл Кай...
#3 "Webpack и Vue.JS: Создание больших приложений и их расширение" Кирилл Кай...#3 "Webpack и Vue.JS: Создание больших приложений и их расширение" Кирилл Кай...
#3 "Webpack и Vue.JS: Создание больших приложений и их расширение" Кирилл Кай...
 
Обзор платформы B4
Обзор платформы B4Обзор платформы B4
Обзор платформы B4
 
Хватит писать инфраструктурный код
Хватит писать инфраструктурный кодХватит писать инфраструктурный код
Хватит писать инфраструктурный код
 
"Windows Azure для мобильных платформ". Владимир Юнев, Microsoft
"Windows Azure для мобильных платформ". Владимир Юнев, Microsoft"Windows Azure для мобильных платформ". Владимир Юнев, Microsoft
"Windows Azure для мобильных платформ". Владимир Юнев, Microsoft
 
Общая архитектура Yii2
Общая архитектура Yii2Общая архитектура Yii2
Общая архитектура Yii2
 
2016-11-12 01 Егор Непомнящих. Агрегация и осведомленность
2016-11-12 01 Егор Непомнящих. Агрегация и осведомленность 2016-11-12 01 Егор Непомнящих. Агрегация и осведомленность
2016-11-12 01 Егор Непомнящих. Агрегация и осведомленность
 
Антон Валюх - Использование паттерна Mvvm в android
Антон Валюх - Использование паттерна Mvvm в androidАнтон Валюх - Использование паттерна Mvvm в android
Антон Валюх - Использование паттерна Mvvm в android
 
iOS-05_2-UIKit
iOS-05_2-UIKitiOS-05_2-UIKit
iOS-05_2-UIKit
 
HTML 5: будущее уже сегодня, Сергей Байдачный, Microsoft Ukraine
HTML 5: будущее уже сегодня, Сергей Байдачный, Microsoft UkraineHTML 5: будущее уже сегодня, Сергей Байдачный, Microsoft Ukraine
HTML 5: будущее уже сегодня, Сергей Байдачный, Microsoft Ukraine
 
Простой и кросс-платформенный WEB-сервер на .NET
Простой и кросс-платформенный WEB-сервер на .NETПростой и кросс-платформенный WEB-сервер на .NET
Простой и кросс-платформенный WEB-сервер на .NET
 

More from GoSharp

TPL Dataflow – зачем и для кого?
TPL Dataflow – зачем и для кого?TPL Dataflow – зачем и для кого?
TPL Dataflow – зачем и для кого?
GoSharp
 
Живые приложения с Rx
Живые приложения с RxЖивые приложения с Rx
Живые приложения с Rx
GoSharp
 
Anemic Domain Model - антипаттерн или SOLID?
Anemic Domain Model - антипаттерн или SOLID?Anemic Domain Model - антипаттерн или SOLID?
Anemic Domain Model - антипаттерн или SOLID?
GoSharp
 
Эволюция пользовательского интерфейса бизнес-приложений: от DOSa через окна в...
Эволюция пользовательского интерфейса бизнес-приложений: от DOSa через окна в...Эволюция пользовательского интерфейса бизнес-приложений: от DOSa через окна в...
Эволюция пользовательского интерфейса бизнес-приложений: от DOSa через окна в...
GoSharp
 
UniversalApp "убийца" WPF или же это WPF+ ?
UniversalApp "убийца" WPF или же это WPF+ ?UniversalApp "убийца" WPF или же это WPF+ ?
UniversalApp "убийца" WPF или же это WPF+ ?
GoSharp
 
UI тестирование WPF приложений в Дойче Банке
UI тестирование WPF приложений в Дойче БанкеUI тестирование WPF приложений в Дойче Банке
UI тестирование WPF приложений в Дойче Банке
GoSharp
 
Практика применения Enterprise Architect и T4-шаблонов для разработки системы...
Практика применения Enterprise Architect и T4-шаблонов для разработки системы...Практика применения Enterprise Architect и T4-шаблонов для разработки системы...
Практика применения Enterprise Architect и T4-шаблонов для разработки системы...
GoSharp
 
За что не любить EF и чем его заменить
За что не любить EF и чем его заменитьЗа что не любить EF и чем его заменить
За что не любить EF и чем его заменить
GoSharp
 
Gosharp Intro
Gosharp IntroGosharp Intro
Gosharp Intro
GoSharp
 
Проектирование сетевой инфраструктуры под SOA проекты ASP.NET
Проектирование сетевой инфраструктуры под SOA проекты ASP.NETПроектирование сетевой инфраструктуры под SOA проекты ASP.NET
Проектирование сетевой инфраструктуры под SOA проекты ASP.NET
GoSharp
 
Мониторинг приложений ASP.NET на основе сервиса Application Insights
Мониторинг приложений ASP.NET на основе сервиса Application InsightsМониторинг приложений ASP.NET на основе сервиса Application Insights
Мониторинг приложений ASP.NET на основе сервиса Application Insights
GoSharp
 
Опыт разработки сложных клиент-серверных приложений на TypeScript и ASP.NET
Опыт разработки сложных клиент-серверных приложений на TypeScript и ASP.NETОпыт разработки сложных клиент-серверных приложений на TypeScript и ASP.NET
Опыт разработки сложных клиент-серверных приложений на TypeScript и ASP.NET
GoSharp
 
ASP.NET Internals
ASP.NET InternalsASP.NET Internals
ASP.NET Internals
GoSharp
 
Кросплатформенная разработка на ASP.NET vNext
Кросплатформенная разработка на ASP.NET vNextКросплатформенная разработка на ASP.NET vNext
Кросплатформенная разработка на ASP.NET vNext
GoSharp
 
Внедрение зависимостей в ASP.NET MVС и ASP.NET vNext
Внедрение зависимостей в ASP.NET MVС и ASP.NET vNextВнедрение зависимостей в ASP.NET MVС и ASP.NET vNext
Внедрение зависимостей в ASP.NET MVС и ASP.NET vNext
GoSharp
 
Будущее ASP.NET
Будущее ASP.NETБудущее ASP.NET
Будущее ASP.NET
GoSharp
 
Коучинг команд разработки и коучинговые инструменты в работе тимлида
Коучинг команд разработки и коучинговые инструменты в работе тимлидаКоучинг команд разработки и коучинговые инструменты в работе тимлида
Коучинг команд разработки и коучинговые инструменты в работе тимлида
GoSharp
 
Взаимное влияние Source Code Management и других средств организации разработки
Взаимное влияние Source Code Management и других средств организации разработкиВзаимное влияние Source Code Management и других средств организации разработки
Взаимное влияние Source Code Management и других средств организации разработки
GoSharp
 
DevOPS инструменты для .NET проектов
DevOPS инструменты для .NET проектовDevOPS инструменты для .NET проектов
DevOPS инструменты для .NET проектов
GoSharp
 
Доски проектов и продуктов на TFS: Agile-визуализация на уровне компании
Доски проектов и продуктов на TFS: Agile-визуализация на уровне компанииДоски проектов и продуктов на TFS: Agile-визуализация на уровне компании
Доски проектов и продуктов на TFS: Agile-визуализация на уровне компании
GoSharp
 

More from GoSharp (20)

TPL Dataflow – зачем и для кого?
TPL Dataflow – зачем и для кого?TPL Dataflow – зачем и для кого?
TPL Dataflow – зачем и для кого?
 
Живые приложения с Rx
Живые приложения с RxЖивые приложения с Rx
Живые приложения с Rx
 
Anemic Domain Model - антипаттерн или SOLID?
Anemic Domain Model - антипаттерн или SOLID?Anemic Domain Model - антипаттерн или SOLID?
Anemic Domain Model - антипаттерн или SOLID?
 
Эволюция пользовательского интерфейса бизнес-приложений: от DOSa через окна в...
Эволюция пользовательского интерфейса бизнес-приложений: от DOSa через окна в...Эволюция пользовательского интерфейса бизнес-приложений: от DOSa через окна в...
Эволюция пользовательского интерфейса бизнес-приложений: от DOSa через окна в...
 
UniversalApp "убийца" WPF или же это WPF+ ?
UniversalApp "убийца" WPF или же это WPF+ ?UniversalApp "убийца" WPF или же это WPF+ ?
UniversalApp "убийца" WPF или же это WPF+ ?
 
UI тестирование WPF приложений в Дойче Банке
UI тестирование WPF приложений в Дойче БанкеUI тестирование WPF приложений в Дойче Банке
UI тестирование WPF приложений в Дойче Банке
 
Практика применения Enterprise Architect и T4-шаблонов для разработки системы...
Практика применения Enterprise Architect и T4-шаблонов для разработки системы...Практика применения Enterprise Architect и T4-шаблонов для разработки системы...
Практика применения Enterprise Architect и T4-шаблонов для разработки системы...
 
За что не любить EF и чем его заменить
За что не любить EF и чем его заменитьЗа что не любить EF и чем его заменить
За что не любить EF и чем его заменить
 
Gosharp Intro
Gosharp IntroGosharp Intro
Gosharp Intro
 
Проектирование сетевой инфраструктуры под SOA проекты ASP.NET
Проектирование сетевой инфраструктуры под SOA проекты ASP.NETПроектирование сетевой инфраструктуры под SOA проекты ASP.NET
Проектирование сетевой инфраструктуры под SOA проекты ASP.NET
 
Мониторинг приложений ASP.NET на основе сервиса Application Insights
Мониторинг приложений ASP.NET на основе сервиса Application InsightsМониторинг приложений ASP.NET на основе сервиса Application Insights
Мониторинг приложений ASP.NET на основе сервиса Application Insights
 
Опыт разработки сложных клиент-серверных приложений на TypeScript и ASP.NET
Опыт разработки сложных клиент-серверных приложений на TypeScript и ASP.NETОпыт разработки сложных клиент-серверных приложений на TypeScript и ASP.NET
Опыт разработки сложных клиент-серверных приложений на TypeScript и ASP.NET
 
ASP.NET Internals
ASP.NET InternalsASP.NET Internals
ASP.NET Internals
 
Кросплатформенная разработка на ASP.NET vNext
Кросплатформенная разработка на ASP.NET vNextКросплатформенная разработка на ASP.NET vNext
Кросплатформенная разработка на ASP.NET vNext
 
Внедрение зависимостей в ASP.NET MVС и ASP.NET vNext
Внедрение зависимостей в ASP.NET MVС и ASP.NET vNextВнедрение зависимостей в ASP.NET MVС и ASP.NET vNext
Внедрение зависимостей в ASP.NET MVС и ASP.NET vNext
 
Будущее ASP.NET
Будущее ASP.NETБудущее ASP.NET
Будущее ASP.NET
 
Коучинг команд разработки и коучинговые инструменты в работе тимлида
Коучинг команд разработки и коучинговые инструменты в работе тимлидаКоучинг команд разработки и коучинговые инструменты в работе тимлида
Коучинг команд разработки и коучинговые инструменты в работе тимлида
 
Взаимное влияние Source Code Management и других средств организации разработки
Взаимное влияние Source Code Management и других средств организации разработкиВзаимное влияние Source Code Management и других средств организации разработки
Взаимное влияние Source Code Management и других средств организации разработки
 
DevOPS инструменты для .NET проектов
DevOPS инструменты для .NET проектовDevOPS инструменты для .NET проектов
DevOPS инструменты для .NET проектов
 
Доски проектов и продуктов на TFS: Agile-визуализация на уровне компании
Доски проектов и продуктов на TFS: Agile-визуализация на уровне компанииДоски проектов и продуктов на TFS: Agile-визуализация на уровне компании
Доски проектов и продуктов на TFS: Agile-визуализация на уровне компании
 

Паттерны быстрой разработки WPF MVVM бизнес-приложений

  • 1. Паттерны быстрой разработки WPF MVVM бизнес-приложений. (Несколько  типовых  задач,  возникающих  при  разработке   бизнес-­‐приложений  на  платформе  WPF,   и   эффективные  способы  решения  этих  задач,  воплощенные  в   DevExpress  Scaffolding  Wizard  -­‐   инструменте  быстрой  разработки  CRUD  и  LOB  приложений.)    
  • 2. 1. Бизнес-­‐приложения,  CRUD-­‐приложения,   DevExpress  Scaffolding.   2. Навигация  в  приложении.   3. Простая  асинхронная  загрузка  данных.   4. Асинхронная  загрузка  данных   и  lazy  loading  navigaYon  properYes.   5. Instant  Feedback  Mode   6. Формы  редактирования.  WPF  bindings  and   EnYty  Framework  objects.  
  • 3. Приложения   CRUD-­‐приложения   Приложения,   созданные  с  помощью   DevExpress  Scaffolding  Wizard   CRUD-­‐приложения  
  • 5. IDocumentManagerService IDocument CreateDocument( string documentID, object parentViewModel); IDocument ActiveDocument { get; } IEnumerable<IDocument> Documents { get; } IDocument object Content { get; } void Close(); Навигация.  
  • 6. IDocumentManagerService IDocument CreateDocument( string documentID, object parentViewModel); IDocument ActiveDocument { get; } IEnumerable<IDocument> Documents { get; } IDocument object Content { get; } void Close(); Навигация.  
  • 7. Main  View  Model   EnYty  CollecYon  View  Model   EnYty  View  Model   Tabbed  MDI   DocumentManagerService   Навигация.  
  • 8. Tabbed  MDI   DocumentManagerService   Main  View  Model   EnYty  CollecYon  View  Model   EnYty  View  Model   Windowed   DocumentManagerService   Навигация.  
  • 10. Асинхронная  загрузка  и  EnYty   Framework.   class  Order  {          long  Id;          decimal  Discount;          decimal  UnitPrice;          byte[]  Picture;          int  Quantity;          long  ProductId;          virtual  Product  Product;   }   class  Product  {          long  Id;          string  Name;          byte[]  Picture;          string  QuantityPerUnit;          double  UnitPrice;          string  Description;   }   class  OrderInfo  {          long  Id;          decimal  UnitPrice;          int  Quantity;          string  ProductName;   }   Id  =  x.Id   UnitPrice  =  x.UnitPrice   QuanYty  =  x.QuanYty   ProductName  =  x.ProductName   .Select(x  =>  new  OrderInfo()  {  …  })  Repository  EnYty   ProjecYon  EnYty  
  • 11. Data  Layer   View  Model   Data  Grid  Control   IQueryable   Async  Loading   ObservableCollecYon   Data  Layer   View  Model   Data  Grid  Control   IQueryable   EnYty   SelectedItem   ItemsSource   SelectedItem   ItemsSource   Async  Loading   SelectedEnYty   SelectedEnYty   Instant  Feedback  Mode.  
  • 12. EnYty  Framework.  Редактирование  enYty.   •  Обновление  эдиторов  на  форме  при  изменении  свойства  enYty   <dxe:TextEdit  EditValue="{Binding  Entity.Name,   UpdateSourceTrigger=PropertyChanged,    ValidatesOnDataErrors=True,    NotifyOnSourceUpdated=True}"  /> •  Обновление  состояния  вьюмодели  при  изменении  enYty  эдитором     <dxe:TextEdit  EditValue="{Binding  Entity.Name,   UpdateSourceTrigger=PropertyChanged,    ValidatesOnDataErrors=True,    NotifyOnSourceUpdated=True}"  />