Pobieranie prezentacji. Proszę czekać

Pobieranie prezentacji. Proszę czekać

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

Podobne prezentacje


Prezentacja na temat: "Responsywne aplikacje w Windows 8 i.NET 4.5 Jakub Binkowski."— Zapis prezentacji:

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

2 O mnie Jakub Binkowski 2008 - 2011 Lead.NET Developer

3 Agenda User Experienceasync Windows 8 Runtime Internals i architektura

4 Responsywność

5  User Experience! Dlaczego responsywność?

6 Projekt UI vs projekt UX

7

8 Dlaczego UX ma znaczenie?

9 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

10 Dlaczego aplikacje się zawieszają? Demo

11 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

12 Operacja I/O Wątek UI Urządzenie

13 Przed i z async Demo

14 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)?

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

16 Kolejne kroki do responsywności Demo

17 Async – więcej szczegółów

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

19 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)?

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

21 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?

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

23  „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()

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

25 Windows Runtime async

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

27 Asynchroniczność w Windows Runtime Demo

28 Async w Windows Runtime

29 IAsync* a Task IAsyncAction IAsyncOperation Task

30 Internals, architektura

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

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

33 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

34 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; } });

35 await a Exception Demo

36 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?

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

38 Wpływ async na architekturę Demo

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

40 Dziękuję za uwagę! Pytania?


Pobierz ppt "Responsywne aplikacje w Windows 8 i.NET 4.5 Jakub Binkowski."

Podobne prezentacje


Reklamy Google