1 / 24

Nowoczesna architektura w aplikacjach Windows Store

Nowoczesna architektura w aplikacjach Windows Store. Wojciech Poniatowski. Wojciech Poniatowski. Head of Windows Developer @ iApps Technologies MVP MCT, MCPD Śląska Regionalna Grupa Microsoft Prelegent Autor webcastów. O co chodzi ?. Narzędzia Frameworki Abstrakcja Wzorce MVVM

hieu
Download Presentation

Nowoczesna architektura w aplikacjach Windows Store

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Nowoczesna architektura w aplikacjach Windows Store Wojciech Poniatowski

  2. Wojciech Poniatowski • Head of Windows Developer @ iApps Technologies • MVP • MCT, MCPD • ŚląskaRegionalna Grupa Microsoft • Prelegent • Autorwebcastów

  3. O co chodzi? • Narzędzia • Frameworki • Abstrakcja • Wzorce • MVVM • IOC/DI • Cechycharakterystyczneaplikacji Windows 8 • Testy jednostkowe

  4. Co chemyosiągnąć? • Separacja • Testowalność • Abstrakcja • Klocki LEGO • Stabilność • Wspólnykod Windows 8, Windows Phone 8 • Możenawet WPF oraz Silverlight

  5. Narzędzia • Visual Studio 2012 • JetBrains R# • JetBrains dotCover • nCrunch jest “prawie” gotowynaWinRT

  6. Frameworki • WinRT • Callisto • MVVM Light • MetroIOC • xUnit

  7. Przydatnewzorceprojektowe • Singleton • Repository • Messenger • Factory • DI/IOC • MVVM • Locator

  8. Foo : IFoo • Każdaklasaimplementuje interface • AboutView : IAboutView • MainViewModel : IMainViewModel • MyRepository : IMyRepository • DialogService : IDialogService • Itd…

  9. IoC/DI orazInstanceFactory • Każdy interface i class sązajerestrowane (zamapowane) w InstanceFactory • InstanceFactory • Wrapper dlaIoC (MetroIOC) • Fabrykaobiektów

  10. MVVM • IdealnydlaXAML’a • Binding • Commanding • Messaging • Podstawowaimplementacja jest prosta • Zamałoabstrakcji

  11. MVVM Commanding • Brakkodu w code-behind • WinRT jest ograniczone • Przyciski – Command (Click) • TextBlock – Tapped ( ? ) • Potrzebnaproteza • EventToCommand

  12. EventToCommand • Nuget • WinRtBehaviors • Win8nl <TextBlockText="{BindingTitle}"FontSize="48"> <WinRtBehaviors:Interaction.Behaviors> <Win8nl_Behavior:EventToBoundCommandBehavior Command="{BindingNavigateToDetailsCommand}" CommandParameter="{BindingTitle}" Event="Tapped"/> </WinRtBehaviors:Interaction.Behaviors> </TextBlock>

  13. Messenger • Messenger aka Mediator aka Pub/Sub aka EventAggregator • ViewModel’eniezależne od siebie • Brakwzajemnychreferencji(nawetpo interface) • Komunikacja VM poprzezMessenger’a • “Mam takiedane, niechzainteresowany je sobieodbierze”

  14. Locator • Własnaklasa • Rejestruje(mapuje) interface iklasy • UdostępniawłaściwościzewszystkimiViewModel’ami • Przydajesiędlasilnietypowanychwyrażeń Binding w XAM

  15. A co z cechami Windows 8?

  16. Oknadialogowe • DialogWindow • Element UI (View) • SterowanyprzezViewModel • DialogService : IDialogService • Własnaklasa (wrapper/Serwis) zarejestrowana w IoC

  17. Nawigacja • Wbudowana w WinRT • Jaknawigować z poziomu MVVM? • Trzebasięodciąć • Utworzyćosobny Serwis • Sterowanie z poziomuViewModel • To ViewModeldecyduje o przepływieaplikacji • NavigationService : INavigationService • Własnaklasa (wrapper) zarejestrowana w IoC

  18. Charms / Settings • Opcjeaplikacji • About • Politykaprywatności • Zbudowaćwartwęabst • Globalne • Per widok

  19. Charms / Schare • Przekazywaniedanychmiędzy 2 aplikacjami • Inicjalizowane z ViewModel • NieużywamDataTransferManager w ViewModel • Potrzebnaseparacja (abstrakcja) • ScharingService : IScharingService • Klasa(wapper) zarejestrowany w IoC

  20. SemanticZoom • ISemanticZoom • ListView • GridView • ZoomIn • Nie ma sprawy • Zwykły Binding • ZoomOut • Potrzebnyekstra code-behind

  21. Testy jednostkowe • Sąważne • Niesąłatwe • Złaarchitektura • Legacy code • Mogąbyćłatwe • Dobra architektura • Mock, Fake

  22. Podsumowanie • Interface do każdejklasy • Rozdzielenieaplikacjinawarstwy • View • ViewModel • Model (Repository) • Wszystko jest sklejonepoprzezInstanceFactoryorazIoC/DI • Łatwośćwymiany “klocków” • Różneimplementacjetychsamychinterface’ów • Testowalność

  23. Q & A

  24. Dziękujęzauwagę

More Related