Responsywne aplikacje w Windows 8 i.NET 4.5 Jakub Binkowski.

Slides:



Advertisements
Podobne prezentacje
Programowanie obiektowe
Advertisements

Generics w .NET 2.0 Łukasz Rzeszot.
Bezpieczeństwo wyjątków w C++: OpenGL
Wydajne aplikacje na platformie .NET
Nguyen Hung Son Uniwersytet Warszawski
Wybrane elementy języka Java
Marcin Pamuła Mateusz Stefek
Nowa wersja C# Autor: Piotr Sobczak
Visual Studio Codename „Orcas”, LINQ
Szablony (wzorce) Przykład 1: Szablon klasy -
Licznik template<class Count_Type> class Count { public:
.NET - możliwości Jarosław Balcer & Jan Góralski.
Model – View - Controler
K.Subieta. SSR, Wykład 4, Folia 1 marzec 2009 Standardy w zakresie systemów rozproszonych i baz danych Kazimierz Subieta Polsko-Japońska Wyższa Szkoła.
Tworzenie ASP.NET Web Form
Bartosz Walter Inżynieria oprogramowania Lecture XXX JavaTM – część II Bartosz Walter
BIRT.
Widoki.
Obiektowe metody projektowania systemów Command Pattern.
Systemy operacyjne Wykład nr 5: Wątki Piotr Bilski.
.NET Remoting Łukasz Zawadzki.
POZNAŃ SUPERCOMPUTING AND NETWORKING CENTER WP 2.1 Zdalny dostęp do bibliotek naukowych Udział w projekcie: 6,51% Osoby kontaktowe: PCSS: Maciej Brzeźniak.
C# Windows Forms Zastosowania Informatyki Wykład 3
Jakub Binkowski Visual C# MVP webEFS sp.j.. GET i POST.
Test Doubles Adam Gabryś , v1.1,
Podstawy C# Grupa .NET PO.
Klasy w C++. Deklaracja klasy class NazwaTwojejKlasy { //w tym miejscu piszemy definicje typów, //zmienne i funkcje jakie mają należeć do klasy. }; //tutaj.
Programowanie urządzeń mobilnych – wykład IV
Programowanie równoległe Wojciech Grześkowiak2010/11/12.
Node.js – Serverside Javascript
Podstawy inżynierii oprogramowania Zofia Kruczkiewicz
PIO 3_2, Zofia Kruczkiewicz1 Wykład 3 – część druga Iteracyjno-rozwojowy cykl oprogramowania 3.
Asynchroniczność w Windows 8 Jakub Binkowski. O mnie Jakub Binkowski Lead.NET Developer.
Architektura aplikacji wielowątkowych Jakub Binkowski.
Programowanie Aplikacji Lokalnych w Środowisku .NET
Seminarium problemowe
Programowanie Aplikacji Lokalnych w Środowisku .NET
PIO 2_2, Zofia Kruczkiewicz1 Wykład 2 – część druga Iteracyjno-rozwojowy cykl oprogramowania 2.
C# Cz.7 Refleksja, Atrybuty
Krótka historia asynchroniczności w.NET Jakub Binkowski.
Dobry kod OO Jeżeli zapytamy statystycznego programistę z czym kojarzy mu się dobry kod OO to najprawdopodobniej będzie mówił o wzorcach projektowych.
Wydział Elektroniki Kierunek: AiR Zaawansowane metody programowania Wykład 5.
Podstawy programowania (4)
Technologie internetowe Wykład 7 Kontrola danych użytkownika.
Technologie internetowe Wykład 5 Wprowadzenie do skrytpów serwerowych.
Piotr Czapiewski Wydział Informatyki ZUT Wykład 2.
Model współbieżności w Javie
Paweł Starzyk Obiektowe metody projektowania systemów
PO13-1 / 19 Wykład 13 Wyjątki i ich zgłaszanie Wyłapywanie wyjątków Obsługa wyjątków Wykorzystanie polimorfizmu Filtrowanie wyjątków Błędy w konstruktorach.
Wykład 10 Programowanie w Windows 1.Aplikacja dialogowa (Dialog Based) PO10-1 / 26.
Typy i metody sparametryzowane (generics) (c) Krzysztof Barteczko 2014.
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.
Projektowanie skalowalnych architektur z wykorzystaniem zaawansowanych technik DDD Michał Mac macmichal.pl.
Wprowadzenie do aplikacji czasu rzeczywistego Igor Mróz Zielona Góra,
Refaktoryzacja „Any fool can write a code that computer understands. Good programers write code that human can understand” – Martin Fowler.
InMoST, Java – przykładowa aplikacja Bartosz.Michalik
Pierwsza aplikacja na Windows Phone. Dlaczego Windows Phone?
Windows 8 dla programistów Bartłomiej Zass Microsoft.
PHP (wstęp) Personal Home Page Tools (PHP Tools)
Programowanie Obiektowe – Wykład 6
Przygody z EventSourcing i CQRS
Dzisiejsze zajęcia będą wyjątkowe…
Programowanie Obiektowe – Wykład 9
(według:
Delegaty Delegat to obiekt „wiedzący”, jak wywołać metodę.
Dynamics 365 CE i język TypeScript
Windows Workflow Foundation
Zastosowanie tzw reaktywności w aplikacjach.
Tworzenie wątków w Javie
Zapis prezentacji:

Responsywne aplikacje w Windows 8 i.NET 4.5 Jakub Binkowski

O mnie Jakub Binkowski Lead.NET Developer

Agenda User Experienceasync Windows 8 Runtime Internals i architektura

Responsywność

 User Experience! Dlaczego responsywność?

Projekt UI vs projekt UX

Dlaczego UX ma znaczenie?

Cechy responsywnej aplikacji 1. Aplikacja nie zawiesza się 2. Natychmiastowa odpowiedź 3. Postęp pracy / czas do zakończenia / „kręciołek” 4. Możliwość przerwania pracy

Dlaczego aplikacje się zawieszają? Demo

public void LoadGroups() { var client = new DataServiceClient(); var groups = client.GetGroups(); foreach (var group in groups) { this.Groups.Add(new GroupViewModel(group)); } Wywołanie synchroniczne

Operacja I/O Wątek UI Urządzenie

Przed i z async Demo

public async Task LoadGroupsAsync() { var client = new DataServiceClient(); var groups = await client.GetGroupsAsync(); foreach (var group in groups) { this.Groups.Add(new GroupViewModel(group)); } Jak działa async (w aplikacjach UI)?

Operacje asynchroniczne (w aplikacjach UI) Operacja I/O Wątek UI Urządzenie Dotknięcie ekranuKliknięcie przycisku To jest aplikacja jednowątkowa!

Kolejne kroki do responsywności Demo

Async – więcej szczegółów

Operacje asynchroniczne (w aplikacjach UI) - przypomnienie Operacja I/O Wątek UI Urządzenie

public async Task LoadGroupsAsync() { var client = new DataServiceClient(); var groups = await client.GetGroupsAsync(); foreach (var group in groups) { Groups.Add(group); } Jak działa async (w aplikacjach serwerowych)?

Operacje asynchroniczne (w aplikacjach serwerowych) Operacja I/O Wątek 1 Urządzenie Wątek 2 Wiele wątków ≠ wielowątkowość!

public Task LoadGroupsAsync() { var client = new DataServiceClient(); var getGroupsTask = client.GetGroupsAsync(); getGroupsTask.ContinueWith(t => { var groups = t.Result; foreach (var group in groups) { Groups.Add(new GroupViewModel(group)); } }, TaskScheduler.FromCurrentSynchronizationContext()); return getGroupsTask; } Co zrobi kompilator?

public async void FireAndForget() { /*...*/ } public async Task FireAndRemember() { /*...*/ } public async Task FireAndReturn() { /*...*/ return 1; } Metody async

 „Fire and forget”  Przeznaczenie:  Event handlery  Kompatybilność wstecz async Task vs async void  Można poczekać na zakończenie wykonania (i sprawdzić np. exception) async void Xxx()async Task Xxx()

Func > fireAndReturn = async ()=> { /**/ return 1; }; Anonimowy async? Czemu nie!

Windows Runtime async

Async w Windows Runtime Fundamentals Communications & Data Media Devices User Interface

Asynchroniczność w Windows Runtime Demo

Async w Windows Runtime

IAsync* a Task IAsyncAction IAsyncOperation Task

Internals, architektura

Na jakim wątku wykona się dalej kod? Demo

Czy skoro można wywołać na:  Task  IAsyncAction/Operation to czy można wywołać na czymś jeszcze innym? Pytanie

await – na czym można „czekać”? public class MyClass { public MyAwaiter GetAwaiter() { /*..*/ } } public class MyAwaiter : INotifyCompletion { public bool IsCompleted { get {/*...*/} } public void GetResult() {/*..*/} public void OnCompleted(Action continuation) {/*..*/} } var my = new MyClass(); await my; Może też być extension method Może też być extension method

Co będzie w zmiennej type? var task = Task.Run ( new Func (() => { throw new Exception(); })); try { await task; } catch (Exception ex) { string type = ex.GetType().Name; } var task = Task.Run ( new Func (() => { throw new Exception(); })); try { await task; } catch (Exception ex) { string type = ex.GetType().Name; } var task = Task.Run ( new Func (() => { throw new Exception(); })); task.ContinueWith(t => { try { var res = t.Result; } catch (Exception ex) { string type = ex.GetType().Name; } }); var task = Task.Run ( new Func (() => { throw new Exception(); })); task.ContinueWith(t => { try { var res = t.Result; } catch (Exception ex) { string type = ex.GetType().Name; } });

await a Exception Demo

private async void Button_Click_1(object sender, RoutedEventArgs e) { var wc = new WebClient(); var data = await wc.DownloadDataTaskAsync(tb.Text); //... } Czy tak piszemy aplikacje?

 Wzorce, np. MVVM?  Warstwy:  logiki biznesowej,  dostępu do danych? Co z tą architekturą?

Wpływ async na architekturę Demo

 async – okiełznanie asynchroniczności  W.NET – nowe metody  W Windows Runtime – jedyny model  Wpływ na architekturę Podsumowanie

Dziękuję za uwagę! Pytania?