Caliburn Micro Overview
Click here to load reader
-
Upload
kiev-altnet -
Category
Technology
-
view
1.477 -
download
2
description
Transcript of Caliburn Micro Overview
Caliburn Micro overview
Micro-Framework for WPF, Silverlight and WP7
Іван Корнелюк
[email protected] @korneliuk korneliuk.blogspot.com
Основні відомості
• Створено Rob Eisenberg (@EisenbergEffect)
• Оснований на Caliburn - 90% можливостей в 10% коду
• Логічне продовження прикладу продемонстрованого на сесії Mix10 "Build Your Own MVVM Framework"
Призначення
• Можливість створювати WPF/SL програми використовуючи TDD
• Спростити використання UI патернів MVC, MVP та MVVM
• Зменшити кількість рутинного коду, який потрібно писати для того, щоб MVVM працював
• Фреймворк, який легко зрозуміти та можна змінювати до власних потреб
"We want to write elegant, testable, maintainable and extensible presentation layer code…and we want it to be easy to do so. That’s what this is about."
Приклад Game Library з сесії "Build Your Own MVVM Framework" був портований Marco Amendola для Caliburn.Micro.
Game LibraryDEMO
Game Library Demoслайд з презентації, яку робив Rob Eisenberg
• No Code Behind
• No Event Wireups
• No Commands
• No Data Binding
• No Data Templates
• No Async Programming
• No Custom Controls
Convention over configuration
• Action conventions
• Binding conventions • View locating conventions
ActionMessages
• Прив'язка UI тригерів до методів ViewModel - немає потреби в командах!
• Дозволяє передавати параметри методуo Можна передавати DataContext чи EventArgs o Конвертуються до сигнатури метода
• Message "bubbling" - корисно в Master/Details сценаріх
• CanExecute Guard
• Підтримка Coroutines
• Підтрика Blend в дизайн-тайм
CoroutinesСпівпрограмма (Coroutine) — компонент програми, з підтримкою безлічі точок входу (а не однієї, як підпрограма) і зупинкою та продовженням виконання із збереженням певного положення.
• Більше немає потреби займатись асинхронним програмуванням
• Легко тестувати
o Відсутні звичні проблеми із тестуванням асинхронного коду (бо він відсутній явно)
o Немає потреби в Mock фреймворках
o Не потрібні інтерфейси, щоб ізолювати такі класи як MessageDialog.
Інфраструктура
• Bootstrapper
• Event Aggregator
• WindowManager
• ViewLocator
• Logging
• Screen та ScreenConductor
• PropertyChangedBase та BindableCollection
Дякую!