О разработке десктопных приложений / About desktop development

Alexander Granin
Alexander GraninSoftware Developer, Independent Consultant at Independent Consultant
О разработке десктопных приложений
Александр Гранин
graninas@gmail.com
О себе
● Разработчик в “Лаборатории Касперского” (C++, C#)
● Выпуск ИВТ-04, 2009
● Хаскеллист, функциональный программист
● LambdaNsk - сообщество функциональных программистов
● Доклады: C++ User Group, Dev2Dev, DevDay, FPConf, LambdaNsk, …
● https://github.com/graninas
План
● Архитектура десктопных приложений
● Windows Presentation Foundation (WPF)
● Qt Quick, QML
● Вопросы реализации
Архитектура десктопных
приложений
Desktop applications
Presentation
Layer
(GUI)
Business
Logic Layer
Data Access
Layer
“Forms and Controls”
VCL (Delphi, C++ Builder)
WinForms (C#, .NET)
Qt Widgets (Qt, C++, crossplatform)
...
Model - View - Controller (MVC)
View
Controller Model
User Input Updates
Modifiers
WPF (C#, .NET)
Qt Quick (QML, C++, JavaScript)
“Separated Presentation”
View
ViewModel Model
Notifications
Bindings
Commands
Model - View - ViewModel (MVVM)
WPF
Windows Presentation Foundation
О разработке десктопных приложений / About desktop development
WPF (Windows Presentation Foundation)
XAML (.xaml)
Code behind (.cs)
ViewModel (.cs)
Data Model (.cs)
Services API (.cs)
NotificationsData Bindings
Model - View - ViewModel (MVVM)
ViewModel (.cs)
ViewModel (.cs)
XAML (.xaml)
Code behind (.cs)
XAML (.xaml)
Code behind (.cs)
WPF (Windows Presentation Foundation)
Model - View - ViewModel (MVVM)
XAML (.xaml)
Code behind (.cs)
ViewModel (.cs)
Data Model (.cs)
Services API (.cs)
NotificationsData Bindings
<WPF - Live Coding>
Qt Quick, QML
Qt Meta-Object Language
ViewModel (.cs)
ViewModel (.cs)
XAML (.xaml)
Code behind (.cs)
XAML (.xaml)
Code behind (.cs)
Qt Quick, QML (Qt Meta-Object Language)
Model - View - ViewModel (MVVM)
QML (.qml, JS)
ViewModel (.cpp)
Data Model (.cpp)
Services API (.cpp)
SignalsData Bindings
<Qt Quick, QML - Live Coding>
Вопросы реализации
Хороший код
Очень хороший код
● SOLID
● API
● Inversion of Control
● Unit testing
● Design Patterns
SOLID - принципы ООП-разработки
● Single responsibility principle
● Open/closed principle
● Liskov substitution principle
● Interface segregation principle
● Dependency inversion principle
Спасибо за внимание!
Александр Гранин
graninas@gmail.com
Чуть больше о C#
● Value Type vs Reference Type
● IEnumerable
● LINQ
● Lambdas
Чуть больше о C++
● Const reference
● STL Containers
● <algorithm>
● Lambdas
1 of 22

Recommended

Лучшие практики корпоративной разработки. Лекция 0: обзор курса. by
Лучшие практики корпоративной разработки. Лекция 0: обзор курса.Лучшие практики корпоративной разработки. Лекция 0: обзор курса.
Лучшие практики корпоративной разработки. Лекция 0: обзор курса.Vadim Martynov
512 views30 slides
Azimut framework by
Azimut frameworkAzimut framework
Azimut frameworkdmamel
399 views5 slides
Dotnet development by
Dotnet developmentDotnet development
Dotnet developmentMageCloud
347 views11 slides
Platypus platform ivbit by
Platypus platform ivbitPlatypus platform ivbit
Platypus platform ivbitjskonst
6.3K views29 slides
внедрении Wpf в сложных системах (слайды) by
внедрении Wpf в сложных системах (слайды)внедрении Wpf в сложных системах (слайды)
внедрении Wpf в сложных системах (слайды)WhiteMbIXA
629 views41 slides
Как взаимодействовать с графическими дизайнерами: готовим UI Kit / Артем Моло... by
Как взаимодействовать с графическими дизайнерами: готовим UI Kit / Артем Моло...Как взаимодействовать с графическими дизайнерами: готовим UI Kit / Артем Моло...
Как взаимодействовать с графическими дизайнерами: готовим UI Kit / Артем Моло...Ontico
1.2K views43 slides

More Related Content

What's hot

DUMP-2013 Управление разработкой - Переход от проектной разработки к продукто... by
DUMP-2013 Управление разработкой - Переход от проектной разработки к продукто...DUMP-2013 Управление разработкой - Переход от проектной разработки к продукто...
DUMP-2013 Управление разработкой - Переход от проектной разработки к продукто...it-people
830 views21 slides
CI для Microsoft Dynamics crm by
CI для Microsoft Dynamics crmCI для Microsoft Dynamics crm
CI для Microsoft Dynamics crmRoman Savran
732 views16 slides
GitFlow_MOEX by
GitFlow_MOEXGitFlow_MOEX
GitFlow_MOEXSergey Maximov
194 views19 slides
Вадим Митин - как выстроить техническую платформу для стабильной работы web... by
Вадим Митин  -  как выстроить техническую платформу для стабильной работы web...Вадим Митин  -  как выстроить техническую платформу для стабильной работы web...
Вадим Митин - как выстроить техническую платформу для стабильной работы web...sergey doronin
165 views22 slides
GraphQL tools | Никита Галкин | Zlit Tech by
GraphQL tools | Никита Галкин | Zlit TechGraphQL tools | Никита Галкин | Zlit Tech
GraphQL tools | Никита Галкин | Zlit TechZlit
91 views33 slides
голубушин by
голубушинголубушин
голубушинПетр Левич
246 views11 slides

What's hot(20)

DUMP-2013 Управление разработкой - Переход от проектной разработки к продукто... by it-people
DUMP-2013 Управление разработкой - Переход от проектной разработки к продукто...DUMP-2013 Управление разработкой - Переход от проектной разработки к продукто...
DUMP-2013 Управление разработкой - Переход от проектной разработки к продукто...
it-people830 views
CI для Microsoft Dynamics crm by Roman Savran
CI для Microsoft Dynamics crmCI для Microsoft Dynamics crm
CI для Microsoft Dynamics crm
Roman Savran732 views
Вадим Митин - как выстроить техническую платформу для стабильной работы web... by sergey doronin
Вадим Митин  -  как выстроить техническую платформу для стабильной работы web...Вадим Митин  -  как выстроить техническую платформу для стабильной работы web...
Вадим Митин - как выстроить техническую платформу для стабильной работы web...
sergey doronin165 views
GraphQL tools | Никита Галкин | Zlit Tech by Zlit
GraphQL tools | Никита Галкин | Zlit TechGraphQL tools | Никита Галкин | Zlit Tech
GraphQL tools | Никита Галкин | Zlit Tech
Zlit91 views
Microsoft Edge и платформа веб-приложений в Windows 10 / Константин Кичинский... by Ontico
Microsoft Edge и платформа веб-приложений в Windows 10 / Константин Кичинский...Microsoft Edge и платформа веб-приложений в Windows 10 / Константин Кичинский...
Microsoft Edge и платформа веб-приложений в Windows 10 / Константин Кичинский...
Ontico594 views
Кросс-платформенная разработка под мобильные устройства. Дмитрий Жестилевский... by yaevents
Кросс-платформенная разработка под мобильные устройства. Дмитрий Жестилевский...Кросс-платформенная разработка под мобильные устройства. Дмитрий Жестилевский...
Кросс-платформенная разработка под мобильные устройства. Дмитрий Жестилевский...
yaevents1.5K views
Ruby on Rails снижаем стоимость разработки by Media Gorod
Ruby on Rails снижаем стоимость разработкиRuby on Rails снижаем стоимость разработки
Ruby on Rails снижаем стоимость разработки
Media Gorod374 views
Онлайн-кинотеатр для SmartTV на веб-технологиях / Михаил Лабанов (Ayyo) by Ontico
Онлайн-кинотеатр для SmartTV на веб-технологиях / Михаил Лабанов (Ayyo)Онлайн-кинотеатр для SmartTV на веб-технологиях / Михаил Лабанов (Ayyo)
Онлайн-кинотеатр для SmartTV на веб-технологиях / Михаил Лабанов (Ayyo)
Ontico734 views
About emacs by jskonst
About emacsAbout emacs
About emacs
jskonst1.2K views
Аналитика в проектах: TFS + Qlik by Positive Hack Days
Аналитика в проектах: TFS + QlikАналитика в проектах: TFS + Qlik
Аналитика в проектах: TFS + Qlik
Positive Hack Days883 views
разработка собственной Agile методологии для управления крупными проектами by SQALab
разработка собственной Agile методологии для управления крупными проектамиразработка собственной Agile методологии для управления крупными проектами
разработка собственной Agile методологии для управления крупными проектами
SQALab905 views
Алексей Кабанов by SQALab
Алексей КабановАлексей Кабанов
Алексей Кабанов
SQALab333 views
Continuous Integration(как мы подружили frontend и backend) by Talks&Works
Continuous Integration(как мы подружили frontend и backend)Continuous Integration(как мы подружили frontend и backend)
Continuous Integration(как мы подружили frontend и backend)
Talks&Works476 views
Continuous integration, или как мы подружили front end и back-end by wlbl
Continuous integration,  или как мы подружили  front end и back-endContinuous integration,  или как мы подружили  front end и back-end
Continuous integration, или как мы подружили front end и back-end
wlbl694 views
Прямая выгода BigData для бизнеса by Alexey Lustin
Прямая выгода BigData для бизнесаПрямая выгода BigData для бизнеса
Прямая выгода BigData для бизнеса
Alexey Lustin773 views
KNOCKOUTJS КАК РЕАЛИЗАЦИЯ MVVM by Pavel Tsukanov
KNOCKOUTJS КАК РЕАЛИЗАЦИЯ MVVMKNOCKOUTJS КАК РЕАЛИЗАЦИЯ MVVM
KNOCKOUTJS КАК РЕАЛИЗАЦИЯ MVVM
Pavel Tsukanov841 views

Similar to О разработке десктопных приложений / About desktop development

IT-инфраструктура. FAQ для разработчика by
IT-инфраструктура. FAQ для разработчикаIT-инфраструктура. FAQ для разработчика
IT-инфраструктура. FAQ для разработчикаMikhail Chinkov
267 views34 slides
What's new in Visual Studio 2012 by
What's new in Visual Studio 2012What's new in Visual Studio 2012
What's new in Visual Studio 2012InTRUEdeR
394 views17 slides
DevOps для 1С by
DevOps для 1СDevOps для 1С
DevOps для 1СAlexey Lustin
1.3K views23 slides
Dmytro Nemesh "Building the perfect infrastructure with Kubernetes" by
Dmytro Nemesh "Building the perfect infrastructure with Kubernetes"Dmytro Nemesh "Building the perfect infrastructure with Kubernetes"
Dmytro Nemesh "Building the perfect infrastructure with Kubernetes"Fwdays
270 views49 slides
Tech Talks @NSU: Технологии кросс-платформенной разработки мобильных бизнес-п... by
Tech Talks @NSU: Технологии кросс-платформенной разработки мобильных бизнес-п...Tech Talks @NSU: Технологии кросс-платформенной разработки мобильных бизнес-п...
Tech Talks @NSU: Технологии кросс-платформенной разработки мобильных бизнес-п...Tech Talks @NSU
141 views25 slides
X Window by
X WindowX Window
X WindowAlexander Babich
562 views47 slides

Similar to О разработке десктопных приложений / About desktop development(20)

IT-инфраструктура. FAQ для разработчика by Mikhail Chinkov
IT-инфраструктура. FAQ для разработчикаIT-инфраструктура. FAQ для разработчика
IT-инфраструктура. FAQ для разработчика
Mikhail Chinkov267 views
What's new in Visual Studio 2012 by InTRUEdeR
What's new in Visual Studio 2012What's new in Visual Studio 2012
What's new in Visual Studio 2012
InTRUEdeR394 views
Dmytro Nemesh "Building the perfect infrastructure with Kubernetes" by Fwdays
Dmytro Nemesh "Building the perfect infrastructure with Kubernetes"Dmytro Nemesh "Building the perfect infrastructure with Kubernetes"
Dmytro Nemesh "Building the perfect infrastructure with Kubernetes"
Fwdays270 views
Tech Talks @NSU: Технологии кросс-платформенной разработки мобильных бизнес-п... by Tech Talks @NSU
Tech Talks @NSU: Технологии кросс-платформенной разработки мобильных бизнес-п...Tech Talks @NSU: Технологии кросс-платформенной разработки мобильных бизнес-п...
Tech Talks @NSU: Технологии кросс-платформенной разработки мобильных бизнес-п...
Tech Talks @NSU141 views
Desktop app based on node js and html5 by Provectus
Desktop app based on node js and html5Desktop app based on node js and html5
Desktop app based on node js and html5
Provectus765 views
Профессиональная разработка в суровом Enterprise by Alexander Granin
Профессиональная разработка в суровом EnterpriseПрофессиональная разработка в суровом Enterprise
Профессиональная разработка в суровом Enterprise
Alexander Granin1.1K views
Совместные решения Citrix и Dell для правильной организации рабочих мест by Dell_Russia
Совместные решения Citrix и Dell для правильной организации рабочих местСовместные решения Citrix и Dell для правильной организации рабочих мест
Совместные решения Citrix и Dell для правильной организации рабочих мест
Dell_Russia730 views
Jelastic для разработчиков ПО by Dmitry Lazarenko
Jelastic для разработчиков ПОJelastic для разработчиков ПО
Jelastic для разработчиков ПО
Dmitry Lazarenko585 views
Continuous integration сайтов на Drupal: Jenkins, Bitbucket, Features, Drush ... by DrupalCamp MSK
Continuous integration сайтов на Drupal: Jenkins, Bitbucket, Features, Drush ...Continuous integration сайтов на Drupal: Jenkins, Bitbucket, Features, Drush ...
Continuous integration сайтов на Drupal: Jenkins, Bitbucket, Features, Drush ...
DrupalCamp MSK904 views
Console application with ZF 2.0 by Alexey Kachayev
Console application with ZF 2.0Console application with ZF 2.0
Console application with ZF 2.0
Alexey Kachayev1.3K views
ПартФорум DIRECTUM 2013 - разработка прикладных решений by Виктор Золотов
ПартФорум DIRECTUM 2013 - разработка прикладных решенийПартФорум DIRECTUM 2013 - разработка прикладных решений
ПартФорум DIRECTUM 2013 - разработка прикладных решений
Open Source Testing Framework: real project example and best practices by Aliaksandr Ikhelis
Open Source Testing Framework: real project example and best practicesOpen Source Testing Framework: real project example and best practices
Open Source Testing Framework: real project example and best practices
Aliaksandr Ikhelis705 views
Реализация тестового фреймворка на основе OPEN-SOURCE инструментов by SQALab
Реализация тестового фреймворка на основе OPEN-SOURCE инструментовРеализация тестового фреймворка на основе OPEN-SOURCE инструментов
Реализация тестового фреймворка на основе OPEN-SOURCE инструментов
SQALab602 views
Frontend: Путешествие в мир модульных загрузчиков by CodeFest
Frontend: Путешествие в мир модульных загрузчиковFrontend: Путешествие в мир модульных загрузчиков
Frontend: Путешествие в мир модульных загрузчиков
CodeFest957 views
Кирилл Комлев. О реализации continuous integration для web проектов by Olesya_V
Кирилл Комлев. О реализации continuous integration для web проектовКирилл Комлев. О реализации continuous integration для web проектов
Кирилл Комлев. О реализации continuous integration для web проектов
Olesya_V651 views
[RU] Connecting AutoCAD and Python (by Alex Bausk) by Alexander Bausk
[RU] Connecting AutoCAD and Python (by Alex Bausk)[RU] Connecting AutoCAD and Python (by Alex Bausk)
[RU] Connecting AutoCAD and Python (by Alex Bausk)
Alexander Bausk1.4K views
Денис Захаркин, VR Concept - MIXAR2016 by mixARConference
Денис Захаркин, VR Concept - MIXAR2016Денис Захаркин, VR Concept - MIXAR2016
Денис Захаркин, VR Concept - MIXAR2016
mixARConference225 views

More from Alexander Granin

Concurrent applications with free monads and stm by
Concurrent applications with free monads and stmConcurrent applications with free monads and stm
Concurrent applications with free monads and stmAlexander Granin
208 views55 slides
Hierarchical free monads and software design in fp by
Hierarchical free monads and software design in fpHierarchical free monads and software design in fp
Hierarchical free monads and software design in fpAlexander Granin
161 views59 slides
Final tagless vs free monad by
Final tagless vs free monadFinal tagless vs free monad
Final tagless vs free monadAlexander Granin
158 views74 slides
Monadic parsers in C++ by
Monadic parsers in C++Monadic parsers in C++
Monadic parsers in C++Alexander Granin
579 views58 slides
The present and the future of functional programming in c++ by
The present and the future of functional programming in c++The present and the future of functional programming in c++
The present and the future of functional programming in c++Alexander Granin
343 views125 slides
Принципы и практики разработки ПО 2 / Principles and practices of software de... by
Принципы и практики разработки ПО 2 / Principles and practices of software de...Принципы и практики разработки ПО 2 / Principles and practices of software de...
Принципы и практики разработки ПО 2 / Principles and practices of software de...Alexander Granin
133 views23 slides

More from Alexander Granin(20)

Concurrent applications with free monads and stm by Alexander Granin
Concurrent applications with free monads and stmConcurrent applications with free monads and stm
Concurrent applications with free monads and stm
Alexander Granin208 views
Hierarchical free monads and software design in fp by Alexander Granin
Hierarchical free monads and software design in fpHierarchical free monads and software design in fp
Hierarchical free monads and software design in fp
Alexander Granin161 views
The present and the future of functional programming in c++ by Alexander Granin
The present and the future of functional programming in c++The present and the future of functional programming in c++
The present and the future of functional programming in c++
Alexander Granin343 views
Принципы и практики разработки ПО 2 / Principles and practices of software de... by Alexander Granin
Принципы и практики разработки ПО 2 / Principles and practices of software de...Принципы и практики разработки ПО 2 / Principles and practices of software de...
Принципы и практики разработки ПО 2 / Principles and practices of software de...
Alexander Granin133 views
Принципы и практики разработки ПО / Principles and practices of software deve... by Alexander Granin
Принципы и практики разработки ПО / Principles and practices of software deve...Принципы и практики разработки ПО / Principles and practices of software deve...
Принципы и практики разработки ПО / Principles and practices of software deve...
Alexander Granin140 views
Закон Деметры / Demetra's law by Alexander Granin
Закон Деметры / Demetra's lawЗакон Деметры / Demetra's law
Закон Деметры / Demetra's law
Alexander Granin149 views
GitHub - зеркало разработчика by Alexander Granin
GitHub - зеркало разработчикаGitHub - зеркало разработчика
GitHub - зеркало разработчика
Alexander Granin958 views
The Present and The Future of Functional Programming in C++ by Alexander Granin
The Present and The Future of Functional Programming in C++The Present and The Future of Functional Programming in C++
The Present and The Future of Functional Programming in C++
Alexander Granin86 views
Functional programming in C++ LambdaNsk by Alexander Granin
Functional programming in C++ LambdaNskFunctional programming in C++ LambdaNsk
Functional programming in C++ LambdaNsk
Alexander Granin464 views
Transition graph using free monads and existentials by Alexander Granin
Transition graph using free monads and existentialsTransition graph using free monads and existentials
Transition graph using free monads and existentials
Alexander Granin473 views
Software transactional memory. pure functional approach by Alexander Granin
Software transactional memory. pure functional approachSoftware transactional memory. pure functional approach
Software transactional memory. pure functional approach
Alexander Granin968 views
Вы не понимаете ФП / You don't understand FP by Alexander Granin
Вы не понимаете ФП / You don't understand FPВы не понимаете ФП / You don't understand FP
Вы не понимаете ФП / You don't understand FP
Alexander Granin144 views
Functional "Life": parallel cellular automata and comonads by Alexander Granin
Functional "Life": parallel cellular automata and comonadsFunctional "Life": parallel cellular automata and comonads
Functional "Life": parallel cellular automata and comonads
Alexander Granin885 views
Functional microscope - Lenses in C++ by Alexander Granin
Functional microscope - Lenses in C++Functional microscope - Lenses in C++
Functional microscope - Lenses in C++
Alexander Granin1.7K views
Дизайн больших приложений в ФП by Alexander Granin
Дизайн больших приложений в ФПДизайн больших приложений в ФП
Дизайн больших приложений в ФП
Alexander Granin761 views
Линзы - комбинаторная манипуляция данными by Alexander Granin
Линзы - комбинаторная манипуляция даннымиЛинзы - комбинаторная манипуляция данными
Линзы - комбинаторная манипуляция данными
Alexander Granin389 views
Линзы - комбинаторная манипуляция данными (Dev2Dev) by Alexander Granin
Линзы - комбинаторная манипуляция данными (Dev2Dev)Линзы - комбинаторная манипуляция данными (Dev2Dev)
Линзы - комбинаторная манипуляция данными (Dev2Dev)
Alexander Granin483 views

О разработке десктопных приложений / About desktop development