Pobieranie prezentacji. Proszę czekać

Pobieranie prezentacji. Proszę czekać

Nowoczesna architektura w aplikacjach Windows Store

Podobne prezentacje


Prezentacja na temat: "Nowoczesna architektura w aplikacjach Windows Store"— Zapis prezentacji:

1 Nowoczesna architektura w aplikacjach Windows Store
Wojciech Poniatowski

2 Wojciech Poniatowski Head of Windows Developer @ iApps Technologies
MVP MCT, MCPD Śląska Regionalna Grupa Microsoft Prelegent Autor webcastów

3 O co chodzi? Narzędzia Frameworki Abstrakcja Wzorce
MVVM IOC/DI Cechy charakterystyczne aplikacji Windows 8 Testy jednostkowe

4 Co chemy osiągnąć? Separacja Testowalność Abstrakcja Klocki LEGO
Stabilność Wspólny kod Windows 8, Windows Phone 8 Może nawet WPF oraz Silverlight

5 Narzędzia Visual Studio 2012 JetBrains R# JetBrains dotCover
nCrunch jest “prawie” gotowy na WinRT

6 Frameworki WinRT Callisto MVVM Light MetroIOC xUnit

7 Przydatne wzorce projektowe
Singleton Repository Messenger Factory DI/IOC MVVM Locator

8 Foo : IFoo Każda klasa implementuje interface AboutView : IAboutView
MainViewModel : IMainViewModel MyRepository : IMyRepository DialogService : IDialogService Itd…

9 IoC/DI oraz InstanceFactory
Każdy interface i class są zajerestrowane (zamapowane) w InstanceFactory InstanceFactory Wrapper dla IoC (MetroIOC) Fabryka obiektów

10 MVVM Idealny dla XAML’a Binding Commanding Messaging
Podstawowa implementacja jest prosta Za mało abstrakcji

11 MVVM Commanding Brak kodu w code-behind WinRT jest ograniczone
Przyciski – Command (Click) TextBlock – Tapped ( ? ) Potrzebna proteza EventToCommand

12 EventToCommand Nuget WinRtBehaviors Win8nl
<TextBlock Text="{Binding Title}" FontSize="48"> <WinRtBehaviors:Interaction.Behaviors> <Win8nl_Behavior:EventToBoundCommandBehavior Command="{Binding NavigateToDetailsCommand}" CommandParameter="{Binding Title}" Event="Tapped" /> </WinRtBehaviors:Interaction.Behaviors> </TextBlock>

13 Messenger Messenger aka Mediator aka Pub/Sub aka EventAggregator
ViewModel’e niezależne od siebie Brak wzajemnych referencji (nawet po interface) Komunikacja VM poprzez Messenger’a “Mam takie dane, niech zainteresowany je sobie odbierze”

14 Locator Własna klasa Rejestruje (mapuje) interface i klasy
Udostępnia właściwości ze wszystkimi ViewModel’ami Przydaje się dla silnie typowanych wyrażeń Binding w XAM

15 A co z cechami Windows 8?

16 Okna dialogowe DialogWindow Element UI (View)
Sterowany przez ViewModel DialogService : IDialogService Własna klasa (wrapper/Serwis) zarejestrowana w IoC

17 Nawigacja Wbudowana w WinRT Jak nawigować z poziomu MVVM?
Trzeba się odciąć Utworzyć osobny Serwis Sterowanie z poziomu ViewModel To ViewModel decyduje o przepływie aplikacji NavigationService : INavigationService Własna klasa (wrapper) zarejestrowana w IoC

18 Charms / Settings Opcje aplikacji Globalne Per widok About
Polityka prywatności Zbudować wartwę abst Globalne Per widok

19 Charms / Schare Przekazywanie danych między 2 aplikacjami
Inicjalizowane z ViewModel Nie używam DataTransferManager w ViewModel Potrzebna separacja (abstrakcja) ScharingService : IScharingService Klasa (wapper) zarejestrowany w IoC

20 SemanticZoom ISemanticZoom ZoomIn ZoomOut ListView GridView
Nie ma sprawy Zwykły Binding ZoomOut Potrzebny ekstra code-behind

21 Testy jednostkowe Są ważne Nie są łatwe Mogą być łatwe
Zła architektura Legacy code Mogą być łatwe Dobra architektura Mock, Fake

22 Podsumowanie Interface do każdej klasy
Rozdzielenie aplikacji na warstwy View ViewModel Model (Repository) Wszystko jest sklejone poprzez InstanceFactory oraz IoC/DI Łatwość wymiany “klocków” Różne implementacje tych samych interface’ów Testowalność

23 Q & A

24 Dziękuję za uwagę


Pobierz ppt "Nowoczesna architektura w aplikacjach Windows Store"

Podobne prezentacje


Reklamy Google