OREA Hotel Voroněž I Brno 5. – 6. 3. 2012 Twitter hashtag: #cztechdays.

Slides:



Advertisements
Podobné prezentace
© 2000 VEMA počítače a projektování spol. s r. o..
Advertisements

Využití cloudových služeb ve školství
Dynamické dokumenty na straně klienta Informatika pro ekonomy II.
Windows 8 ZMVS. Windows 8 Nové 3D uživatelské rozhraní s kódovým názvem Wind. Nové uživatelské rozhraní bude požadovat minimálně 170MB video paměti a.
Přednáška č. 3 Normalizace dat, Datová a funkční analýza
Přednáška č. 5 Proces návrhu databáze
Workflow Foundation Základy a architektura
Modelování procesů pomocí workflow
Operační systémy. OPERAČNÍ SYSTÉMY pomoc operátorovi, podpora vlastností reálného času, víceuživatelských a více úlohových systémů.
C# pro začátečníky Mgr. Jaromír Osčádal
Programování v C++ Cvičení.
Přínosy a druhy počítačových sítí. Jednou z nejvýznamnějších technologií používaných v oblasti výpočetních systémů jsou již řadu let počítačové sítě.
Tvorba webových aplikací
State. State – kontext a problém Kontext  chování objektu má záviset na jeho stavu, který se typicky mění za běhu Neflexibilní řešení  metody obsahují.
Vzdělávací materiál / DUMVY_32_INOVACE_02B2 Správa procesů AutorIng. Petr Haman Období vytvořeníProsinec 2012 Ročník / věková kategorie2. ročník Vyučovací.
Štěpán Lískovec, 4.A.  =základní programové vybavení počítače (tj.software)  hlavní úkol:  A, zajistit uživateli možnost ovládat PC  B, vytvořit pro.
Vývoj aplikací pro SharePoint
Architektura databází Ing. Dagmar Vítková. Centrální architektura V této architektuře jsou data i SŘBD v centrálním počítači. Tato architektura je typická.
Orbis pictus 21. století Tato prezentace byla vytvořena v rámci projektu.
Michael Juřek Software Architect Microsoft s.r.o.
Operační systémy.
Operační systémy.
Jedenácté cvičení Vlákna. Java cv112 Vlákna Operační systém Mutitasking – více úloh se v operačním programu vykonává „současně“ Java Multithreading -
ICQ. Co je ICQ? ICQ je nejpoužívanější a nejpopulárnější komunikační program. ICQ je zkratka slangového výrazu „I seek you“ (hledám tě). Slouží ke komunikaci.
Strategy. Strategy – „All-in-1“ na začátek class AStrategy { public: virtual void Algorithm()=0; protected: AStrategy(); }; class SpecificStrategy: public.
Celní služby 2000 Radek Sedláček TranSoft a.s Radek Sedláček TranSoft a.s
Transparentní modelování a provádění procesů Michael Juřek Software Architect Microsoft s.r.o.
Představujeme Ensemble Michal Tomek. Na tomto obrázku vidíte, co systému Ensemble chybí:
Ing. Jan Mittner Životní cyklus požadavku 2. Moduly 3. Pluginy 4. Jak řešit komponenty typu menu 5. atd. 2.
13AMP 2. přednáška Ing. Martin Molhanec, CSc.. Stav procesu (kontext) Stav procesu je úplná informace, kterou je nutné uschovat při přerušení procesu,
KIV/PPA1 cvičení 8 Cvičící: Pavel Bžoch. Osnova cvičení Objekty v Javě Třída Konstruktor Metody Metody a proměnné třídy x instance Program sestávající.
Dílna Caché II. CSP pro pokročilé Tomáš Vaverka. Zdroje HTML Tag Reference v sekci Reference Material v dokumentaci Caché HTML Tag Reference v sekci Reference.
Top Hotel Praha 7. – Twitter hashtag: #cztechdays.
Lokální počítačové sítě Novell Netware Ing. Zdeněk Votruba Technická fakulta ČZU Laboratoř výpočetních aplikací.
Gymnázium, SOŠ a VOŠ Ledeč nad Sázavou I NFORMAČNÍ A KOMUNIKAČNÍ TECHNOLOGIE Ing. Jan Roubíček.
13AMP 3. přednáška Ing. Martin Molhanec, CSc.. Co jsme se naučili naposled I. Co je to kontext úlohy Co je to kontext úlohy Task switching (přepnutí úlohy)
Top Hotel Praha 7. – Twitter hashtag: #cztechdays.
OREA Hotel Voroněž I Brno 5. – TOP Hotel Praha 7. –
DATABÁZOVÉ SYSTÉMY. 2 DATABÁZOVÝ SYSTÉM SYSTÉM ŘÍZENÍ BÁZE DAT (SŘBD) PROGRAM KTERÝ ORGANIZUJE A UDRŽUJE NASHROMÁŽDĚNÉ INFORMACE DATABÁZOVÁ APLIKACE PROGRAM.
Vývoj výpočetního modelu
Novinky pro webovou platformu Jiří Burian, Tomáš Kutěj,
Databázové modelování
Orbis pictus 21. století Tato prezentace byla vytvořena v rámci projektu.
Operační systémy Název a adresa školy
1/28 PB153 OPERAČNÍ SYSTÉMY A JEJICH ROZHRANÍ Vlákna 06.
Vzdálená správa Tomáš Kalný.
OPERAČNÍ SYSTÉMY.
Vývoj aplikací pro Facebook Štěpán Bechynský. Typy Facebook aplikací Běží v prostředí Facebook – IFrame Lze spouštět a testovat z localhost – FBML Zpracovává.
Operační systémy. Výpočetní systém Stroj na zpracování dat vykonávající samočinně předem zadané operace.
Stanice v síti učební texty pro deváté ročníky ZŠ.
Bezdrátové senzorické sítě Operační systémy a vývojové prostředky Ing. David Široký Katedra informatiky a výpočetní techniky Fakulta aplikovaných.
Internet (služby Internetu, WWW) Služby Internetu WWW (World Wide Web) – dnes nejrozšířenější služba; spoustě lidí splývá s Internetem jako takovým WWW.
ÚVOD DO PŘEDMĚTU INFORMAČNÍ TECHNOLOGIE. OPERAČNÍ SYSTÉM Je v informatice základní programové vybavení počítače (tj. software), které je zavedeno do paměti.
Uvedení autoři, není-li uvedeno jinak, jsou autory tohoto výukového materiálu a všech jeho částí. Tento projekt je spolufinancován ESF a státním rozpočtem.
.NET framework platforma Jiří Pokorný
Vypracoval / Roman Málek
Programování mikropočítačů Platforma Arduino
Služby Windows Autorem materiálu a všech jeho částí, není-li uvedeno jinak, je Ing. Libor Otáhalík. Dostupné z Metodického portálu ISSN: 
Vývoj mobilních aplikací a jejich výhody
Operační Systém Operační systém je v informatice základní programové vybavení počítače (tj. software), které je zavedeno do paměti počítače při jeho.
Vlastnosti souborů Jaroslava Černá.
Operační systémy - úvod
Soubor Soubor v informatice označuje pojmenovanou sadu dat uloženou na nějakém datovém médiu, se kterou lze pracovat nástroji operačního systému jako.
Návrhový vzor Flyweight
Operační systémy 9. Spolupráce mezi procesy
Výukový materiál zpracován v rámci projektu
Instalace programů do Linuxu
Přepínání procesů Autorem materiálu a všech jeho částí, není-li uvedeno jinak, je Ing. Libor Otáhalík. Dostupné z Metodického portálu ISSN: 
Monitor Object 1.
Desktopové aplikace na .NET Core
Transkript prezentace:

OREA Hotel Voroněž I Brno 5. – Twitter hashtag: #cztechdays

Top Hotel Praha 7. – Twitter hashtag: #cztechdays

Michael Juřek Software Architect Microsoft s.r.o. Architektura Metro aplikací Twitter hashtag: #cztechdays

WinRT Asynchronní volání Životní cyklus aplikace Běh na pozadí Závěrečné úvahy Agenda

Desktopové aplikace C#/VB kódWindows API Manuálně generovaný interop kód

[DllImport("avicap32.dll", EntryPoint="capCreateCaptureWindow")] static extern int capCreateCaptureWindow( string lpszWindowName, int dwStyle, int X, int Y, int nWidth, int nHeight, int hwndParent, int nID); [DllImport("avicap32.dll")] static extern bool capGetDriverDescription( int wDriverIndex, [MarshalAs(UnmanagedType.LPTStr)] ref string lpszName, int cbName, [MarshalAs(UnmanagedType.LPTStr)] ref string lpszVer, int cbVer); … Příklad kódu

Metro aplikace C#/VB/C++/Java Script kódWindows 8 API Windows Runtime (WinRT)

using Windows.Media.Capture; var ui = new CameraCaptureUI(); ui.PhotoSettings.CroppedAspectRatio = new Size(4, 3); var file = await ui.CaptureFileAsync(CameraCaptureUIMode.Photo); Příklad kódu

Architektura WinRT Metro style app Language Projection Windows Metadata & Namespace Windows Core Windows Runtime Core UIPickersControlsMedia XAMLStorageNetwork…

Koncept WinRT a.NET frameworku je velmi podobný  Jeho použití z C#/VB.NET je zcela přirozené Většina rozdílů mezi.NET a WinRT zůstává skryta Konverze běžných typů provádí runtime automaticky:  Např. IIterable IEnumerable U složitějších typů jsou k dispozici extenzní metody: Windows.Storage.Streams.IInputStream inputStream; inputStream = await file.OpenForReadAsync(); System.IO.Stream stream = inputStream.AsStream(); Použití WinRT je snadné

WinRT je jediná možnost, jak může aplikace využívat služby operačního systému, nelze ji z Metro aplikací obejít Operace s dopadem na bezpečnost/soukromí musí být specifikovány v deklaraci aplikace a uživatel je o tom informován U nejcitlivějších operací musí uživatel specificky odsouhlasit jejich první použití v dané aplikaci (např. kamera) Pravidla pro použití WinRT

Aby šlo komponenty použít i z JavaScriptu a C++ … … veřejné členy veřejných tříd musí dodržet tato pravidla:  Vstupní a výstupní parametry musí být WinRT typy  Struktury předávané hodnotou mohou mít pouze veřejné členy  Kromě XAML prvků musí být veřejné třídy sealed  Nelze použít vlastní generické typy Visual Studio má přímo projekt pro tyto komponenty  Třeba změnit cíl kompilace na WinMD  Splnění výše uvedených pravidel kontrolováno při kompilaci Vytváření vlastních komponent

DEMO C# komponenta volaná z JavaScriptu

WinRT Asynchronní volání Životní cyklus aplikace Běh na pozadí Závěrečné úvahy Agenda

Získávají rostoucí popularitu, neboť:  Umožňují snáze využít dostupná jádra procesoru  V klientských aplikacích zabraňují „zamrznutí“ aplikace během obsluhy událostí (v Metro aplikacích povinné)  V serverových aplikacích zvyšují škálovatelnost, brání vyčerpání threadů Asynchronní volání jsou v.NET frameworku od verze 1.0…  … ale jsou neintuitivní a vedou k těžko čitelnému kódu Async/await v C# a VB.NET nabízí snadná asynchronní volání Asynchronní volání

Chovají se asynchronně, ale mají jednoduchou „synchronní syntaxi“  Mají v hlavičce klíčové slovo async  Vrací void anebo Task Mohou volat jiné asynchronní metody s použitím await  Zbytek těla metody je interně zkonvertován na callback Jsou prováděny v synchronizačním kontextu volajícího  Pro výpočetně náročné akce vytvořte vlastní Task Pro složitější situace využijte objekt Task Asynchronní metody

public async Task GetXmlAsync(string url) { var client = new HttpClient(); var response = await client.GetAsync(url); var text = response.Content.ReadAsString(); return XElement.Parse(text); } Asynchronní metoda public Task GetXmlAsync(string url) { var tcs = new TaskCompletionSource (); var client = new HttpClient(); client.GetAsync(url).ContinueWith(task => { var response = task.Result; var text = response.Content.ReadAsString(); tcs.SetResult(XElement.Parse(text)); }); return tcs.Task; }

DEMO Asynchronní metoda

WinRT Asynchronní volání Životní cyklus aplikace Běh na pozadí Závěrečné úvahy Agenda

Životní cyklus aplikace Running Terminated … Suspended Pokud dochází paměť, je ukončena bez varování Po krátké pauze pozastavena Okamžitě pokračuje v běhu

Systémové zdroje jsou plně soustředěny na aplikaci v popředí Neaktivní aplikace zůstává v paměti, ale jinak šetří baterii:  Žádné CPU, síťová komunikace, práce s diskem  Pozastavení všech vláken – pokud jsou v kritické sekci operačního systému, vyčká se  V události Suspending máte k dispozici max. 5 s času na uložení stavu Při přepnutí zpět je okamžitě k dispozici PAST NA VÝVOJÁŘE: Aplikace s připojeným debuggerem není nikdy suspendována Suspend

Řada situací, kdy může být aplikace ukončena  Nedostatek paměti  Přepnutí na jiného uživatele  Uživatel uzavřel aplikaci  Neošetřená výjimka v aplikaci  Ukončení běhu operačního systému Aplikace o této akci není informována:  Veškeré uložení stavu je nutné již při obsluze Suspend Terminate

Doporučené akce:  Během užívání aplikace: průběžně ukládejte stav  Suspending: uložte stav aplikace  Resuming: zpravidla není třeba žádná akce  OnLaunched/OnActivated: načtěte stav aplikace (ošetřete případné výjimky) Ukládejte pouze stav aplikace, ne data (např. fotky patří jinam) Využijte třídu SuspensionManager, kód najdete v SDK Stav aplikace

DEMO Uložení stavu aplikace

Mnoho různých způsobů:  Uživatel klikne na ikonu (Launch)  Je využit kontrakt nabízený aplikací (OnActivated)  Vyhledávání v aplikaci (OnSearchActivated)  Sdílení obsahu do aplikace (OnShareTargetActivated)  Otevření souboru asociovaného typu (OnFileActivated)  …. řada dalších, méně častých způsobů Spuštění aplikace

Splash Screen  Konzistentní přechod mezi aplikacemi  Definována v manifestu aplikace Pokud aplikace do 15 s neukáže okno, je ukončena!  „Falešná splash screen“ je velmi špatné řešení V aplikaci je zavolána metoda v závislosti na typu spuštení/aktivace a je jí předán potřebný kontext  Např. hledaný řetězec v případě OnSearchActivated() Průběh spuštění

DEMO Aktivace prostřednictvím kontraktu

WinRT Asynchronní volání Životní cyklus aplikace Běh na pozadí Závěrečné úvahy Agenda

Cože? Před chvílí jsme slyšeli, že je vždy pozastavena… Slyšeli jste dobře, aplikace sama neběží, ale může:  Využívat push notifikace k aktualizaci svého stavu, dlaždic, notifikacím uživatele apod. – velmi doporučováno!!!  Spouštět audio na pozadí (nedocenitelné )  Stahovat soubory na pozadí Ani v jednom případě neběží váš kód, ale systémový kód Existuje ale ještě jedna možnost… Běh aplikace na pozadí

Je vysoká pravděpodobnost, že je vaše aplikace nepotřebuje Princip:  Kód rozdělen na část viditelnou a kód na pozadí  Uživatel spouští viditelnou část kódu  Systém spouští a kontroluje běh kódu na pozadí podle preferencí uživatele Vhodné scénáře – VoIP, chat, komunikátor, …, reakce na změny stavu systému i uživatele, … Nevhodné scénáře – cokoliv výpočetně náročného Background task

Příslušnou třídu je nutné deklarovat v manifestu aplikace Úlohu je třeba registrovat za běhu aplikace:  Při jakých událostech je spuštěna:  Např. uplynutí času, odhlášení, přijetí SMS, (ne)dostupnost Internetu,…  Za jakých podmínek je spuštěna  Např. uživatel nepřítomen, dostupný Internet, … Pokud aplikace běží, může pomocí událostí sledovat průběh svých běžících úloh na pozadí Použití background task

Lock Screen Apps  Mohou agresivněji využívat CPU i na pozadí  Určeno pro komunikaci v reálném čase  Omezený počet, podléhají potvrzení uživatele  PC Settings -> Personalize Rovnější mezi rovnými…

Aplikace na pozadí jsou velmi omezeny:  Lock Screen Apps – 2 s CPU za 15 minut  Ostatní – 1 s CPU za 2 hodiny Měří se spotřebované výpočetní cykly  Čekání na asynchronní operace nevadí Rovněž je omezeno množství síťové komunikace  Těžko kvantifikovat, měřeno modelovanou spotřebou energie  Závisí na typu připojení, šířce pásma, aktuální zátěži, … Přísné limity

Pro imitaci běhu na pozadí používejte:  Push notifikace  Živé dlaždice Úlohy na pozadí jsou pro speciální situace a nejsou v běžných aplikacích typické Pro jistotu ještě jednou

DEMO Background task

WinRT Asynchronní volání Životní cyklus aplikace Běh na pozadí Závěrečné úvahy Agenda

Pokud vyvíjíte v C#/VB  Všechny jazykové konstrukce Pokud vyvíjíte pro WPF, Silverlight, Windows Phone 7  XAML  Data binding  MVVM (Model-View-ViewModel) Pokud vyvíjíte pro Windows Phone 7  Životní cyklus aplikace, marketplace, manifest, navigace, … Přenos znalostí

De facto standardní návrhový vzor pro XAML rozhraní MVVM Uživatelské rozhraní (XAML) s data bindingem Pokud možno žádný code-behind Připravuje data z Modelu pro data binding ve View Přenáší akce uživatele z View na Model Udržuje stav uživatelské seance (serializace při Suspend) Nezávislý na View (dobře testovatelný) Data a manipulace s nimi

Novinka ve VS 2012 – knihovny pro více platforem .NET framework, Silverlight, Metro, Windows Phone Nabízí možnost sdílení kódu mezi platformami Portable library smí:  Být referencována z libovolné cílové platformy  Referencovat pouze jinou portable library  Používat pouze třídy dostupné na všech cílových platformách Portable library

Příklad sdílení kódu Platforma A Platforma B View (XAML) Konkrétní funkce platformy View (XAML) Konkrétní funkce platformy ViewModel Model Abstrakce platformy

WinRT jako bezpečná abstrakce části operačního systému Asynchronní volání pro dobrou odezvu aplikace Životní cyklus aplikace spravován s ohledem na výdrž baterie a okamžitou reakci při probuzení Pokud znáte C# nebo VB (nebo C++ a JavaScript), máte dobrý základ pro vytváření Metro aplikací:  Znalost XAML (WPF, Silverlight, WP7) výhodou  Znalost vývoje na Windows Phone 7 super výhodou Závěrem