внедрении Wpf в сложных системах (слайды)

41
Первый опыт внедрения WPF в сложной системе (С++ и COM) Михаил Павлов Transas

description

Внедрении WPF в сложных системах (слайды)

Transcript of внедрении Wpf в сложных системах (слайды)

Page 1: внедрении Wpf в сложных системах (слайды)

Первый опыт внедрения WPF в сложной системе (С++ и COM)

Михаил ПавловTransas

Page 2: внедрении Wpf в сложных системах (слайды)

Цели доклада

• рассказать о проблемах на начальных этапах внедрения WPF• сформулировать рекомендации

повышения эффективности разработки

Page 3: внедрении Wpf в сложных системах (слайды)

Карты

Гео-текстуры

Карты высот

Планы

Карты глубин

3D модели

Сцена

Задачи продукта Вход Выход

импорт сборкаРедактор сцены

Page 4: внедрении Wpf в сложных системах (слайды)

Сцена

Page 5: внедрении Wpf в сложных системах (слайды)

Основные части

Хранилище данных

Модули импорта

ЛогикаМодуль экспорта

UI Диалоговые окна

Редактирование свойств

Движок редактора

Инструментыредактирования

Редактирование геометрии

Page 6: внедрении Wpf в сложных системах (слайды)

Технологии

• Логика – С++, COM• UI – MFC, ATL, WTL, C#(WF)• Движок редактора – С++, MFC, GDI+ • Модули импорта-экспорта – C++, COM• Визуализация – С++, COM, OpenGL• Прочие модули – С++, COM, ATL, WTL, C#

Page 7: внедрении Wpf в сложных системах (слайды)

Варианты развития

С++ .Net

WPF

Windows Forms

Прошлое Будущее

Page 8: внедрении Wpf в сложных системах (слайды)

Проблемы

• Устаревший дизайн• Падение скорости разработки UI• Ограничения в расширяемости• Отставание в технологиях

Page 9: внедрении Wpf в сложных системах (слайды)

Ожидаемые плюсы

• Переход на новейшие технологии• Программист пишет только код• Дизайном занимаются дизайнеры • Улучшение внешнего вида• Сложные проблемно-ориентированные

компонент UI• Ускорение разработки UI• Использование скинов

Page 10: внедрении Wpf в сложных системах (слайды)

Необходимое условие:поддержка

использования .Net на уровне ядра системы

Page 11: внедрении Wpf в сложных системах (слайды)

Причины отказа от COM

• Много сопутствующего кода• Проблемы синхронизации Interop

оберток• Потери быстродействия• Не везде поиск ошибок во время

компиляции

Page 12: внедрении Wpf в сложных системах (слайды)

Тестирование на изолированной утилите

Page 13: внедрении Wpf в сложных системах (слайды)

Первые впечатления

• Разработка интерфейса в стиле WF на WPF менее эффективна, чем на WF

• Легкости модификации системы при внесении изменений, нет и в помине

• Дизайн окон вручную съедает неоправданно много времени

Page 14: внедрении Wpf в сложных системах (слайды)

Коррекция разработки

• Использовать Binding совместно с моделью Data-Model-View

• Expression Blend в качестве редактора дизайна UI

• Разделить обязанности между дизайнером и программистом

• Увеличить количество разработчиков UI до двух человек.

Page 15: внедрении Wpf в сложных системах (слайды)

Результат коррекции:катастрофическое падение скорости

разработки :[]

Page 16: внедрении Wpf в сложных системах (слайды)

Причины падения скорости

• Требуется переосмысление архитектуры• Множество корректур дизайна• Замусоренный код от дизайнера• Формирование библиотеки стилей• Формирование базового функционала• Переход на векторную графику• Тонкости использования WPF • Недоработки библиотеке WPF

Page 17: внедрении Wpf в сложных системах (слайды)

Текущее положение вещей

Page 18: внедрении Wpf в сложных системах (слайды)

Практический опыт => экономия времени

Page 19: внедрении Wpf в сложных системах (слайды)

Бюрократия=> упорядочивание

внесения изменений

Page 20: внедрении Wpf в сложных системах (слайды)

Баланс обязанностей => экономия времени

Page 21: внедрении Wpf в сложных системах (слайды)

Сформулированы пожелания заказчика=> снижение потока

изменений

Page 22: внедрении Wpf в сложных системах (слайды)

Баланс между переделкой и повторным использованием

графических ресурсов=> экономия времени

Page 23: внедрении Wpf в сложных системах (слайды)

Мы перешли на WPF :)

Page 24: внедрении Wpf в сложных системах (слайды)

Оставшиеся проблемы • Наследие прошлого• Правильная интеграция 3D

визуализации• Перевод всего приложения на

WPF

Page 25: внедрении Wpf в сложных системах (слайды)

Ожидания и реальность

Page 26: внедрении Wpf в сложных системах (слайды)

Переход на новейшие технологии не до конца

Page 27: внедрении Wpf в сложных системах (слайды)

Разделение обязанностей дизайнера и программиста –

в небольшом объеме

Page 28: внедрении Wpf в сложных системах (слайды)

Улучшение внешнего вида – однозначно да

Page 29: внедрении Wpf в сложных системах (слайды)

Повышение функциональности интерфейса –

да, но с оговорками

Page 30: внедрении Wpf в сложных системах (слайды)

Скины –автоматически (by design)

Page 31: внедрении Wpf в сложных системах (слайды)

Итоговая скорость разработки

WTL < MFC < WPF< WF

Без учета затрат на дизайн:

• для окон средней сложности WPF= WF• для окон большой сложности WF < WPF

Page 32: внедрении Wpf в сложных системах (слайды)

Рекомендации

Page 33: внедрении Wpf в сложных системах (слайды)

Внедрять WPF должны программисты .Net (квалификация)

Page 34: внедрении Wpf в сложных системах (слайды)

Внедрять должны минимум два программиста (совещательность)

Page 35: внедрении Wpf в сложных системах (слайды)

Для одного из программистов желателен опыт работы с WPF

(центр кристаллизации знаний)

Page 36: внедрении Wpf в сложных системах (слайды)

Для дизайнера желателен опыт верстки HTML (подобие)

Page 37: внедрении Wpf в сложных системах (слайды)

Структурируйте разработку UI с целью упорядочивания внесения

изменений и понимания остальными происходящего

(экономия времени и нервов)

Page 38: внедрении Wpf в сложных системах (слайды)

Начинайте разработку с простой задачи с акцентом на библиотеку

стилей (задел в ширину)

Page 39: внедрении Wpf в сложных системах (слайды)

Продолжайте разработку с самой сложной, но локальной задачи

(задел архитектуры)

Page 40: внедрении Wpf в сложных системах (слайды)

Помните – архитектура главное, остальное по нескольку раз

меняется (акцент)

Page 41: внедрении Wpf в сложных системах (слайды)

Спасибо за внимание

Михаил ПавловTransas

[email protected]