Nowoczesna architektura w aplikacjach Windows Store

Slides:



Advertisements
Podobne prezentacje
Zaawansowane metody programowania – Wykład V
Advertisements

Obiektowe metody projektowania systemów Design Patterns STRATEGY.
ADAM Active Directory w trybie aplikacyjnym
OLAP budowa aplikacji analitycznych w MS SQL 2000 i Yukon
Politechnika Gdańska WYDZIAŁ ELEKTRONIKI TELEKOMUNIKACJI I INFORMATYKI
Inteligentny System Aktualności
Tworzenie ASP.NET Web Form
Zaawansowane techniki obiektowe
Systemy operacyjne Bibliografia:
Wzorce projektowe w J2EE
Projekt i implementacja aplikacji do zasilania bazy danych testowymi danymi Jacek Lis Promotor: prof. dr hab. inż. Włodzimierz KASPRZAK.
Analiza, projekt i częściowa implementacja systemu obsługi kina
Narzędzia do testowania
PROJECT KULKA. Plan prezentacji Pomysł Realizacja Demonstracji prototypu.
SZPIF – Harmonogram, Opis narzędzi, Schemat bazy danych
Tworzenie aplikacji wykorzystujących Workflow Foundation oraz Windows Presentation Foundation Prezentacja będzie miała na celu pokazanie praktycznych aspektów.
C# Windows Forms Zastosowania Informatyki Wykład 2
Modelowanie w Visual Studio 2010
Budowa platformy do rejestracji i odtwarzania wykładów akademickich
Promotor: dr.inż. Aleksandra Werner
Wstęp do programowania urządzeń z systemem. Windows Phone 7
Test Doubles Adam Gabryś , v1.1,
Programowanie w Środowisku Windows
UML 2.x Robert Pająk.
Podstawy programowania II
Opracował : Przemysław Drzymała
Promotor: dr.inż. Aleksandra Werner
Wykorzystanie mechanizmu delegata do emulacji struktury i zachowania widżetów w architekturze Model/Widok biblioteki Qt4 Wytłumaczyc temat: Ja: W bibliotekach.
Analiza możliwości tworzenia aplikacji typu RIA na przykładzie portalu ogrodniczego Autor: Łukasz Strzelecki Promotor: dr inż. Paweł Kasprowski.
Projektowanie obiektowe
Narzędzia administracyjne
Model – View – View Model
Opracowanie powłoki bazy danych MySQL
Silverlight Marcin Badurowicz
Kostyantyn Doronovych, 79129, sr1640 Łukasz Marciniak, 79166, sr1640
Systemy zarządzania treścią Wykład 5
Autor: Marcin Polak Promotor: dr inż. Paweł Kasprowski
Domain Specific Language Mac Michał Programujący architekt, konsultant.
Windows Phone 7. Plan prezentacji  Podstawowe informacje o Windows Phone  Platforma programistyczna  Demo.
Wzorce projektowe Jacek Matulewski
Responsywne aplikacje w Windows 8 i.NET 4.5 Jakub Binkowski.
Visual Basic w Excelu - podstawy
Projektowanie Aplikacji Internetowych Artur Niewiarowski Wydział Fizyki, Matematyki i Informatyki Politechnika Krakowska.
Platforma programistyczna  C#(VB) i XAML  Platforma programistyczna  Visual Studio 2010 Express for Windows Phone (Visual Studio 2010)  Windows Phone.
Technologie internetowe i mobilne
Forum Pracodawców AEiI 2015 Wydział Automatyki, Elektroniki i Informatyki Gliwice, 11 marca 2015r.
Obiektowe metody projektowania systemów Abstract Factory design pattern (aka. Kit)
Zakres Wzorce projektowe - kreacyjne -Factory Method -Abstract Factory.
Paweł Starzyk Obiektowe metody projektowania systemów
Jak przestałem się martwić i pokochałem tworzenie aplikacji okienkowych. źródło:
Wzorce Projektowe w JAVA
Rozwiązania mobilne wykorzystujące i aktualizujące informacje przestrzenne Poznań
A long time ago, in Redmond far, far away…. WSTĘP DO PRISM 5.0 Jak przygotować aplikację WPF do współpracy z Prism? Łukasz Rabiec
Temat: Porównanie technologii php,c# oraz javascript na przykładzie webaplikacji typu społecznościowy agregator treści Autor: Wojciech Ślawski.
T ESTY JEDNOSTKOWE W C# Alicja Majka, A GENDA Wprowadzenie do środowiska Czym są testy jednostkowe i po co je stosować? XUnit, NUnit Pokrycie.
Architektura Rafał Hryniów. Architektura Wizja projektu systemu, którą dzielą twórcy Struktura komponentów systemu, ich powiązań oraz zasad i reguł określających.
Implementacja wzorca MVVM w Prism 5.0
Projektowanie skalowalnych architektur z wykorzystaniem zaawansowanych technik DDD Michał Mac macmichal.pl.
Komunikacja pomiędzy luźno powiązanymi komponentami Mateusz Sionkowski.
Wyższa Szkoła Informatyki i Zarządzania W Bielsku-Białej Kierunek informatyka Specjalność : Systemy informatyczne Praca dyplomowa inżynierska : System.
Dobre praktyki w projektowaniu aplikacji mobilnych Arkadiusz Waśniewski
Co to jest WPF? Silnik graficzny odpowiedzialny za renderowanie interfejsów (nie tylko!) użytkownika aplikacji dla Windows. Dostępny od.NET 3.0 (2006)
Inżynieria oprogramowania Wzorce konstrukcyjne WWW: Jacek Matulewski Instytut Fizyki, UMK.
Maciej Grabek, Holte Software
Graficzny Interfejs Użytkownika
Wzorzec MVC Model View Controller
C# może więcej! Budowanie aplikacji mobilnych na platformy iOS/Android/Windows Phone przy użyciu narzędzi Xamarin Platform
Windows Workflow Foundation
Zaawansowane techniki obiektowe
JavaBeans by Paweł Wąsala
Zapis prezentacji:

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 IOC/DI Cechy charakterystyczne aplikacji Windows 8 Testy jednostkowe

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

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

Frameworki WinRT Callisto MVVM Light MetroIOC xUnit

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

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

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

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

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

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>

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”

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

A co z cechami Windows 8?

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

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

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

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

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

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

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ść

Q & A

Dziękuję za uwagę