+ All Categories
Home > Documents > UNICORN COLLEGEprev.unicorncollege.cz/european-it-center/jindra... · 3.7 Framework Caliburn.Micro...

UNICORN COLLEGEprev.unicorncollege.cz/european-it-center/jindra... · 3.7 Framework Caliburn.Micro...

Date post: 01-Jul-2020
Category:
Upload: others
View: 0 times
Download: 0 times
Share this document with a friend
88
UNICORN COLLEGE Katedra informačních technologií BAKALÁŘSKÁ PRÁCE Cloudové služby Microsoft Azure a jejich využití ve Windows Store aplikacích Autor BP: Pavel Jindra Vedoucí BP: Ing. David Hartman, Ph.D. 2015 Praha
Transcript
Page 1: UNICORN COLLEGEprev.unicorncollege.cz/european-it-center/jindra... · 3.7 Framework Caliburn.Micro 36 4 Představení aplikace 37 4.1 Vytváření a editace slovníků 37 4.2 Zkoušení

UNICORN COLLEGE

Katedra informačních technologií

BAKALÁŘSKÁ PRÁCE

Cloudové služby Microsoft Azure a jejich využití ve Windows

Store aplikacích

Autor BP: Pavel Jindra

Vedoucí BP: Ing. David Hartman, Ph.D.

2015 Praha

Page 2: UNICORN COLLEGEprev.unicorncollege.cz/european-it-center/jindra... · 3.7 Framework Caliburn.Micro 36 4 Představení aplikace 37 4.1 Vytváření a editace slovníků 37 4.2 Zkoušení
Page 3: UNICORN COLLEGEprev.unicorncollege.cz/european-it-center/jindra... · 3.7 Framework Caliburn.Micro 36 4 Představení aplikace 37 4.1 Vytváření a editace slovníků 37 4.2 Zkoušení
Page 4: UNICORN COLLEGEprev.unicorncollege.cz/european-it-center/jindra... · 3.7 Framework Caliburn.Micro 36 4 Představení aplikace 37 4.1 Vytváření a editace slovníků 37 4.2 Zkoušení

Čestné prohlášení

Prohlašuji, že jsem svou bakalářskou práci na téma Cloudové služby Microsoft

Azure a jejich využití ve Windows Store aplikacích vypracoval samostatně pod ve-

dením vedoucího bakalářské práce a s použitím výhradně odborné literatury a dal-

ších informačních zdrojů, které jsou v práci citovány a jsou také uvedeny v sezna-

mu literatury a použitých zdrojů.

Jako autor této bakalářské práce dále prohlašuji, že v souvislosti s jejím vy-

tvořením jsem neporušil autorská práva třetích osob a jsem si plně vědom násled-

ků porušení ustanovení § 11 a následujících autorského zákona č. 121/2000 Sb.

V Praze dne 15. 4. 2015 …………………………

(Pavel JINDRA)

Page 5: UNICORN COLLEGEprev.unicorncollege.cz/european-it-center/jindra... · 3.7 Framework Caliburn.Micro 36 4 Představení aplikace 37 4.1 Vytváření a editace slovníků 37 4.2 Zkoušení

Poděkování

Děkuji vedoucímu bakalářské práce Ing. Davidu Hartmanovi, Ph.D. a konzultanto-

vi bakalářské práce Bc. Pavlu Borymu za účinnou metodickou, pedagogickou a od-

bornou pomoc a další cenné rady při zpracování mé bakalářské práce.

Page 6: UNICORN COLLEGEprev.unicorncollege.cz/european-it-center/jindra... · 3.7 Framework Caliburn.Micro 36 4 Představení aplikace 37 4.1 Vytváření a editace slovníků 37 4.2 Zkoušení

6

Cloudové služby Microsoft Azure a jejich využití ve

Windows Store aplikacích

Microsoft Azure Cloud Services and their use in the

Windows Store applications

Page 7: UNICORN COLLEGEprev.unicorncollege.cz/european-it-center/jindra... · 3.7 Framework Caliburn.Micro 36 4 Představení aplikace 37 4.1 Vytváření a editace slovníků 37 4.2 Zkoušení

7

Abstrakt

Bakalářská práce se zabývá cloudovými službami platformy Microsoft Azure a je-

jich využitím při vývoji aplikací pro Windows Store. Nejprve je představena plat-

forma samotná a dále se práce orientuje na jednotlivé nabízené služby. Popsány

jsou taktéž základy vývoje aplikací pro Windows Store a jejich specifika. Po zma-

pování možností, které platforma nabízí, je reálné využití cloudových služeb de-

monstrováno v ukázkové aplikaci vyvinuté v jazyce C# a XAML, která je určena pro

operační systém Windows 8.1. Výsledkem je plně funkční aplikace pro Windows

Store, která je připravena pomoci uživateli s výukou cizích jazyků a rozšířením jeho

slovní zásoby. Hlavním zjištěním této práce je, že platforma Microsoft Azure po-

skytuje cloudové služby, které jsou pro vývoj aplikací pro Windows Store plně vyu-

žitelné a jejich implementace je přínosná.

Klíčová slova: cloud, cloudové služby, Azure, Microsoft, Windows Store, C#, XA-

ML, MVVM

Abstract

The BA thesis focuses on cloud services of the Microsoft Azure platform and their

use in the development of applications for Windows Store. First the platform as

such is introduced, and then the thesis deals with the individual services the plat-

form offers. Basic information on the development of applications intended for

Windows Store and their specifics is provided as well. After the possibilities offered

by the platform are presented, the actual, realistic use of cloud services is demon-

strated on a sample application intended for Windows 8.1 and developed in the C#

and XAML languages. The result is a fully-functional application for Windows

Store that helps the user to learn foreign languages and to develop his or her vo-

cabulary. The main point of this thesis is that the Microsoft Azure platform offers

helpful cloud services which can be well used in the development of applications

for Windows Store.

Keywords: cloud, cloud services, Azure, Microsoft, Windows Store, C#, XAML,

MVVM

Page 8: UNICORN COLLEGEprev.unicorncollege.cz/european-it-center/jindra... · 3.7 Framework Caliburn.Micro 36 4 Představení aplikace 37 4.1 Vytváření a editace slovníků 37 4.2 Zkoušení

8

Obsah

Úvod 11

1 Představení Microsoft Azure 12

2 Služby Microsoft Azure 14

2.1 Výpočetní prostředky 15

2.1.1 Virtuální stroje (Virtual Machines) 15

2.1.2 Cloudové služby (Cloud Services) 16

2.1.3 Weby (Websites) 17

2.1.4 Mobilní služby (Mobile Services) 18

2.1.5 Dávka (Batch) 19

2.2 Datové služby 20

2.2.1 Úložiště (Storage) 20

2.2.2 Databáze SQL (SQL Database) 21

2.2.3 HDInsight 22

2.2.4 Spravovaná mezipaměť (Managed Cache) 22

2.2.5 Zálohování (Backup) 22

2.2.6 Zotavení sítě (Site Recovery) 22

2.2.7 Strojové učení (Machine Learning) 22

2.2.8 StorSimple 23

2.2.9 DocumentDB 23

2.2.10 Vyhledávání Azure (Azure Search) 23

2.2.11 Datová továrna (Data Factory) 23

2.2.12 Analýza streamování (Stream Analytics) 23

2.3 Aplikační služby 24

2.3.1 Mediální služby (Media Services) 24

2.3.2 Sběrnice (Service Bus) 24

2.3.3 Centra oznámení (Notification Hubs) 24

Page 9: UNICORN COLLEGEprev.unicorncollege.cz/european-it-center/jindra... · 3.7 Framework Caliburn.Micro 36 4 Představení aplikace 37 4.1 Vytváření a editace slovníků 37 4.2 Zkoušení

9

2.3.4 Statistika provozu (Operational Insights) 24

2.3.5 Plánovač (Scheduler) 25

2.3.6 Služby BizTalk (BizTalk Services) 25

2.3.7 Active Directory 25

2.3.8 Vícefaktorová autentifikace (Multi-Factor Authentication) 25

2.3.9 Automatizace (Automation) 26

2.3.10 Síť pro doručování obsahu (Content Delivery Network) 26

2.3.11 Správa rozhraní API (API Management) 26

2.3.12 Vzdálená aplikace (RemoteApp) 26

2.3.13 Aplikační náhledy (Application Insights) 26

2.3.14 Visual Studio Online 27

2.4 Síťové služby 27

2.4.1 ExpressRoute 27

2.4.2 Virtuální síť (Virtual Network) 27

2.4.3 Správce provozu (Traffic Manager) 28

3 Vývoj aplikací pro Windows Store 29

3.1 Windows 8.1 a Modern UI 29

3.2 Windows Store 30

3.3 Specifika vývoje 31

3.4 XAML 33

3.5 Data Binding 34

3.6 Návrhový vzor MVVM 35

3.7 Framework Caliburn.Micro 36

4 Představení aplikace 37

4.1 Vytváření a editace slovníků 37

4.2 Zkoušení uživatele a jeho hodnocení 41

4.3 Osobní statistika uživatele 42

Page 10: UNICORN COLLEGEprev.unicorncollege.cz/european-it-center/jindra... · 3.7 Framework Caliburn.Micro 36 4 Představení aplikace 37 4.1 Vytváření a editace slovníků 37 4.2 Zkoušení

10

4.4 Tržiště 43

4.5 Nastavení 44

4.6 Uživatelské prostředí 46

5 Implementace vybraných služeb Azure v aplikaci 50

5.1 Mobilní služby 50

5.2 Autentizace 53

5.3 Databáze SQL 58

5.4 Úložiště 64

5.5 Notifikační služby 69

Závěr 75

Conclusion 77

Seznam použitých zdrojů 79

Seznam použitých zkratek 82

Seznam obrázků 84

Seznam tabulek 87

Seznam příloh 88

Příloha A – CD-ROM 88

Page 11: UNICORN COLLEGEprev.unicorncollege.cz/european-it-center/jindra... · 3.7 Framework Caliburn.Micro 36 4 Představení aplikace 37 4.1 Vytváření a editace slovníků 37 4.2 Zkoušení

11

Úvod

Hlavním tématem této práce je jeden z fenoménu dnešního světa informačních

technologií a to cloudové služby. Cloudové služby a aplikace postupně mění svět

informačních technologií a to jak z pohledu odborníků, tak i běžných uživatelů.

V práci se konkrétně zaměříme na cloudovou platformu Azure společnosti Micro-

soft. V teoretické části nejprve představíme platformu jako takovou a dále se bu-

deme orientovat na jednotlivé nabízené služby s důrazem na jejich využití v kom-

binaci s aplikacemi pro Windows Store. S příchodem operačního systému Micro-

soft Windows 8 byl představen i nový způsob distribuce aplikací, Windows Store.

Jedná se o digitální distribuční kanál pro aplikace s novým uživatelským prostře-

dím Modern UI (dříve Metro), které se využívá nejenom v systémech Windows 8,

ale i Windows Phone 8 a novějších. Toto uživatelské prostředí je typické dlaždice-

mi a celoobrazovkovým režimem. V jedné z kapitol nastíníme způsob, jakým jsou

aplikace pro Windows Store vyvíjeny.

Obě platformy, tedy jak Microsoft Azure, tak i Windows Store, jsou firmou

Microsoft masivně podporovány a procházejí poměrně dost dynamickým vývojem.

S ohledem na aktuální vývoj ve světě informačních technologií, lze obou platfor-

mám předpovídat velkou budoucnost a jejich propojení se tak jeví jako logické.

V praktické části se proto zaměříme na demonstrování reálného využití cloudových

služeb Microsoft Azure v aplikaci pro platformu Windows 8.1 s názvem Scholas-

ticus. Jedná se o ukázkovou aplikaci, která byla pro tyto účely vytvořena, jejíž

hlavní funkčností je zkoušení slovní zásoby a jedná se tedy o pomocníka při výuce

cizích jazyků. Aplikace byla vytvořena v jazyce C# a XAML.

Pro tuto práci využijeme široké spektrum dostupných zdrojů s cílem zmapo-

vat možnosti využití služeb poskytovaných platformou Microsoft Azure

v aplikacích pro Windows Store. Zjistíme, zda je platforma Azure využitelná pro

vývoj těchto aplikací, jaké služby jsou dostupné a jaké přínosy nám může,

z pohledu vývojáře aplikace, přinést jejich využití.

Page 12: UNICORN COLLEGEprev.unicorncollege.cz/european-it-center/jindra... · 3.7 Framework Caliburn.Micro 36 4 Představení aplikace 37 4.1 Vytváření a editace slovníků 37 4.2 Zkoušení

12

1 Představení Microsoft Azure

Microsoft Azure je flexibilní cloudová platforma společnosti Microsoft. Sama spo-

lečnost Microsoft ji definuje jako platformu, která umožňuje rychle vytvářet, nasa-

zovat, škálovat a spravovat aplikace v rámci globální sítě svých datových center. [1]

Pokud bychom měli přiblížit termín cloud a cloud computing, použili bychom

s trochou nadsázky přirovnání pana Srirama Krishnana ke kohoutkové vodě. Před-

stavte si, že by neexistovala vodovodní síť a tedy voda z kohoutku. Každá domác-

nost by byla nucena vykopat si svou vlastní studnu, a pokud by tak neučinila, byla

by bez vody. Ovšem výstavba takové studny je drahá záležitost a i posléze je ná-

kladná na údržbu. Ve chvíli, kdy bychom potřebovali pouze dočasně větší množství

vody, by bylo nutné provést například modernizaci čerpadla a tato investice by se

nám již pravděpodobně nevrátila. Voda z kohoutku všechny tyto problémy vyřeší.

Peníze a čas investuje někdo jiný, kdo vytvoří vodovodní infrastrukturu a zajistí, že

je vždy k dispozici pitná voda v požadovaném množství. Zákazník pak platí pouze

za to, co reálně spotřebuje. Toto přirovnání v kostce vystihuje princip cloud com-

putingu. Prostředky datového centra jsou distribuované a škálovatelné podobně

jako kohoutková voda a také platíte pouze za to, co reálně využijete. [2, s. 1] Ter-

mín cloud je vlastně metafora pro internet, odvozená od bežně používané repre-

zentace internetu v nákresech počítačových sítí jako mraku. [2, s. 1] Cloud compu-

ting můžeme obecně charakterizovat jako technologie používané pro přístup ke

službám na internetu, které je možno používat kdykoliv, odkudkoliv a téměř na

libovolném zařízení. [3]

Moderní platforma pro cloud computing, jako je Microsoft Azure, typicky za-

hrnuje několik následujících vlastností. Především je škálovatelná a elastická, což

znamená, že poskytované služby se pružně přizpůsobují potřebám uživatele a ak-

tuální zátěži a omezením jsou pak pouze technologické možnosti a velikost in-

frastruktury konkrétního poskytovatele. [3] Vytváří vlastně iluzi o nekonečném

výpočetním výkonu a úložném prostoru. Aplikace může například běžet na jednom

serveru a ve špičkách můžeme přidat další instance serverů pro zajištění dostup-

nosti a výkonu, které lze později zase odebrat. Další typickou vlastností, jak jsme již

nastínili výše, je zpoplatnění za užívání, kdy typicky není potřeba vstupní investice

a účtováno je pouze za software a hardware, který skutečně použijeme. [2, s. 7] Dů-

raz je také kladen na vysokou dostupnost a SLA (Service Level Agreement) neboli

Page 13: UNICORN COLLEGEprev.unicorncollege.cz/european-it-center/jindra... · 3.7 Framework Caliburn.Micro 36 4 Představení aplikace 37 4.1 Vytváření a editace slovníků 37 4.2 Zkoušení

13

dohodu o kvalitě služeb. Musí být zajištěno, že nebude docházet k častým výpad-

kům a většina poskytovatelů cloudových služeb tedy garantuje vysokou úroveň

provozuschopnosti svým uživatelům. [2, s. 7] Nejinak je tomu i u platformy Micro-

soft Azure, kde společnost Microsoft garantuje SLA 99,95%. [1] Ve chvíli, kdy má

platforma sloužit uživatelům po celém světě, je důležité, aby datová centra byla

v různých geografických oblastech. Důvody jsou jak technické, jako vyvažování zá-

těže, latence sítě, ale i politické a právní. Microsoft Azure umožňuje vytvářet virtu-

ální servery, vyvíjet, upravovat a distribuovat škálovatelné aplikace s minimálními

nároky na interní prostředky a vykonávat náročné a rozsáhlé výpočty. Výhodou je

i zrychlení uvedení produktu na trh, snížení nároků na správu informačních tech-

nologií, kdy výraznou část správy přebere datové centrum poskytovatele. [4, s. 6]

Podíváme-li se trochu do historie, zjistíme, že platforma Microsoft Azure byla

poprvé oficiálně představena v roce 2008 během konference PDC (Professional

Developer’s Conference) v Los Angeles a to ještě pod původním názvem Windows

Azure. Microsoft ovšem již nebyl v té době na poli cloudových služeb nováčkem

a již nějaký čas poskytoval cloudové služby jako například MSN, Xbox Live a Ho-

tmail. [5, s. 46] Komerčně dostupná je platforma od roku 2010 a aktuální název,

Microsoft Azure, získala platforma v dubnu roku 2014. [6] Jednotlivé služby, které

platforma Microsoft Azure nabízí, podrobněji představíme v následujících kapito-

lách.

Page 14: UNICORN COLLEGEprev.unicorncollege.cz/european-it-center/jindra... · 3.7 Framework Caliburn.Micro 36 4 Představení aplikace 37 4.1 Vytváření a editace slovníků 37 4.2 Zkoušení

14

2 Služby Microsoft Azure

Služby Microsoft Azure můžeme rozdělit do tří kategorií: IaaS, Paas a Saas. Kate-

gorie Iaas neboli Infrastrucuture as a Service označuje služby, kdy je pro běh uži-

vatelských aplikací poskytován hardware provozovatelem cloudu. Obsahuje kom-

pletní infrastrukturu jako je napájení, chlazení, servery, úložiště a serverovou vir-

tualizaci. Uživatelé si pronajímají tyto virtuální servery přímo od poskytovatele

platformy Microsoft Azure. Vývojáři se tím pádem nemusí rozptylovat správou

a údržbou hardwaru a můžou se soustředit pouze na vývoj aplikací. [7, s. 11]

PaaS (Platform as a Service) poskytuje softwarové prostředí vývojářům pro

vývoj, testování a běh aplikací v cloudu. PaaS odstíní vývojáře od nutnosti znát

detaily infrastruktury, takže se mohou více koncentrovat na vývoj obchodní logiky

aplikace. Pokud bychom měli porovnat služby IaaS a PaaS, tak uživatelé IaaS stále

musejí spravovat své virtuální servery (instalovat záplaty, aktualizovat systém),

naproti tomu uživatelé PaaS nepracují přímo na konkrétních virtuálních serve-

rech, ale na vyšší, abstraktní úrovni. Definují služby a prostředí, které potřebují,

ale přímo ho nespravují. Tuto starost na sebe bere cloudová platforma. [7, s. 12]

Příkladem může být cloudová služba Weby.

SaaS (Software as a Service) znamená, že software je poskytován koncovému

uživateli jako hostovaná služba. Koncový uživatel nemusí instalovat a spravovat

žádný hardware ani softwarové prostředí pro využití dané služby. Místo toho při-

stupuje na požadovanou funkcionalitu přes koncový bod poskytovaný provozovate-

lem služby. Mezi SaaS služby poskytované Microsoft Azure můžeme například za-

řadit Mobilní služby, Databáze SQL, Úložiště a Správu mezipaměti. [7, s. 14]

Platformu Microsoft Azure ale také můžeme rozdělit na několik logických kom-

ponent a to na Výpočetní prostředky (Compute), Datové služby (Data Services),

Aplikační služby (App Services) a Síťové služby (Network Services). [8] Jednotlivé

části a jejich služby budou popsány v následujících kapitolách. Všechny popisované

služby jsou dostupné v období, kdy vzniká tato práce, nicméně se nejedná o koneč-

ný seznam, jelikož platforma Microsoft Azure se neustále vyvíjí, vznikají nové služ-

by a stávající se modifikují.

Page 15: UNICORN COLLEGEprev.unicorncollege.cz/european-it-center/jindra... · 3.7 Framework Caliburn.Micro 36 4 Představení aplikace 37 4.1 Vytváření a editace slovníků 37 4.2 Zkoušení

15

Obrázek 1: Pohled na platformu Microsoft Azure

Zdroj: [9, s. 23]

2.1 Výpočetní prostředky

Komponenta Výpočetní prostředky je pomyslným srdcem Microsoft Azure. Posky-

tuje výpočetní čas a prostředí pro aplikace v cloudu. Je vystavena prostřednictvím

hostovaných služeb, které jsou nasazeny na datových centrech Azure. [10]

2.1.1 Virtuální stroje (Virtual Machines)

Podle klasické cloudové klasifikace jsou virtuální stroje typickým příkladem IaaS

(Infrastructure as a Service). Tato služba umožňuje vytvářet virtuální škálovatel-

nou výpočetní infrastrukturu na počkání. V porovnání s klasickým řešením odpadá

nutnost nákupu a konfigurace hardwaru. Při tom je možné používat stejné nástroje

pro správu virtuálního počítače, s jakými se běžně pracuje lokálně. Virtuální serve-

ry je možné vytvářet jak na platformách Windows Server, tak i Linux. Servery mů-

Page 16: UNICORN COLLEGEprev.unicorncollege.cz/european-it-center/jindra... · 3.7 Framework Caliburn.Micro 36 4 Představení aplikace 37 4.1 Vytváření a editace slovníků 37 4.2 Zkoušení

16

žou sloužit jak pro vývoj, tak i jako testovací platforma. Dalším využitím může být

rozšíření kapacity vlastního datového centra v případě předvídaných i nepředvída-

ných špiček. V případě potřeby je možné virtuální servery přesouvat nejen mezi

datovými centry Microsoft Azure, ale i ostatními poskytovateli cloudových služeb.

[4, s. 8]

Obrázek 2: Virtuální stroje

Zdroj: http://azure.microsoft.com/en-us/documentation/infographics/azure/ (upraveno)

2.1.2 Cloudové služby (Cloud Services)

Cloudové služby je možné zařadit do kategorie PaaS (Platform as a Service), tedy

platforma je poskytována jako služba. Cloudové služby Azure zbavují uživatele

nutnosti provádět správu serverové infrastruktury. Tento model je vhodný ve chví-

li, kdy je potřeba vytvořit škálovatelnou cloudovou aplikaci, která je stále dostupná

a nevyžaduje velkou míru administrativy. Aplikaci je možné vytvořit na vybrané

technologii jako je C#, Java, PHP, Python a další. Kód poté běží na virtuálních

strojích, které jsou ovšem odlišné od Virtuálních strojů popisovaných v předešlé

kapitole. Virtuální stroje v rámci Cloudových služeb se totiž automaticky spravují,

monitorují a v případě potřeby se zde instalují opravné balíčky či v případě pádu

proběhne automatická obnova bez nutného zásahu uživatele. [4, s. 9]

Page 17: UNICORN COLLEGEprev.unicorncollege.cz/european-it-center/jindra... · 3.7 Framework Caliburn.Micro 36 4 Představení aplikace 37 4.1 Vytváření a editace slovníků 37 4.2 Zkoušení

17

Při vytváření instance můžeme využít dvě role založené na systému Win-

dows, Web a Worker. Web role může přes webový server IIS (Internet Information

Services) přímo komunikovat s klientem a reagovat na jeho požadavky. Role je

vhodná pro aplikace, které komunikují přes internetový protokol HTTP (Hypertext

Transfer Protocol), tedy pro webové servery a webové aplikace. Worker role nemá

přímý kontakt s okolním světem, takže nedokáže reagovat na žádné vnější podmě-

ty. Role je vhodná pro aplikace, které vykonávají zpracovávání na pozadí. [4, s. 10]

Pomocí obou rolí umožňují cloudové služby rychlé vytvoření, nasazení a správu

moderních aplikací.

Obrázek 3: Cloudové služby

Zdroj: http://azure.microsoft.com/en-us/documentation/infographics/azure/ (upraveno)

2.1.3 Weby (Websites)

Častou činností v cloudu je provozování webových stránek a webových aplikací.

Jednou z možností je využití služby virtuálního stroje, která byla popsána výše.

Nevýhodou ovšem může být nutnost spravovat tento virtuální stroj nebo stroje.

Page 18: UNICORN COLLEGEprev.unicorncollege.cz/european-it-center/jindra... · 3.7 Framework Caliburn.Micro 36 4 Představení aplikace 37 4.1 Vytváření a editace slovníků 37 4.2 Zkoušení

18

Naproti tomu služba Weby nabízí možnost nasadit webové aplikace do škálovatel-

né cloudové infrastruktury bez nutnosti starat se o správu systému. Weby jsou

provozovány přes webový server IIS (Internet Information Services) a uživatel má

možnost buď přesunout stávající aplikaci či stránku do služby Microsoft Azure

anebo vytvořit novou přímo přes uživatelské rozhraní poskytované cloudem. Pod-

porovány jsou technologické platformy .NET, PHP, Node.js a další. Integrována je

taktéž podpora pro redakční systémy WodrPress, Joomla a Drupal. [4, s. 9]

Obrázek 4: Weby

Zdroj: http://azure.microsoft.com/en-us/documentation/infographics/azure/ (upraveno)

2.1.4 Mobilní služby (Mobile Services)

„Mobilní služby Azure poskytují škálovatelný backendový systém pro vytvoření

aplikací pro Windows Store, Windows Phone, Apple iOS, Android

a HTML/JavaScript. Umožňují během několika minut uložit data do cloudu, ověřit

uživatele a poslat do aplikace nabízená oznámení.“ [11] Nabízí tedy tři základní

Page 19: UNICORN COLLEGEprev.unicorncollege.cz/european-it-center/jindra... · 3.7 Framework Caliburn.Micro 36 4 Představení aplikace 37 4.1 Vytváření a editace slovníků 37 4.2 Zkoušení

19

pilíře pro vývoj mobilních aplikací. Autentizační služby umožňují přihlášení uživa-

telů identitou od renomovaných poskytovatelů identit jako je Microsoft, Facebook,

Twitter nebo Google. Nabízí se také možnost využít Active Directory a bezpečně

přistupovat k podnikovým údajům. Dalším prvkem jsou Notifikační služby, které

umožňují doručení oznámení na zařízení. Typickým příkladem jsou dynamické

dlaždice Windows 8.1 a toast (vyskakovací) notifikace. [12, s. 8] Pro zaslání notifi-

kací do aplikací pro Windows Store se využívá služba Windows Push Notification

Service (WNS). [13, s. 94]

Obrázek 5: Mobilní služby

Zdroj: http://azure.microsoft.com/en-us/documentation/infographics/azure/ (upraveno)

2.1.5 Dávka (Batch)

„Azure Batch usnadňuje spouštění rozsáhlých paralelních a HPC pracovních po-

stupů v Azure. Batch se dá použít ke škálování paralelních úloh, správě spouštění

úkolů ve frontě a přípravě aplikací pro cloud tak, aby mohly přesměrovat zpraco-

vání úkolů v cloudu.“ [11] Služba tedy najde své využití všude tam, kde je nutný

Page 20: UNICORN COLLEGEprev.unicorncollege.cz/european-it-center/jindra... · 3.7 Framework Caliburn.Micro 36 4 Představení aplikace 37 4.1 Vytváření a editace slovníků 37 4.2 Zkoušení

20

vysoký výkon pro náročné výpočetní operace, což by jistě v Azure šlo i bez této

služby, ale Dávka přidává navíc správu a obsluhu virtuální instancí určených pro

výpočty.

2.2 Datové služby

Microsoft Azure poskytuje podporu různým formám uložení dat s rozdílnými

vlastnostmi a možnostmi.

2.2.1 Úložiště (Storage)

Služba Úložiště je škálovatelná a vysoce dostupná služba, která umožňuje ukládat

jakákoliv aplikační data ve třech typech objektů, kterými jsou bloby, tabulky

a fronty. Každý typ úložiště má své výhody a můžeme zvolit vhodnou variantu

v závislosti na požadavcích naší aplikace. [5, s. 205] Typ blob je vhodný pro uložení

větších dat jako jsou dokumenty, obrázky, videa či hudební soubory. Jednotlivé

bloby jsou uchovávány v kontejnerech a můžou být doplněny o metadata, tedy

o strukturované informace o datech ve formě párů klíč-hodnota. Jednotlivý blob

může dosahovat velikosti až 1TB a být rozdělen do bloků pro efektivní přenos. [5, s.

211] Dalším typem je fronta, která je řešením pro doručení a uchovávání spolehli-

vých asynchronních zpráv a slouží zejména ke komunikaci mezi instancemi webo-

vých a výkonných rolí. [5, s. 269] Poslední typ, tabulka, umožňuje ukládat struktu-

rovaná data, kdy se nejedná o relační tabulku a data se uchovávají ve formě sady

položek a jejich vlastností. [5, s. 313] Pro zajištění dostupnosti a ochrany před se-

lháním hardwaru jsou v rámci jedné oblasti data automaticky replikována ve třech

kopiích s možností rozšíření o geografickou redundanci, která zajistí vyšší dostup-

nost a rychlejší zotavení po havárii vytvořením dalších tří kopií. [5, s. 207]

Page 21: UNICORN COLLEGEprev.unicorncollege.cz/european-it-center/jindra... · 3.7 Framework Caliburn.Micro 36 4 Představení aplikace 37 4.1 Vytváření a editace slovníků 37 4.2 Zkoušení

21

Obrázek 6: Architektura služby Úložiště

Zdroj: [5, s. 206]

2.2.2 Databáze SQL (SQL Database)

„Databáze Azure SQL je služba relační databáze, pomocí které můžete rychle vy-

tvořit, rozšířit a škálovat relační aplikace do cloudu.“ [11] Služba Databáze SQL je

založena na jádru relační databáze Microsoft SQL Server a může být použita pro

ukládání obchodních, uživatelských a systémových dat. Azure trvale udržuje tři

repliky databáze v cloudu a pokud jedna z nich selže, je automaticky vytvořena no-

vá instance. Nabídka nástrojů pro správu služby je pestrá od REST API, přes portál

správy Azure až po SQL Server Management Studio a podporuje technologie jako

.NET, PHP a další. Díky tomu, že služba je nasazena na infrastruktuře datových

center firmy Microsoft, poskytuje SQL Azure taktéž možnost vyrovnání zátěže

a převzetí služby při selhání a to prakticky bez nutnosti údržby. [5, s. 505]

Page 22: UNICORN COLLEGEprev.unicorncollege.cz/european-it-center/jindra... · 3.7 Framework Caliburn.Micro 36 4 Představení aplikace 37 4.1 Vytváření a editace slovníků 37 4.2 Zkoušení

22

2.2.3 HDInsight

„Azure HDInsight je služba, která využívá technologii Hadoop a poskytuje cloudu

řešení Apache Hadoop.“ [11] Návrh služby byl proveden tak, aby mohla zpracová-

vat libovolný škálovatelný objem dat a to jak nestrukturovaných tak i semistruktu-

rovaných. Zdrojem mohou být různorodá data od záznamů o navštívených webo-

vých stránkách přes protokoly serverů až po data ze senzorů a podobně. Výhodou

je spolupráce služby s analytickými nástroji Microsoftu. [9, s. 29]

2.2.4 Spravovaná mezipaměť (Managed Cache)

„Spravovaná mezipaměť je distribuční škálovatelné řešení v paměti, které díky

rychlému přístupu k datům umožňuje vytvořit vysoce škálovatelné a interaktivní

aplikace. Mezipaměť je založená na open source mezipaměti Redis. Poskytuje pří-

stup k zabezpečené vyhrazené mezipaměti Redis spravované Microsoftem. Mezi-

paměť vytvořená pomocí systému Azure je přístupná z libovolné aplikace v plat-

formě Microsoft Azure.“ [11]

2.2.5 Zálohování (Backup)

„Zálohování Azure je jednoduché a spolehlivé řešení ochrany dat, které zákazní-

kům umožňuje zálohovat jejich místní data do Microsoft Azure. Služba dále slouží

ke správě cloudových záloh prostřednictvím nástrojů v aplikacích Windows Server

2012, Windows Server 2012 Essentials nebo System Center 2012 Data Protection

Manager. Data záloh jsou uložená v geograficky replikovaném úložišti, které

ve dvou datových centrech Azure udržuje 6 kopií uživatelských dat.“ [11]

2.2.6 Zotavení sítě (Site Recovery)

„Site Recovery pomáhá chránit důležité aplikace koordinací replikace a obnovení

privátních cloudů napříč lokalitami díky jednoduchému a nákladově efektivnímu

zotavení po havárii.“ [11]

2.2.7 Strojové učení (Machine Learning)

„Služba Machine Learning umožňuje jednoduše navrhnout, testovat, zprovoznit

a spravovat prediktivní analytická řešení v cloudu. Kombinuje statistiku a matema-

tiku se strojovým učením a umělou inteligencí.“ [11]

Page 23: UNICORN COLLEGEprev.unicorncollege.cz/european-it-center/jindra... · 3.7 Framework Caliburn.Micro 36 4 Představení aplikace 37 4.1 Vytváření a editace slovníků 37 4.2 Zkoušení

23

2.2.8 StorSimple

„StorSimple nabízí řešení úložiště v hybridním cloudu, které poskytuje primární

úložiště, archiv a možnosti zotavení po havárii. V kombinaci s Microsoft Azure toto

řešení optimalizuje celkové náklady úložiště a ochrany dat. StorSimple využívá dis-

ky SSD a pevné disky, které zajišťují výkon vstupně-výstupních operací s nízkými

náklady, odstraňuje duplicity a provádí kompresi, aby se snížil celkový objem dat."

[11]

2.2.9 DocumentDB

„Azure DocumentDB je plně spravovaná databázová služba s nativní podporou

JSON a JavaSriptu pro dokumenty typu NoSQL, která nabízí dotazy a transakce

s daty bez schématu.“ [11]

2.2.10 Vyhledávání Azure (Azure Search)

„Vyhledávání systému Azure je plně spravovaná služba, která umožňuje přidat

k webu a mobilním aplikacím důmyslné vyhledávací funkce bez obvyklých složitos-

tí spojených s fulltextovým vyhledáváním. Služba omezuje složitost tím, že vytváří

a spravuje vlastní vyhledávací indexy.“ [11]

2.2.11 Datová továrna (Data Factory)

„Azure Data Factory je spravovaná služba pro vývojáře, která vytváří důvěryhodné

informace z nezpracovaných dat v cloudu nebo místních zdrojích. Umožňuje vytvá-

řet a organizovat vysoce dostupné, vůči chybám odolné pracovní postupy přesunu

dat a transformačních aktivit.“ [11]

2.2.12 Analýza streamování (Stream Analytics)

„Stream Analytics je modul pro zpracování událostí, který pomáhá získat informa-

ce ze zařízení, senzorů, cloudové infrastruktury a vlastností existujících dat v reál-

ném čase. Díky okamžité integraci do center událostí dokáže kombinované řešení

přijmout miliony událostí a analyzovat je. To pomáhá lépe porozumět vzorům,

pracovat s řídicím panelem, zjišťovat anomálie nebo spustit akci během streamo-

vání dat v reálném čase.“ [11]

Page 24: UNICORN COLLEGEprev.unicorncollege.cz/european-it-center/jindra... · 3.7 Framework Caliburn.Micro 36 4 Představení aplikace 37 4.1 Vytváření a editace slovníků 37 4.2 Zkoušení

24

2.3 Aplikační služby

Aplikační služby poskytují funkce, které umožňují vyvíjet škálovatelné cloudové

aplikace na platformě Microsoft Azure a jejich následnou správu.

2.3.1 Mediální služby (Media Services)

„Mediální služby nabízejí cloudová řešení pro média založená na mnoha stávajících

technologiích. Umožňuje bezpečně nahrávat, ukládat, kódovat a balit videa nebo

zvukový obsah pro streamování na vyžádání nebo v reálném čase na řadu konco-

vých bodů, jako jsou televize, počítače a mobilní zařízení. Prostředky jsou chráněné

šifrováním při nahrávání, v úložišti i při přehrávání díky technologii Micro-

soft PlayReady Digital Rights Management (DRM).“ [11]

2.3.2 Sběrnice (Service Bus)

„Sběrnice Azure je infrastruktura zasílání zpráv umístěná mezi aplikacemi, kterým

umožňuje výměnu zpráv a tím i lepší škálovatelnost a odolnost. Propojovací sběr-

nice řeší problémy komunikace mezi místními aplikacemi a okolním světem tím,

že umožňuje místním webovým službám zpřístupnit veřejné koncové body.“ [11]

2.3.3 Centra oznámení (Notification Hubs)

„Centra oznámení poskytují vysoce škálovatelnou infrastrukturu nabízených

oznámení napříč platformami, která umožňuje vysílat oznámení milionům uživate-

lů najednou nebo vytvořit oznámení šitá na míru konkrétním osobám. S pomocí

těchto služeb se dají analyzovat velké objemy dat vytvářené připojenými zařízeními

a aplikacemi. Data se poté dají v Centru událost transformovat a uložit pomocí

analýzy v reálném čase.“ [11]

2.3.4 Statistika provozu (Operational Insights)

„Statistika provozu umožňuje shromažďovat, korelovat a vizualizovat všechna data

v počítači, jako jsou protokoly událostí, síťové protokoly, údaje o výkonu z místních

i cloudových prostředků.“ [11]

Page 25: UNICORN COLLEGEprev.unicorncollege.cz/european-it-center/jindra... · 3.7 Framework Caliburn.Micro 36 4 Představení aplikace 37 4.1 Vytváření a editace slovníků 37 4.2 Zkoušení

25

2.3.5 Plánovač (Scheduler)

„Plánovač umožňuje vyvolat akce, které volají koncové body HTTP/S nebo odesíla-

jí zprávy do fronty úložiště kteréhokoli plánu. V Plánovači je možno vytvářet úlohy,

které volají služby v systému Azure nebo mimo něj a okamžitě tyto úlohy na zákla-

dě pravidelného nebo nepravidelného plánu spouštět nebo je nastavit na spuštění

v budoucnu.“ [11]

2.3.6 Služby BizTalk (BizTalk Services)

„Azure BizTalk je rozšiřitelná cloudová integrační služba, která poskytuje funkce

integrace B2B (Business to Business) a podnikových aplikací (EAI) umožňující

přinášet cloudová a hybridní integrační řešení. Jedná se o řešení správy obchod-

ních partnerů a zpracování elektronické výměny dat s podporou podnikových apli-

kací SAP, Oracle EBS, SQL Server a PeopleSoft spouštěných místně i v cloudu.“

[11]

2.3.7 Active Directory

„Služba Active Directory poskytuje funkce správy identity a řízení přístupu určené

pro cloudové aplikace. Je možno synchronizovat místní identity a povolením jed-

notného přihlašování usnadnit uživatelům přístup ke cloudovým aplikacím. Uživa-

telé tedy můžou spouštět cloudové aplikace z webového přístupového panelu po-

mocí svých přihlašovacích údajů do podnikové sítě. Služba tak pomáhá zabezpečit

přístup k aplikacím včetně online služeb Microsoftu, jako je například Office 365

a další.“ [11]

2.3.8 Vícefaktorová autentifikace (Multi-Factor Authentication)

„Služba Azure Multi-Factor Authentication poskytuje další úroveň ověřování

a pomáhá tak zabránit neoprávněnému přístupu k místním i cloudovým aplikacím.

Umožňuje používat firemní standardy bezpečnosti a dodržování předpisů a záro-

veň vyhovět požadavkům uživatelů na pohodlný přístup. Nabízí silné ověřování

za pomoci řady jednoduchých prostředků a to buď telefonických hovorů, textových

zpráv nebo oznámení přes mobilní aplikaci.“ [11]

Page 26: UNICORN COLLEGEprev.unicorncollege.cz/european-it-center/jindra... · 3.7 Framework Caliburn.Micro 36 4 Představení aplikace 37 4.1 Vytváření a editace slovníků 37 4.2 Zkoušení

26

2.3.9 Automatizace (Automation)

„Služba Automation umožňuje automatizovat vytvoření, nasazení, sledování

a údržbu zdrojů v prostředí Azure pomocí vysoce škálovatelného prováděcího mo-

dulu a tím zjednodušit správu cloudu.“ [11]

2.3.10 Síť pro doručování obsahu (Content Delivery Network)

„Služba CDN je navržená speciálně pro současné dynamické weby zaměřené na

média. Díky globální síti datových center umožňuje poskytovat koncovým uživate-

lům na celém světě širokopásmový obsah s nízkou latencí a vysokou dostupností.

Slouží k rychlejšímu a spolehlivějšímu posílání zvuku, videa, aplikací, obrázků

a dalších souborů zákazníkům ze serverů umístěných co nejblíže koncovým uživa-

telům sítě. Významně se tak zvyšuje rychlost a dostupnost.“ [11]

2.3.11 Správa rozhraní API (API Management)

„Správa rozhraní umožňuje publikovat API (Application Programming Interface)

vývojářům, partnerům a zaměstnancům bezpečným a škálovatelným způsobem.

Správa chrání důležité podnikové systémy ověřováním, omezením přenosové rych-

losti, kvótami a ukládáním do mezipaměti a snižuje tak zátěž při vysokém zatíže-

ní.“ [11]

2.3.12 Vzdálená aplikace (RemoteApp)

„Vzdálená aplikace Azure RemoteApp pomáhá uživateli zůstat produktivní kdekoli

a v různých zařízeních – Windows, Mac OS X, iOS nebo Android. Aplikace běží na

Windows Serveru v cloudu Azure, kde je možno ji snadno škálovat a aktualizovat.

Uživatelé si nainstalují klienty Vzdálené plochy Microsoftu do svých přenosných

počítačů, tabletů nebo telefonů připojených k internetu a mohou aplikaci používat

stejně, jako kdyby byla spuštěna místně. Jedná se o chráněné řešení pro poskyto-

vání aplikací například pro sezónní zaměstnance, dodavatele bez nutnosti budovat

místní infrastrukturu.“ [11]

2.3.13 Aplikační náhledy (Application Insights)

„Application Insights umožňuje detekovat a řešit problémy webových aplikací po-

mocí diagnostiky v reálném čase. Jedná se o globální náhled na stav a výkon všech

Page 27: UNICORN COLLEGEprev.unicorncollege.cz/european-it-center/jindra... · 3.7 Framework Caliburn.Micro 36 4 Představení aplikace 37 4.1 Vytváření a editace slovníků 37 4.2 Zkoušení

27

webových aplikací, kdy je možné zjistit, jak uživatelé aplikaci používají, zjistit tem-

po požadavků a dobu odezvy.“ [11]

2.3.14 Visual Studio Online

„Služba Visual Studio Online nabízí cloudové řešení správy životního cyklu aplika-

cí, které zahrnuje funkce od hostovaných úložišť kódu a sledování problémů až

po zátěžové testování a automatizované sestavování. Pro účely tradiční centralizo-

vané správy verzí je možno použít TFVC (Team Foundation Version Control) ane-

bo distribuovaný přístup Git. K projektům, kódu a pracovním položkám je umož-

něn přístup prostřednictvím integrovaného prostředí Visual Studia nebo bezplat-

ného modulu plug-in pro Eclipse.“ [11]

2.4 Síťové služby

Síťové služby umožňují uživatelům propojovat jejich instance běžící v Azure

s vlastními datovými centry a privátními cloudy. Umožňují mít pod kontrolou síťo-

vou topologii, konfiguraci adresního prostoru IP (Internet Protocol), směrovací

tabulky a bezpečnostní pravidla.

2.4.1 ExpressRoute

„Azure ExpressRoute umožňuje vytvořit privátní připojení mezi datovými centry

Azure a místní infrastrukturou ve vlastních prostorách nebo v okolním prostředí.

Spojení ExpressRoute nevede veřejným internetem, má tedy nižší latenci a vyšší

rychlost. Toto řešení je vhodné pro pravidelné migrace a replikace dat.“ [11]

2.4.2 Virtuální síť (Virtual Network)

„Pomocí virtuální sítě je možno vytvořit v Azure virtuální privátní sítě (VPN)

a bezpečně je propojit s místní IT infrastrukturou. Topologii sítě včetně konfigura-

ce rozsahů DNS (Domain Name System) a IP adres je plně pod kontrolou a je

možné ji spravovat stejně jako místní infrastrukturu.“ [11]

Page 28: UNICORN COLLEGEprev.unicorncollege.cz/european-it-center/jindra... · 3.7 Framework Caliburn.Micro 36 4 Představení aplikace 37 4.1 Vytváření a editace slovníků 37 4.2 Zkoušení

28

2.4.3 Správce provozu (Traffic Manager)

„Se Správcem provozu Azure je možno vyrovnávat zatížení příchozího provozu na-

příč několika hostovanými službami Azure spuštěnými ve stejném datovém centru

nebo i v různých datových centrech po celém světě. Dochází tak k zajištění lepšího

výkonu a dostupnosti. Správce provozu je navržený tak, aby zrychlil odezvu aplika-

cí a poskytování obsahu tím, že směruje uživatele do služby Azure nebo do externí-

ho umístění s nejnižší síťovou latencí.“ [11]

Page 29: UNICORN COLLEGEprev.unicorncollege.cz/european-it-center/jindra... · 3.7 Framework Caliburn.Micro 36 4 Představení aplikace 37 4.1 Vytváření a editace slovníků 37 4.2 Zkoušení

29

3 Vývoj aplikací pro Windows Store

Nový operační systém Windows 8 a jeho následný update Windows 8.1 přinesl

mnoho zásadních novinek a to nejenom z pohledu uživatelů, ale i vývojářů. Nové

uživatelské prostředí Modern UI totiž poskytlo i nový způsob vytváření a distribuci

aplikací.

3.1 Windows 8.1 a Modern UI

Operační systém Windows 8 byl vydán v roce 2012 a je založen na jádru s názvem

MinWin, který je taktéž základním kamenem Windows Server OS a Windows

Phone 8. Existence jediného jádra pomáhá zachovat kompatibilitu mezi různými

zařízeními a platformami, zkracuje dobu vývoje a pomáhá zvyšovat bezpečnost.

Windows 8 je modulární operační systém. To znamená, že lze jednotlivé funkce

libovolně zapnout nebo vypnout a některé funkce mohou být zcela odstraněny bez

ovlivnění funkčnosti celého systému. Jednotlivé moduly a funkce se liší, ale jádro

zůstává stejné. [14, s. 1] V roce 2013 Microsoft uvolnil aktualizaci Windows 8.1,

která přinesla řadu významných vylepšení a změn. Tyto změny zahrnovaly vše,

od způsobu jakým uživatelské rozhraní komunikuje, jak vypadá až po rozšíření

podpory pro podnikové uživatele. [14, s. 2]

Největší změna pro uživatele přecházející ze starších verzí Windows je nové

uživatelské rozhraní s názvem Modern UI (dříve Metro). K jeho přednostem patří

jednoduchost a zaměření na obsah. Přibyla nová úvodní obrazovka, která je zalo-

žená na živých dlaždicích sloužících jako zástupci aplikací, z nichž každá poskytuje

informace v reálném čase. Například se může jednat o události v kalendáři, počet

nových emailů, směnné kurzy a změny na akciových trzích. [14, s. 5] Nové rozhraní

je určené primárně pro dotykové zařízení a obsahuje podporu gest. Nicméně i na

zařízeních nepodporující dotykové ovládání lze operační systém pohodlně provo-

zovat, jelikož Windows 8 integruje dvě základní prezentační vrstvy, a to nové Mo-

dern UI a standardní desktopové rozhraní Aero, známé již ze systému Windows 7.

Samozřejmostí je i komunikace se standardními vstupními zařízeními počítače.

Mezi rozhraními lze plynule přepínat a využívat výhody obou. [15, s. 11] Programy

běží standardně v celoobrazovkovém módu, nicméně nové rozhraní dovoluje vzá-

jemnou koexistenci dvou a více programů vedle sebe. V tom případě se rozdělí ob-

razovka na více regionů a do každého se umístí prezentační vrstva právě jednoho

Page 30: UNICORN COLLEGEprev.unicorncollege.cz/european-it-center/jindra... · 3.7 Framework Caliburn.Micro 36 4 Představení aplikace 37 4.1 Vytváření a editace slovníků 37 4.2 Zkoušení

30

programu. [15, s. 14] Program má vždy deterministicky definované vizuální roz-

vrhnutí svojí prezentační vrstvy. Tuto vrstvu formuje grafické rozhraní programu,

jehož funkcionalita je založena na principu dynamické mřížky. Mřížka vytváří zá-

kladní hierarchické uspořádání jak kolekcí objektů, tak i samostatných objektů

těchto kolekcí. Výhodou je logická kategorizace objektů a schopnost automatického

přizpůsobování vzhledu programu v přímé korelaci na dostupnou zobrazovací plo-

chu a aktuální rozlišení zařízení, na kterém je program právě spuštěn. [15, s. 15]

Obrázek 7: Úvodní obrazovka Windows 8.1

Zdroj: [14, s. 9]

3.2 Windows Store

Spolu s novým operačním systémem Windows 8 přišel i nový elektronický obchod

společnosti Microsoft. Ten nabízí tisíce aplikací rozdělených do jednotlivých kate-

gorií, které jsou kompatibilní s novým uživatelským rozhraním, a zároveň je tento

obchod jejich jediným oficiálním distribučním kanálem. [15, s. 18] Ještě než je

možné aplikaci distribuovat ve Windows Store, musí nejprve projít testovacím

a certifikačním procesem. Pro úspěšné dokončení validačního procesu na straně

Page 31: UNICORN COLLEGEprev.unicorncollege.cz/european-it-center/jindra... · 3.7 Framework Caliburn.Micro 36 4 Představení aplikace 37 4.1 Vytváření a editace slovníků 37 4.2 Zkoušení

31

vývojáře je nutné mít nainstalovaný Windows App Certification Kit a platnou vý-

vojářskou licenci. Samotný program, který má projít validací, musí být zkompilo-

vaný a spojený do přímo spustitelného souboru. Proces samotný vykonává napří-

klad detekci kolizních stavů, kontrolu výkonnosti programu (suspendaci a oživení)

a kontrolu použití jen kompatibilních API (Application Programming Interface).

Součástí validace je taktéž kontrola správnosti formátování obsahu manifestu pro-

gramu. [15, s. 45] Každý aplikační balíček (souborová koncovka .appx) totiž obsa-

huje svůj jedinečný manifest, který uchovává informace o kolekci souborů, z nichž

se tento program skládá a stanovuje, zda program požaduje přístup k chráněným

systémovým zdrojům nebo k jeho perifériím. [15, s. 46]

Jak jsme již předeslali pro publikaci aplikací ve Windows Store je nutný vý-

vojářský účet. Pro účely této práce byl využit bezplatný studentský účet, poskyto-

vaný v rámci programu DreamSpark. Program DreamSpark je určený studentům

a školám a nabízí zdarma nejnovější technologie pro vývoj, design a správu IT sys-

témů od společnosti Microsoft.

3.3 Specifika vývoje

Aplikace vyvíjené pro Windows Store jsou postaveny na nové systémové knihovně

Windows Runtime. Pro vytváření aplikací si můžeme vybrat z několika programo-

vacích jazyků a způsobů vytváření uživatelského rozhraní. [16] Jejich přehled je

uveden na obrázku 8. Pro účely této práce byla zvolena kombinace C# a XAML.

Page 32: UNICORN COLLEGEprev.unicorncollege.cz/european-it-center/jindra... · 3.7 Framework Caliburn.Micro 36 4 Představení aplikace 37 4.1 Vytváření a editace slovníků 37 4.2 Zkoušení

32

Obrázek 8: Přehled programovacích jazyků

Zdroj: [16]

Vývojový proces aplikací pro Windows Store disponuje několika specifika-

mi. Velký důraz je kladen na asynchronní programování. Pokud je implementace

správná, nikdy se nemůže stát, že program přestane zpracovávat vstupy od uživate-

le anebo že by se jevil jako nečinný. V C# je k dispozici usnadnění asynchronního

programování pomocí klíčových slov async a await. Modifikátorem async určuje-

me, že daná metoda je asynchronní. Operátor await informuje kompilátor, že nel-

ze za daným bodem v programu pokračovat, dokud nebude ukončen asynchronní

proces. [15, s. 44]

Za pozornost určitě stojí i životní cyklus běhu aplikace v novém rozhraní

systému Windows 8.1, který je odlišný od standardní aplikace a je znázorněn na

obrázku 9. První akce v životním cyklu je aktivace a načítání aplikace, ke které do-

jde při spuštění uživatelem a stav programu se změní z NotRunning na Running.

Běžící program realizuje naprogramovanou činnost a v případě potřeby aktivně

komunikuje s uživatelem. Běh aplikace může být přerušen, například když se uži-

vatel přepne na jiný program. [15, s. 47] Aplikace se v tomto okamžiku, kdy s ní

uživatel nepracuje, přepíná do speciálního hibernačního režimu Suspended.

V tomto režimu aplikace stále žije (disponuje fyzickým procesem, programovým

vláknem a paměťovými vrstvami), ale nevyvíjí žádnou aktivitu (v jeho vláknech

nejsou realizované žádné činnosti). [15, s. 13] Změna běžícího programu ze stavu

Running do suspendovaného stavu Suspended ale neproběhne okamžitě, nýbrž až

Page 33: UNICORN COLLEGEprev.unicorncollege.cz/european-it-center/jindra... · 3.7 Framework Caliburn.Micro 36 4 Představení aplikace 37 4.1 Vytváření a editace slovníků 37 4.2 Zkoušení

33

po deseti vteřinách. Důvod je ten, že operační systém inteligentně čeká, zda se uži-

vatel rychle nepřepne z jiného programu zpět na původní aplikaci. Pro vývojáře je

důležitá možnost zachycení události Suspending, která je generována těsně před

přechodem aplikace do stavu Suspended. Vhodné je navrhnout program tak, aby

na událost Suspending reagoval uložením dat a uvolnil všechny přidělené systé-

mové zdroje, tak aby s nimi mohly pracovat ostatní programy bez vzniku kolizních

stavů. [15, s. 48] Pokud je program suspendovaný a uživatel se na něj přepne, do-

chází k jeho obnovení. Stav programu se změní z pozastaveného (Suspended) na

běžící (Running). Program pokračuje v realizování výpočtových procesů na místě,

kde skončil v okamžiku suspendování. Analogicky k archivaci před suspendováním

při obnovení načítá data a uvádí objekty do použitelného stavu. Při obnovení je

generována událost Resuming. Ukončení programu probíhá ve dvou etapách.

Nejdřív je program suspendovaný a následně ukončený, kdy se stav mění na

NotRunning. [15, s. 49]

Obrázek 9: Stavový diagram životního cyklu aplikace

Zdroj: [17]

3.4 XAML

XAML, neboli Extensible Application Markup Language, je jedním ze základních

kamenů Windows 8 a nového uživatelského rozhraní Modern UI. [18, s. 8] Jedná

se o dialekt jazyka XML, který Microsoft představil v roce 2006 spolu s první verzí

WPF (Windows Presentation Foundation). XAML je poměrně jednoduchý a uni-

Page 34: UNICORN COLLEGEprev.unicorncollege.cz/european-it-center/jindra... · 3.7 Framework Caliburn.Micro 36 4 Představení aplikace 37 4.1 Vytváření a editace slovníků 37 4.2 Zkoušení

34

verzální značkovací jazyk vhodný pro inicializaci objektů. Jak již bylo naznačeno,

XAML je prakticky XML rozšířený o soubor pravidel o prvcích, atributech a jejich

mapování na objekty. [19, s. 63] Jazyk slouží k návrhu uživatelského rozhraní apli-

kace a to buď přímou tvorbou fragmentů tohoto jazyka anebo za asistence návr-

hářských nástrojů, které generují fragmenty jazyka XAML automaticky. Jazyk tedy

slouží k usnadnění zápisu a pomocí něj definujeme jaké objekty a s jakými vlast-

nostmi se mají vytvořit. [15, s. 53] Nespornou výhodou je i fyzické oddělení kódu

do dvou souborů, a to na uživatelské rozhraní, kde je definován vzhled pomocí jed-

notlivých elementů a programovou část. Pokud se pozastavíme nad syntaxí jazyka

XAML, tak zjistíme, že základem jsou stejně jako u XML jmenné prostory (na-

mespaces), které nám slouží k jednoznačnému odlišení jednotlivých tříd a zabra-

ňují tak případným kolizím. Pokud jednotlivé prvky nemají definován jmenný pro-

stor, je použit implicitní, který obsahuje základní grafické elementy WPF. Struktu-

ra XAML kódu je stromová, jednotlivé elementy mohou být vnořené a obsahovat

elementy další. Elementy samotné jsou uzavřené v lomených závorkách včetně

ukončovacího znaku, zpětného lomítka. Případné nastavení vlastností objektu za-

jistíme vložením atributu k danému elementu. [20]

3.5 Data Binding

Jednou z vlastností rozhraní Modern UI je i podpora data bindingu, což zjednodu-

šeně znamená automatické obnovení zobrazovaných dat v případě, že byla tato

data změněna. [21, s. 13] Klíčem k data bindingu je rozšířená vazba, která spojuje

dva objekty a udržuje mezi nimi otevřený komunikační kanál. Stačí tuto vazbu na-

stavit jednou a synchronizace již pak funguje automaticky po celou dobu životního

cyklu aplikace. [19, s. 571] Vazba může být nastavena třemi způsoby. Jednosměrná

vazba (OneWay) znamená, že cílový objekt je aktualizován při každé změně zdro-

jového objektu. Obousměrná vazba (TwoWay) má za následek, že cílový i zdrojový

objekt reaguje na změnu svého protějšku aktualizováním. Poslední vazbou je jed-

norázová (OneTime), která funguje podobně jako jednosměrná s tím rozdílem, že

cílový objekt získá snímek zdroje pouze při iniciaci vazby. [19, s. 575]

Page 35: UNICORN COLLEGEprev.unicorncollege.cz/european-it-center/jindra... · 3.7 Framework Caliburn.Micro 36 4 Představení aplikace 37 4.1 Vytváření a editace slovníků 37 4.2 Zkoušení

35

3.6 Návrhový vzor MVVM

Ve vývoji software se často používají návrhové vzory. V praktické části této práce

byl použit vzor MVVM (Model-View-ViewModel), a proto se konkrétně zaměříme

právě na něj. Tento vzor vychází z principů vzoru MVC (Model-View-Controller)

a navrhnul jej WPF/Silverlight architekt John Grosman. Nejprve si tedy popíšeme

samotnou architekturu MVC. Ta dělí aplikaci na tři logické části a odděluje tím

logiku aplikace od uživatelského rozhraní tak, že lze upravovat jednotlivé části sa-

mostatně, s minimálním dopadem na ostatní. Tyto tři části jsou Model, View

a Controller. Model reprezentuje data a business logiku aplikace, View zobrazuje

uživatelské rozhraní a Controller má na starosti tok událostí v aplikaci a obecně

aplikační logiku. [22]

V MVVM má Model stejnou roli jako v MVC, tedy reprezentaci dat získa-

ných z perzistentního úložiště a je zodpovědný za notifikaci změn ViewModelu.

View má opět na starosti zobrazení dat a sbírání uživatelských vstupů, které tento-

krát předává přímo ViewModelu. ViewModel zde představuje mezivrstvu, která

adaptuje Model pro potřeby View. Je tedy zodpovědná za stav View a přesun dat

z Modelu do View. [18, s. 80] Toto je hlavní odlišností oproti MVC, jelikož View již

nepřistupuje k Modelu napřímo.

Pokud se zaměříme na implementaci MVVM v XAML, je vhodné, aby veřej-

né vlastnosti byly ViewModelem publikovány jako notifikační, tedy vyvolávaly udá-

losti při změně. V opačném případě by nemohlo docházet ke komunikaci mezi

View a ViewModelem. Toho docílíme buď použitím vlastností DependencyProper-

ty anebo implementací rozhraní INotifyPropertyChanged. Toto rozhraní popisuje

událost, která nastane v případě změny vlastnosti ViewModelu. U kolekcí prvků

pak využijeme vystavování pomocí kolekce ObservableCollection<T>, která ozna-

muje přidání anebo odebrání prvků. Ovládací prvky View jsou s ViewModelem

propojeny pomocí data bindingu a získávají z něj tak svůj obsah. Důvodem, proč

zvolit při vytváření aplikace vzor MVVM je snaha o co nejčistší code behind. Tomu

přispěje právě implementace výše uvedeného rozhraní. Dalším důvodem je využití

obousměrného data bindingu a zjednodušení dalších případných úprav v budouc-

nu. [23]

Page 36: UNICORN COLLEGEprev.unicorncollege.cz/european-it-center/jindra... · 3.7 Framework Caliburn.Micro 36 4 Představení aplikace 37 4.1 Vytváření a editace slovníků 37 4.2 Zkoušení

36

Obrázek 10: MVVM části a jejich interakce

Zdroj: http://msdn.microsoft.com/en-us/library/gg405484%28v=pandp.40%29.aspx

3.7 Framework Caliburn.Micro

Použití návrhového vzoru při prvotním vývoji aplikace samozřejmě znamená i urči-

tý investovaný čas navíc. Tato investice se ale s největší pravděpodobností

v budoucnu vrátí při dalších úpravách aplikace. Pro usnadnění aplikace vzoru

MVVM byl vytvořen robustní framework Caliburn a jeho odlehčená verze Cali-

burn.Micro. Autorem je programátor Rob Eisenberg a jeho tým. Caliburn.Micro je

tedy malý, ale velice silný framework, vytvořený pro vývoj aplikací napříč všemi

XAML platformami. Umožňuje výrazně urychlit vývoj, bez nutnosti obětovat kvali-

tu kódu. [24] Tento framework byl použit při implementaci návrhového vzoru

MVVM do ukázkové aplikace.

Page 37: UNICORN COLLEGEprev.unicorncollege.cz/european-it-center/jindra... · 3.7 Framework Caliburn.Micro 36 4 Představení aplikace 37 4.1 Vytváření a editace slovníků 37 4.2 Zkoušení

37

4 Představení aplikace

Pro demonstraci možného využití služeb platformy Microsoft Azure při vývoji

aplikací pro Windows Store byl vytvořen program s názvem Scholasticus. Název je

inspirován latinským výrazem pro učitele. Jedná se o aplikaci pro osvojení a zkou-

šení slovní zásoby a tedy o pomocníka při výuce cizích jazyků. Program byl vyvinut

pro operační systém Windows 8.1 v jazyce C# a XAML s využitím frameworku

Caliburn.Micro pro implementaci návrhového vzoru MVVM. Uživatel se přihlašuje

do aplikace pomocí účtu Microsoft, čili pomocí poskytovatele identity Microsoft

Account.

Obrázek 11: Hlavní menu aplikace Scholasticus

Zdroj: Aplikace Scholasticus (vlastní zpracování)

4.1 Vytváření a editace slovníků

Základní funkcionalitou je pro uživatele možnost vytvářet a editovat slovníky, které

později budou využity pro testování jeho znalostí. Slovníky samotné jsou uchová-

Page 38: UNICORN COLLEGEprev.unicorncollege.cz/european-it-center/jindra... · 3.7 Framework Caliburn.Micro 36 4 Představení aplikace 37 4.1 Vytváření a editace slovníků 37 4.2 Zkoušení

38

vány ve formátu XML a na pevném disku zařízení jsou uloženy ve složce Roa-

mingState v balíčku aplikace, který je vnořen ve složce uživatele operačního systé-

mu. Výhodou tohoto řešení je fakt, že soubory slovníku se automaticky synchroni-

zují mezi zařízeními daného uživatele, kde je aplikace nainstalována. O synchroni-

zaci se stará operační systém, s čímž je ovšem spojena i jedna nevýhoda, jelikož

uživatel nemá možnost synchronizaci oficiálně iniciovat. Ta probíhá automaticky

na pozadí zhruba ve třicetiminutových cyklech a dále také ve chvíli, kdy je zařízení

uzamčené. Tento způsob jak výše uvedený problém obejít a synchronizaci iniciovat

uzamčením zařízení jsme využívali například v průběhu testování.

V rámci aplikace Scholasticus je pro lepší uspořádání možné jednotlivé

slovníky řadit do kategorií (skupin). Kategorie je možno přímo z aplikace zakládat

a slovníky mezi nimi libovolně přesouvat. Stejně tak lze definovat nové jazyky

slovníků. V obou případech se uživateli pro stisknutí příslušného tlačítka zobrazí

dočasné kontextové okno pro zadání nové hodnoty, čehož bylo docíleno využitím

prvku Flyout.

Obrázek 12: Založení nové kategorie

Zdroj: Aplikace Scholasticus (vlastní zpracování)

Kolekce slovíček je na stránce slovníku zobrazována v podobě vertikálního

seznamu pomocí prvku ListView a umožňuje přímou editaci slovíčka včetně jeho

smazání. Pro lepší přehlednost nebo pro vyhledávání lze již založená slovíčka v se-

znamu filtrovat pomocí k tomu určených textových polí a také je řadit dle abecedy.

V rámci definované dvojice slovíček může uživatel uvést i další varianty slovíčka

(synonyma). Ke každé dvojici je pak možno přiřadit i slovní druh z připraveného

Page 39: UNICORN COLLEGEprev.unicorncollege.cz/european-it-center/jindra... · 3.7 Framework Caliburn.Micro 36 4 Představení aplikace 37 4.1 Vytváření a editace slovníků 37 4.2 Zkoušení

39

seznamu. Jako jednu z možností, jak sdílet slovníky mezi uživateli umožňuje apli-

kace export a import slovníku ze souboru ve formátu XML. Pro export využijeme

třídu FileSavePicker, který umožní uživateli specifikovat název a umístění výsled-

ného souboru. Obdobně pak funguje pro import slovníku použitá třída FileO-

penPicker. V obou případech se uživateli zobrazí standardní rozhraní Modern UI

pro práci se soubory. V XML souboru slovníku je evidován autor, datum vzniku,

kategorie, dvojice jazyků a samotná slovíčka. V souboru může být uveden atribut,

že se jedná o systémový slovník. V takovém případě nelze tento slovník v aplikaci

editovat a znamená to, že byl vytvořen autorem aplikace jako oficiální slovník. Už

samotné vytváření slovníku lze považovat za určitou formu studia slovní zásoby.

Nespornou výhodou je možnost vytvořit si slovník opravdu na míru svým potře-

bám.

Obrázek 13: Editace slovníku

Zdroj: Aplikace Scholasticus (vlastní zpracování)

Page 40: UNICORN COLLEGEprev.unicorncollege.cz/european-it-center/jindra... · 3.7 Framework Caliburn.Micro 36 4 Představení aplikace 37 4.1 Vytváření a editace slovníků 37 4.2 Zkoušení

40

Obrázek 14: XML soubor slovníku

Zdroj: Zdrojový kód aplikace - Computers.xml (vlastní zpracování)

Pro zobrazení slovníků, které jsou v aplikaci dostupné, a také pro jejich další

správu slouží stránka Administrace. Zde je pomocí prvku GridView znázorněn

přehled jednotlivých slovníků v podobě dlaždic, které zobrazují základní informa-

ce. Dlaždice jsou rozděleny do skupin dle ve slovníku definovaných kategorií. Pří-

mo ze stránky Administrace lze provádět import, export a smazání slovníku a dále

také iniciovat jeho sdílení na Tržišti.

Page 41: UNICORN COLLEGEprev.unicorncollege.cz/european-it-center/jindra... · 3.7 Framework Caliburn.Micro 36 4 Představení aplikace 37 4.1 Vytváření a editace slovníků 37 4.2 Zkoušení

41

Obrázek 15: Administrace slovníků

Zdroj: Aplikace Scholasticus (vlastní zpracování)

4.2 Zkoušení uživatele a jeho hodnocení

Neméně důležitou funkcionalitou je i samotné zkoušení. Uživatel má možnost si

zvolit počet testovacích kol, neboli na kolik slovíček bude během testu dotázán a na

který z dvojice jazyků ve slovníku má být test zaměřen. Vnitřní logika aplikace za-

jistí, že slovíčka, se kterými má uživatel problém, budou zkoušena častěji. Každé

slovíčko je v rámci slovníku ohodnoceno známkou jedna až pět, přičemž počáteční

hodnota je pět. Při správné odpovědi je známka vylepšena o jeden stupeň a naopak

při špatné odpovědi zhoršena. Tato známka poté ovlivňuje samotný náhodný výběr

slovíčka při zkoušení. Během zkoušení je také možno využít nápovědu, která zob-

razí počáteční písmeno a počet znaků ve slovíčku, které reprezentuje správnou od-

pověď. Každé zkoušení je následně hodnoceno. Sledován je počet správných

a špatných odpovědí a jejich celkový poměr. Za použití nápovědy se odečte polovi-

na hodnocení za slovíčko, u kterého byla využita.

Page 42: UNICORN COLLEGEprev.unicorncollege.cz/european-it-center/jindra... · 3.7 Framework Caliburn.Micro 36 4 Představení aplikace 37 4.1 Vytváření a editace slovníků 37 4.2 Zkoušení

42

Obrázek 16: Zkoušení uživatele

Zdroj: Aplikace Scholasticus (vlastní zpracování)

4.3 Osobní statistika uživatele

Pro sledování úspěšnosti zkoušení slouží funkcionalita Statistika. K dispozici je

nejenom detailní statistika uživatele ve formě grafů, ale i žebříček deseti aktuálně

nejlepších uživatelů aplikace Scholasticus ve třech kategoriích. První kategorií je

nejvyšší aktuálně dosažené celkové hodnocení úspěšnosti zkoušení, druhou kate-

gorií je počet správných odpovědí a poslední sledovanou hodnotou je počet dokon-

čených testů. Tyto žebříčky mají být motivačním prvkem pro uživatele, který by se

měl snažit umístit se v nich co nejvýše. Pro vizualizaci grafů byl využit NuGet balí-

ček WinRT XAML Toolkit – Data Visualization Controls. Z nabízených prvků vyu-

žijeme koláčový a sloupcový graf.

Page 43: UNICORN COLLEGEprev.unicorncollege.cz/european-it-center/jindra... · 3.7 Framework Caliburn.Micro 36 4 Představení aplikace 37 4.1 Vytváření a editace slovníků 37 4.2 Zkoušení

43

Obrázek 17: Statistika uživatele

Zdroj: Aplikace Scholasticus (vlastní zpracování)

4.4 Tržiště

Tržiště umožňuje komunitě uživatelů aplikace Scholasticus navzájem mezi sebou

efektivně sdílet svoje slovníky. Každý uživatel může jím vytvořené slovníky libo-

volně nahrávat do sdíleného úložiště a taktéž je odsud mazat. Jedná se o způsob

jak rychle rozšířit svoji knihovnu slovníku pro zkoušení slovní zásoby. V rámci

přehledu aktuálně nabízených slovníků je uživateli umožněno nabídku filtrovat dle

názvu souboru a názvu slovníku a taktéž seznam řadit dle všech sledovaných atri-

butů. O přidání nového slovníku jsou uživatelé informováni pomocí notifikačních

zpráv.

Page 44: UNICORN COLLEGEprev.unicorncollege.cz/european-it-center/jindra... · 3.7 Framework Caliburn.Micro 36 4 Představení aplikace 37 4.1 Vytváření a editace slovníků 37 4.2 Zkoušení

44

Obrázek 18: Tržiště

Zdroj: Aplikace Scholasticus (vlastní zpracování)

4.5 Nastavení

Uživatelské prostředí bylo vyvinuto jako vícejazyčné. V tuto chvíli existuje aplikace

v české a anglické lokalizaci. Výběr jazyka provádí aplikace při prvním spuštění

automaticky dle nastavené lokalizace v operačním systému. Pokud by uživateli toto

implicitní nastavení nevyhovovalo, může ho jednoduše změnit v panelu nastavení.

Rozšíření v budoucnu o další jazyk je díky využití balíčku Multilingual App Toolkit

for Visual Studio jednoduchou záležitostí, jelikož veškeré texty jsou vyčleněny mi-

mo hlavní kód do samostatného souboru pro každý jazyk. V panelu má uživatel

dále možnost nastavit počet testovacích kol neboli počet dotazů na slovíčka během

jednoho testu. Pro vytvoření panelu jsme použili prvek Settings Flyout, který im-

plementuje obecné chování ve Windows, kdy panel nastavení roluje z pravé strany

obrazovky na základě uživatelského gesta nebo klávesové zkratky. [25, s. 297]

Page 45: UNICORN COLLEGEprev.unicorncollege.cz/european-it-center/jindra... · 3.7 Framework Caliburn.Micro 36 4 Představení aplikace 37 4.1 Vytváření a editace slovníků 37 4.2 Zkoušení

45

Obrázek 19: Panel nastavení aplikace

Zdroj: Aplikace Scholasticus (vlastní zpracování)

Jelikož při tvorbě aplikace využíváme návrhový vzor MVVM implementova-

ný pomocí frameworku Caliburn.Micro, liší se naše realizace panelu nastavení od

běžného základního postupu. Při startu aplikace ve třídě App.xaml.cz voláme me-

todu RegisterSettingsService nad kontejnerem WinRTContainer. Tato metoda

vrací službu pro práci s nastavením ISettingsService, kterou využijeme k registraci

příkazu vyvolání našeho panelu jako panelu nastavení, tedy příkaz na vyvolání

modelu pohledu CustomSettingsViewModel.

Page 46: UNICORN COLLEGEprev.unicorncollege.cz/european-it-center/jindra... · 3.7 Framework Caliburn.Micro 36 4 Představení aplikace 37 4.1 Vytváření a editace slovníků 37 4.2 Zkoušení

46

Obrázek 20: Registrace panelu nastavení

Zdroj: Zdrojový kód aplikace – App.xaml.cs (vlastní zpracování)

4.6 Uživatelské prostředí

O možnostech lokalizace aplikace do různých jazyků jsme se již zmínili v předchozí

kapitole. Dalším prvkem, který má za úkol uživatelům zpříjemnit práci s aplikací je

nápověda v podobě popisků, které se zobrazují nad jednotlivými elementy a jsou

opět lokalizované do jednotlivých jazyků. Pro implementaci byla využita vlastnost

ToolTip přidaná k elementu v XAML pohledu. Nápovědu vyvoláme, pokud nad

elementem ponecháme kurzor myši či v případě dotykového ovládání podržíme

prst. Jedná se o rychlou kontextovou nápovědu, kdy uživatel není nucen hledat

pomoc v manuálu k aplikaci. Další formou nápovědy je využití vlastnosti Placehol-

derText u elementu typu TextBox (textové pole). Tato vlastnost umožňuje zobrazit

text nápovědy přímo v textovém poli do té doby, než je nahrazen uživatelským tex-

tem. Poslední formou nápovědy můžeme nazvat podbarvovaní textových polí čer-

venou barvou v případě, že se jedná o povinné pole a například při pokusu o ulože-

ní slovníku zůstane nevyplněné. Uživatel se tak může rychle orientovat a povinný

údaj doplnit. Pro tuto funkcionalitu jsme využili rozšíření v podobě balíčku Win-

RTXamlToolkit.Controls.Extension, který nám umožní na základě validace pole

podbarvit.

Page 47: UNICORN COLLEGEprev.unicorncollege.cz/european-it-center/jindra... · 3.7 Framework Caliburn.Micro 36 4 Představení aplikace 37 4.1 Vytváření a editace slovníků 37 4.2 Zkoušení

47

Obrázek 21: Nápověda v podobě popisku

Zdroj: Aplikace Scholasticus (vlastní zpracování)

Abychom dodrželi jednotnost grafické reprezentace uživatelského prostředí

ve všech částech aplikace, oddělíme definici stylů do samostatného souboru, kni-

hovny stylů.

Obrázek 22: Definice stylu tlačítka

Zdroj: Zdrojový kód aplikace – MyResources.xaml (vlastní zpracování)

Později při tvorbě elementů se již budeme pouze odkazovat na konkrétní styl v naší

knihovně. Tento způsob implementace nejenom, že pomáhá udržet konzistenci

vzhledu aplikace, ale i výrazně zjednodušuje případné úpravy v budoucnu.

Obrázek 23: Styl a nápověda tlačítka

Zdroj: Zdrojový kód aplikace – DictionaryAdministrationView.xaml (vlastní zpracování)

Proto, abychom mohli z aplikace využívat cloudové služby Microsoft Azure

logicky potřebujeme internetové připojení. Pro ověření konektivity jsme si vytvořili

třídu CheckConnection, ve které voláním metody GetInternetConnectionProfile

Page 48: UNICORN COLLEGEprev.unicorncollege.cz/european-it-center/jindra... · 3.7 Framework Caliburn.Micro 36 4 Představení aplikace 37 4.1 Vytváření a editace slovníků 37 4.2 Zkoušení

48

získáme informaci o aktuálním připojení k internetu. Pokud není k dispozici inter-

netové připojení, zobrazí se na vybraných stránkách aplikace ikona, která o tomto

stavu uživatele informuje, a některé služby nebudou dostupné. O probíhajícím

asynchronním načítání dat na pozadí je uživatel informován pomocí prvku Pro-

gressRing, který se prezentuje jako animace rotujícího kruhu teček.

Obrázek 24: Kontrola připojení k internetu

Zdroj: Zdrojový kód aplikace – CheckConnection.cs (vlastní zpracování)

Dalším prvkem pro zlepšení uživatelské přívětivosti je implementace kontextového

menu v administraci slovníku pomocí třídy PopupMenu. Menu lze snadno vyvolat

kliknutím pravým tlačítkem myši nebo v případě dotykového ovládání dlouhým

stiskem na konkrétní slovník. Zpřístupní se tak rychlá nabídka možných operací se

slovníkem jako je editace, export, sdílení či odstranění.

Obrázek 25: Kontextové menu slovníku

Zdroj: Aplikace Scholasticus (vlastní zpracování)

Page 49: UNICORN COLLEGEprev.unicorncollege.cz/european-it-center/jindra... · 3.7 Framework Caliburn.Micro 36 4 Představení aplikace 37 4.1 Vytváření a editace slovníků 37 4.2 Zkoušení

49

Posledním prvkem, o kterém se v této kapitole zmíníme, je aplikační lišta, která

slouží jako rychlý navigační panel a standardně je skryta. Vyvolat lze klávesovou

zkratkou Win+Z, pravým tlačítkem myši nebo potažením z horní části obrazovky.

Využijeme zde element AppBar, který nám slouží jako kontejner pro jednotlivá

navigační tlačítka.

Obrázek 26: Aplikační lišta

Zdroj: Aplikace Scholasticus (vlastní zpracování)

Page 50: UNICORN COLLEGEprev.unicorncollege.cz/european-it-center/jindra... · 3.7 Framework Caliburn.Micro 36 4 Představení aplikace 37 4.1 Vytváření a editace slovníků 37 4.2 Zkoušení

50

5 Implementace vybraných služeb Azure v aplikaci

Microsoft poskytuje vývojářům konzistentní prostředí v podobě nástrojů Visu-

al Studio, Visual Studio Online a Microsoft Azure SDK a to bez ohledu na typy pro-

jektů na kterých pracují a samozřejmě poskytuje rozsáhlou podporu pro rozhraní

.NET Framework v systémech Windows. Microsoft Azure je ale také otevřená plat-

forma, která plně podporuje systémy třetích stran, jejich jazyky a nástroje. Napří-

klad se jedná o Linux, PHP, Java, Ruby, Python a MySQL. Pro snadnou správu

služeb platformy Microsoft Azure je poskytováno webové rozhraní v podobě portá-

lu Microsoft Azure Management Portal, které je funkční ve všech nejrozšířeněj-

ších prohlížečích. [7, s. 17]

Pro samotný vývoj a využívání služeb platformy Azure je nutná registrace.

Microsoft nabízí zdarma předplatné na jeden měsíc ve výši 150 dolarů pro vyzkou-

šení všech poskytovaných služeb. [7, s. 16] V našem případě bylo pro vývoj ukázko-

vé aplikace použito vývojové prostředí Visual Studio 2013 s Microsoft Azure SDK

a po vypršení měsíční lhůty na vyzkoušení služeb nabízené platformou bylo využito

nízkonákladové předplatné typu Pay-As-You-Go, což znamená platbu pouze za

skutečně využité služby bez periodických měsíčních plateb.

5.1 Mobilní služby

Pokud uvažujeme o využití cloudových služeb platformy Azure při vývoji aplikací

pro Windows Store, tak na základě seznámení se s nabídkou v rámci kapitoly

2 Služby Microsoft Azure naše první kroky budou určitě směřovat k použití Mobil-

ních služeb Azure, které nám umožní uchovávat data v cloudu, přihlašování a ově-

řování uživatelů a využívání notifikačních služeb. Mobilní služba Azure je poskyto-

vána na třech úrovních. Jsou to Free, Basic a Standard. Nastavení úrovně ovlivňu-

je výkonnost mobilní služby a možnosti škálování. Detailní přehled nabízených

úrovní je uveden v tabulce 1. Pro naši potřebu použijeme úroveň Free, která je po-

skytována zdarma. Výhodou je, že mezi jednotlivými úrovněmi můžeme

v budoucnu plynule přecházet a reagovat tak na skutečné potřeby námi provozo-

vané aplikace. [26]

Page 51: UNICORN COLLEGEprev.unicorncollege.cz/european-it-center/jindra... · 3.7 Framework Caliburn.Micro 36 4 Představení aplikace 37 4.1 Vytváření a editace slovníků 37 4.2 Zkoušení

51

Tabulka 1: Nabízené úrovně Mobilní služby Azure

FREE BASIC STANDARD

Počet volání API za den 0,5 mil. 1,5 mil. / jednotka 15 mil. / jednotka

Počet aktivních zařízení za den 500 bez limitu bez limitu

Škálování není dostupné max. 6 jednotek bez limitu

Kapacita CPU 60 min. / denně bez limitu bez limitu

Odchozí přenos dat 165 MB / denně bez limitu bez limitu Zdroj: [26] (upraveno)

V první řadě tedy musíme vytvořit novou mobilní službu, kterou později

propojíme s naší aplikací. To lze provést buď skrze uživatelský portál Azure anebo

přímo z konkrétního projektu ve vývojovém prostředí Visual Studio, které jsme

nejprve propojili s naším Azure účtem. Využití průvodce vytvoření mobilní služby

ve Visual Studiu má tu výhodu, že do řešení rovnou přidá projekt mobilní služby

a nainstaluje patřičné balíčky přes správce balíků NuGet, který je zde integrován.

Tím zásadním balíčkem je WindowsAzure.MobileServices. Jako backend (interní

rozhraní) volíme .NET Framework.

Page 52: UNICORN COLLEGEprev.unicorncollege.cz/european-it-center/jindra... · 3.7 Framework Caliburn.Micro 36 4 Představení aplikace 37 4.1 Vytváření a editace slovníků 37 4.2 Zkoušení

52

Obrázek 27: Vytvoření mobilní služby

Zdroj: Visual Studio 2013 (vlastní zpracování)

Přístup do nově vytvořené mobilní služby je zaručen využitím instance třídy

MobileServiceCient. Tento klient je vytvořen pomocí URI (jednotného identifiká-

toru zdroje) a aplikačního klíče nové mobilní služby. Toto statické pole musí být

umístěno v třídě App daného projektu.

Obrázek 28: Klient mobilní služby

Zdroj: Zdrojový kód aplikace – App.xaml.cs (vlastní zpracování)

Veškeré změny v projektu mobilní služby je nutné vždy z prostředí Visual Stu-

dia publikovat do prostředí Microsoft Azure. Publikace opět probíhá za pomoci

Page 53: UNICORN COLLEGEprev.unicorncollege.cz/european-it-center/jindra... · 3.7 Framework Caliburn.Micro 36 4 Představení aplikace 37 4.1 Vytváření a editace slovníků 37 4.2 Zkoušení

53

průvodce a je velmi intuitivní. Pro zjednodušení práce s chybovými stavy

v komunikaci naší aplikace s mobilní službou je na portále Microsoft Azure Ma-

nagement Portal v záložce Logs k dispozici přehled všech zachycených chyb a va-

rování. Jeho sledování minimálně v prvních fázích implementace služeb lze

z vlastní zkušenosti více než doporučit. V rámci založení mobilní služby vytváříme

i databázový server a novou instanci SQL databáze, kterou později využijeme jako

relační databázi pro naši aplikaci. Pokud bychom již měli databázi v Azure vytvo-

řenu, mohli bychom ji použít namísto vytváření nové. Pro naše účely jsme použili

bezplatnou SQL databázi o velikosti 20 MB.

5.2 Autentizace

Ve chvíli, kdy máme vytvořenu a propojenu mobilní službu Azure s naším projek-

tem je možno naplno začít využívat služby, které Azure nabízí. Prvním požadavkem

bude využít Azure pro autentizaci uživatelů aplikace Scholasticus. Jak již bylo zmí-

něno v předchozích kapitolách, Microsoft Azure nabízí podporu několika poskyto-

vatelů identit. Pro naše potřeby byl vybrán Microsoft Account. Důvodem byl před-

poklad, že drtivá většina uživatelů Windows 8.1 má tento typ účtu založen a aktiv-

ně ho využívá pro přihlašování do operačního systému. Výhodou je, že lze používat

stejný účet jak pro přihlášení do systému, tak následně i do aplikace samotné. Na

straně aplikace tedy není nutné vyvíjet vlastní správu uživatelských účtů a jejich

přihlašovacích údajů.

Pro implementaci autentizačních služeb musíme v první řadě pod svým vý-

vojářským účtem vyvíjenou aplikaci zaregistrovat mezi námi připravované aplikace

pro Windows Store na webovém portálu Dev Center for Windows, kde si můžeme

například i zarezervovat jméno vyvíjené aplikace. Pro dokončení registrace našeho

programu přejdeme na portále v nastavení aplikace na záložku Služby, a pomocí

zde uvedeného odkazu přejdeme přímo na portál Web Live Services, kde bude

nutné provést nastavení komunikačního rozhraní API (Application Programming

Interface). Zde uvedeme adresu URL, na kterou bude uživatel přesměrován.

V našem případě se jedná o URI, které již známe z nastavení mobilních služeb, do-

plněné o postfix signin-microsoft. Pokud vyvíjíme aplikaci ve vývojovém prostředí

Visual Studio, je vhodné v tuto chvíli asociovat náš projekt s právě zaregistrovanou

aplikací, což učiníme přímo ve vývojovém prostředí pomocí jednoduchého průvod-

Page 54: UNICORN COLLEGEprev.unicorncollege.cz/european-it-center/jindra... · 3.7 Framework Caliburn.Micro 36 4 Představení aplikace 37 4.1 Vytváření a editace slovníků 37 4.2 Zkoušení

54

ce s názvem Associate App with the Store. Umožní nám to například později pu-

blikovat aplikaci do Windows Store přímo z Visual Studia.

Obrázek 29: Nastavení API

Zdroj: https://account.live.com/developers/applications/apisettings/ (vlastní zprac.)

Na portálu Web Live Services zjistíme v nastavení aplikace jednoznačné dů-

věrné identifikátory, které jsou nezbytné pro korektní nastavení správy identit

v Azure. Získáme zde identifikační číslo klienta, sdílený tajný klíč klienta a jedineč-

ný identifikátor aplikace pro Windows Store. Všechny tři obdržené údaje opět na

portálu Microsoft Azure Management Portal uvedeme do již v minulosti založené

mobilní služby a to pod konkrétního poskytovatele identity, v našem případě tedy

pod Microsoft Account, a dokončíme tak nastavení správy identit na portále Azure.

Page 55: UNICORN COLLEGEprev.unicorncollege.cz/european-it-center/jindra... · 3.7 Framework Caliburn.Micro 36 4 Představení aplikace 37 4.1 Vytváření a editace slovníků 37 4.2 Zkoušení

55

Obrázek 30: Nastavení poskytovatele identit

Zdroj: https://manage.windowsazure.com (vlastní zpracování)

Abychom minimalizovali nutnost volat poskytovatele identity při každém

přihlášení do aplikace, využijme možnost uchovávat přihlašovací token uživatele

(bezpečnostní klíč) a při startu aplikace se nejdříve pokusíme využít jej. Pokud to-

ken existuje a neexpiroval, aplikace se úspěšně přihlásí bez interakce s uživatelem.

Nespornou výhodou tohoto řešení je, že uživatel se úspěšně přihlásí i bez interne-

tového připojení, které je jinak pro ověření identity nutné, jelikož aplikace musí

kontaktovat poskytovatele identity pro realizaci ověření. Internetové připojení tedy

bude nutné při prvním přihlášení do aplikace, kdy dojde i k uložení tokenu do zaří-

zení a dále v případě neexistence tokenu či jeho expiraci. Pro uložení uživatelského

jména a hesla byla použita třída PasswordVault ze jmenného prostoru Win-

dows.Security.Credentials. Tato třída umožňuje bezpečně uchovávat přihlašovací

údaje uživatele v důvěryhodných zařízeních propojených s účtem Microsoftu. [19,

s. 345]

Page 56: UNICORN COLLEGEprev.unicorncollege.cz/european-it-center/jindra... · 3.7 Framework Caliburn.Micro 36 4 Představení aplikace 37 4.1 Vytváření a editace slovníků 37 4.2 Zkoušení

56

Obrázek 31: Implementace přihlášení

Zdroj: Zdrojový kód aplikace – UserName.cs (vlastní zpracování)

Zavoláním metody LoginAsync zobrazíme uživatelské rozhraní pro přihlá-

šení. Vzhled rozhraní pro daného poskytovatele identity je ve standardizované po-

době a vývojář ho nemusí v rámci XAML nijak řešit či inicializovat.

Obrázek 32: Přihlášení do aplikace Scholasticus

Zdroj: Aplikace Scholasticus (vlastní zpracování)

Využití renomovaného poskytovatele identity v kombinaci s bezpečným ulo-

žením přihlašovacích údajů působí zajisté na uživatele důvěryhodněji a bezpečněji

Page 57: UNICORN COLLEGEprev.unicorncollege.cz/european-it-center/jindra... · 3.7 Framework Caliburn.Micro 36 4 Představení aplikace 37 4.1 Vytváření a editace slovníků 37 4.2 Zkoušení

57

oproti pro něj neznámým řešením. Transparentnosti ověření identity přispívá

i fakt, že uživatel má možnost spravovat pověření udělená jednotlivým aplikacím

v ovládacím panelu operačního systému Windows 8.1, pro který je tato aplikace

určena. Nejinak je tomu i v případě aplikace Scholasticus. Pro potřeby aplikace

Scholasticus, ale požadujeme nejenom samotné ověření identity uživatele, ale také

bychom rádi používali uživatelské jméno jako identifikátor uživatele ve statisti-

kách. Zde narážíme na první nedostatky výše uvedené implementace, jelikož po-

skytovatel identity Microsoft Account nám v rámci ověřování identity s využitím

mobilních služeb Azure poskytuje pouze přístup k informaci o uživatelském identi-

fikačním čísle a tokenu. Uvádět ve statistikách uživatele pod identifikačním číslem

by nebylo dobré, jelikož většina uživatelů své číslo nezná a nic jim neříká. Jedním

z řešení je vytvoření vlastního API kontroléru, který bude komunikovat

s poskytovatelem identity a získávat od něj doplňující informace o přihlášeném

uživateli. Nás zajímá zejména informace o preferovaném emailovém účtu, neboť

ten se využívá jako uživatelské jméno v účtu Microsoft. Jedná se tedy o jedinečný

identifikátor uživatele. Po přihlášení uživatele do aplikace a ověření identity pro-

vedeme přes náš kontrolér dotaz na doplňující informace o uživateli, které si ulo-

žíme do SQL databáze jako součást jeho statistiky, abychom měli údaje k dispozici

i v případě, že uživatel bude přihlášen pomocí uloženého tokenu a k praktickému

ověření identity u poskytovatele tedy nedojde. Na portále Azure je pro funkčnost

kontroléru taktéž nutné definovat rozšíření v konfiguraci mobilní služby. Konkrét-

ně v našem případě doplníme v App Settings pro MS_MicrosoftScope hodnoty

wl.basic, wl.signin a wl.emails. Informace získané od poskytovatele identity jsou

ve formátu JObject, tedy v podobě kolekce párů klíče a hodnoty. Při prvním přihlá-

šení do aplikace je uživatel vyzván k povolení přístupu aplikace k osobním infor-

macím. Jedná se o zobrazení profilových údajů, povolení automatického přihlášení

a zobrazení emailové adresy.

Page 58: UNICORN COLLEGEprev.unicorncollege.cz/european-it-center/jindra... · 3.7 Framework Caliburn.Micro 36 4 Představení aplikace 37 4.1 Vytváření a editace slovníků 37 4.2 Zkoušení

58

Obrázek 33: Implementace Api kontroléru

Zdroj: Zdrojový kód aplikace – UserInfoController.cs (vlastní zpracování)

Obrázek 34: Získání uživatelského jména z kontroléru

Zdroj: Zdrojový kód aplikace – UserName.cs (vlastní zpracování)

5.3 Databáze SQL

Nyní se zaměříme na možnost využití SQL databáze, poskytované v rámci Micro-

soft Azure v kombinaci s naší aplikací pro Windows Store. Cloudovou SQL databá-

zi využijeme pro ukládání osobní statistiky uživatele a odtud budeme čerpat i data

pro žebříček nejúspěšnějších uživatelů aplikace Scholasticus. Cloudový databázový

server a instanci SQL databáze jsme již vytvořili v rámci zprovoznění nové mobilní

služby, které bylo popsáno v kapitole 5.1 Mobilní služby. Ze strany platformy Azure

nejsou na uživatele kladeny žádné velké nároky a veškeré nastavení probíhá prak-

Page 59: UNICORN COLLEGEprev.unicorncollege.cz/european-it-center/jindra... · 3.7 Framework Caliburn.Micro 36 4 Představení aplikace 37 4.1 Vytváření a editace slovníků 37 4.2 Zkoušení

59

ticky automaticky. V našem případě využijeme pro ukázkovou aplikaci základní

zdarma poskytovanou databázi omezenou na maximální velikost 20 MB. U place-

ných verzí máme možnost vybrat i výkonnostní charakteristiku databáze. Zde je

určitě namístě zvážit, pro co bude vyvíjená aplikace sloužit a jaká úroveň pro nás

bude vhodná. I zde ovšem platí možnost libovolně přecházet mezi jednotlivými

úrovněmi a pružně tak reagovat na skutečné potřeby. Jednotlivé nabízené úrovně

jsou uvedené v tabulce 2.

Tabulka 2: Nabízené úrovně služby SQL Azure

Úroveň DTU Velikost DB Max. vláken Max. relací Transakční rychlost

Basic 5 2 GB 30 300 16 600 transakcí za hodinu

Standard/S0 10 250 GB 60 600 521 transakcí za minutu

Standard/S1 20 250 GB 90 900 934 transakcí za minutu

Standard/S2 50 250 GB 120 1 200 2 570 transakcí za minutu

Standard/S3 100 250 GB 200 2 400 5 100 transakcí za minutu

Premium/P1 100 500 GB 200 2 400 105 transakcí za vteřinu

Premium/P2 200 500 GB 400 4 800 228 transakcí za vteřinu

Premium/P3 800 500 GB 1 600 19 200 735 transakcí za vteřinu Zdroj: https://msdn.microsoft.com/library/dn741336.aspx (vlastní zpracování)

Dalším krokem bude vytvoření potřebných tabulek pro projekt v naší data-

bázi ve schématu mobilní služby. To můžeme provést přes webový portál Azure

anebo opět přímo z Visual Studia. Oba kanály můžeme využít i v budoucnu pro

administrování databáze. Při vytvoření nové tabulky nesmíme zapomenout na po-

vinný identifikační sloupec Id, který slouží jako primární klíč. V naší tabulce bude

každý řádek reprezentovat jednoho uživatele aplikace Scholasticus, který bude

identifikován číslem Microsoft účtu a uživatelským jménem. Dále budeme evidovat

celkovou procentuální úspěšnost zkoušení, počet správných a špatných odpovědí,

počet využití nápovědy a datum vytvoření záznamu a jeho následných úprav. Své

místo zde má i sloupec Version, který najde uplatnění později při řešení konfliktu

mezi lokálními a cloudovými daty.

Page 60: UNICORN COLLEGEprev.unicorncollege.cz/european-it-center/jindra... · 3.7 Framework Caliburn.Micro 36 4 Představení aplikace 37 4.1 Vytváření a editace slovníků 37 4.2 Zkoušení

60

Obrázek 35: Schéma tabulky UserStatistics

Zdroj: Portál správy SQL Azure (vlastní zpracování)

Nyní již následují úpravy na straně aplikace. Klienta pro přístup do Mobilní

služby již náš projekt obsahuje z implementací popsaných v předcho-

zích kapitolách. Nyní si vytvoříme třídu UserStatistic jejíž instance budou repre-

zentovat jednotlivé statistiky uživatelů a koresponduje tedy se založenou tabulkou

a představuje náš datový model. Názvy sloupců jsou vlastně JSON elementy. Pro

vývojáře, který s platformou Azure začínají, je vhodné si z portálu stáhnout před-

připravený jednoduchý projekt mobilní služby, který následně přidají do vlastního

řešení aplikace ve Visual Studiu. Tento projekt usnadní propojení existující aplika-

ce s mobilní službou a celou implementaci zjednoduší, jelikož například zahrnuje

databázový kontext a kontrolér pro práci s tabulkou a s HTTP požadavky. Násled-

ně je ovšem nutné provést řadu úprav, tak aby projekt mobilní služby odpovídal

našemu požadovanému datovému modelu. Úpravou musí projít nejenom již zmi-

ňovaný kontrolér, ale i takzvaný Data Transfer Object, což je objekt namapovaný

na data, která máme v databázi a ve své konečné podobě je velmi blízký třídě

UserStatistic.

Page 61: UNICORN COLLEGEprev.unicorncollege.cz/european-it-center/jindra... · 3.7 Framework Caliburn.Micro 36 4 Představení aplikace 37 4.1 Vytváření a editace slovníků 37 4.2 Zkoušení

61

Obrázek 36: Kontrolér pro práci s tabulkou

Zdroj: Zdrojový kód aplikace – UserStatisticController.cs (vlastní zpracování)

Page 62: UNICORN COLLEGEprev.unicorncollege.cz/european-it-center/jindra... · 3.7 Framework Caliburn.Micro 36 4 Představení aplikace 37 4.1 Vytváření a editace slovníků 37 4.2 Zkoušení

62

Obrázek 37: Data Transfer Object statistiky uživatele

Zdroj: Zdrojový kód aplikace - MobileUserStatistic.cs (vlastní zpracování)

Aplikace musí řešit i stav, kdy je uživatel v režimu off-line neboli nemá pří-

stup k internetu. Pro tento případ využijeme balíček SQLite for Windows 8.1, kdy

budou uživatelská data primárně uložena v lokální databázi a z ní synchronizována

do cloudu. Pokud je uživatel dočasně v režimu off-line, synchronizace proběhne až

ve chvíli, kdy je opět on-line. Po spuštění aplikace nejdříve inicializujeme lokální

databázi a synchronizačního klienta. Veškeré běžné CRUD (Create, Read, Update,

Delete) operace pro mobilní služby pracují stejně, jako kdyby byla aplikace on-line,

s tím rozdílem, že se provádějí oproti lokální databázi (InsertAsync, UpdateA-

sync). Na server jsou odesílány pouze změny. Pro synchronizaci využíváme metodu

PushAsync, která odešle změny do cloudu a PullAsync pro získání dat z cloudo-

vé tabulky na serveru. Synchronizace bude probíhat na pozadí a to vždy při dokon-

čení testu, zobrazení statistiky a při zobrazení hlavního menu.

Page 63: UNICORN COLLEGEprev.unicorncollege.cz/european-it-center/jindra... · 3.7 Framework Caliburn.Micro 36 4 Představení aplikace 37 4.1 Vytváření a editace slovníků 37 4.2 Zkoušení

63

Obrázek 38: Inicializace a synchronizace databáze

Zdroj: Zdrojový kód aplikace – SyncTable.cs (vlastní zpracování)

V případě, že nastane konflikt mezi daty v lokální databázi a daty uloženými

v cloudu, necháme uživatele zvolit, kterou verzi dat si přeje zachovat. Konflikt mů-

že nastat například tak, že uživatel na prvním zařízení, které nemá dočasně

z nějakého důvodu dostupné síťové připojení, dokončí úspěšně zkoušení a údaje

o něm aplikace zapíše do lokální databáze, ale k synchronizaci do cloudu již ze

zjevných důvodů nedojde. Později na druhém zařízení, které má dostupné síťové

připojení, opět stejný uživatel úspěšně dokončí zkoušení a data se nejprve propíšou

do lokální databáze a později i do cloudu. Nyní se vrátí zpět k prvnímu zařízení,

které je již on-line a to se pokusí synchronizovat data s cloudovou tabulkou a dete-

kuje konflikt, neboť se pokouší modifikovat data, která již byla mezitím změněna.

Problém vyřešíme tak, že vytvoříme třídu SyncHandler, která implementuje ob-

služnou rutinu IMobileServiceSyncHandler. Tato třída je zavolána při každé ope-

raci Push (odeslání dat na server) a pokud dojde k výjimce MobileServicePrecon-

ditionFailedException, tak víme, že nastal konflikt mezi lokálními a cloudovými

daty a zobrazíme uživateli varování s možností zvolit požadovanou verzi dat. Pro

práci s lokální databází SQLite lze doporučit doplněk do vývojového prostředí Vi-

sual Studio s názvem SQLite Toolbox. Tento doplněk přidává několik funkcí, které

pomáhají databázi spravovat. Svoje uplatnění nalezne hlavně v počáteční fázi im-

plementace lokální databáze do aplikace a řešení kolizních stavů mezi lokální

a cloudovou databází.

Page 64: UNICORN COLLEGEprev.unicorncollege.cz/european-it-center/jindra... · 3.7 Framework Caliburn.Micro 36 4 Představení aplikace 37 4.1 Vytváření a editace slovníků 37 4.2 Zkoušení

64

Obrázek 39: Konflikt mezi lokální a cloudovou statistikou

Zdroj: Aplikace Scholasticus (vlastní zpracování)

Pro dotazování do databáze využíváme deklarativní jazyk LINQ (Language

INtegrated Query), který je součástí jazyka C#. Dotaz je následně převeden na

HTTP REST dotazy a na serverové straně tedy není nutný žádný kód.

Obrázek 40: Načtení statistiky uživatele

Zdroj: Zdrojový kód aplikace – StatisticViewModel.cs (vlastní zpracování)

5.4 Úložiště

Nyní se zaměříme na službu Úložiště, která se jeví pro potřeby naší aplikace, kon-

krétně pro funkcionalitu Tržiště, jako ideální. Služba je opět poskytována

v několika úrovních, které jsou blíže popsány v tabulce 3.

Page 65: UNICORN COLLEGEprev.unicorncollege.cz/european-it-center/jindra... · 3.7 Framework Caliburn.Micro 36 4 Představení aplikace 37 4.1 Vytváření a editace slovníků 37 4.2 Zkoušení

65

Tabulka 3: Úrovně služby Úložiště

Locally Redundant Storage (LRS)

Redundance Synchronní kopie dat v rámci jednoho datového centra

Počet kopií 3

Proč použít Pro levné lokální úložiště nebo z regulačních důvodů

SLA 99.9% čtení / zápis

Zone Redundant Storage (ZRS)

Redundance Kopie dat napříč různými datovými centry v rámci jednoho regionu

Počet kopií 3

Proč použít Vyšší odolnost oproti LRS

SLA 99.9% čtení / zápis

Geographically Redundant Storage (GRS)

Redundance Stejné jako LRS a navíc více asynchronní kopií do stovky kilometrů vzdálených datových center

Počet kopií 6

Proč použít Ochrana proti velkému výpadku nebo přírodní katastrofě

SLA 99.9% čtení / zápis

Read-Access Geographically Redundant Storage (RA-GRS)

Redundance Stejné jako GRS a navíc další přístup pro čtení ve druhém datovém centru

Počet kopií 6

Proč použít Poskytuje přístup pro čtení údajů během výpadku, pro maximální dostupnost dat a trvanli-vost

SLA 99.99% čtení / 99.9% zápis

Zdroj: http://azure.microsoft.com/en-us/pricing/details/storage/ (vlastní zpracování)

Pro naši potřebu využijeme základní úroveň Locally Redundant Storage, je-

likož námi ukládaná data nebudou natolik zásadního charakteru, abychom případ-

ný výpadek považovali za kritický. Pro sdílení slovníků budeme používat typ služby

Blob, který je pro uchovávání souborů ve formátu XML ideální. Pro lepší přehled-

nost v seznamu nabízených slovníků jednotlivé soubory ve sdíleném úložišti dopl-

níme také o metadata s informací o příslušném slovníku. V první řadě opět na por-

tále Microsoft Azure Management Portal založíme novou službu Úložiště, kde vy-

bereme požadovanou lokalitu, úroveň služby a zadáme název našeho úložiště

(URI). Tím získáme specifické URL koncových bodů služby Úložiště pro jednotlivé

typy služeb.

Page 66: UNICORN COLLEGEprev.unicorncollege.cz/european-it-center/jindra... · 3.7 Framework Caliburn.Micro 36 4 Představení aplikace 37 4.1 Vytváření a editace slovníků 37 4.2 Zkoušení

66

Obrázek 41: Koncové body služby Úložiště

Zdroj: https://manage.windowsazure.com/ (vlastní zpracování)

Po dokončení jednoduché konfigurace můžeme začít Úložiště používat.

K přístupu do úložiště budeme využívat přístupové klíče automaticky vygenerova-

né během aktivace služby. Tyto klíče jsou dostupné k zobrazení na portále Azure

a je možné je v případě potřeby přegenerovat.

Page 67: UNICORN COLLEGEprev.unicorncollege.cz/european-it-center/jindra... · 3.7 Framework Caliburn.Micro 36 4 Představení aplikace 37 4.1 Vytváření a editace slovníků 37 4.2 Zkoušení

67

Obrázek 42: Přístupové klíče do Úložiště

Zdroj: https://manage.windowsazure.com/ (vlastní zpracování)

V tuto chvíli je nutné nakonfigurovat přístup do služby Úložiště v aplikaci

Scholasticus. V našem případě to učiníme tak, že v souboru App.xaml.cs, který je

výchozím bodem naší aplikace, deklarujeme koncový bod služby typu Blob a klien-

ta CloudBlobClient pro práci s bloby. Využijeme zde klíče a specifické URL konco-

vého bodu získané při konfiguraci služby na portále. Do našeho projektu ve Visual

Studiu, také doplníme NuGet balíček WindowsAzure.Storage, který umožní využí-

vat v aplikaci službu Úložiště Azure.

Obrázek 43: Přístup do služby Úložiště z aplikace

Zdroj: Zdrojový kód aplikace – App.xaml.cs (vlastní zpracování)

Page 68: UNICORN COLLEGEprev.unicorncollege.cz/european-it-center/jindra... · 3.7 Framework Caliburn.Micro 36 4 Představení aplikace 37 4.1 Vytváření a editace slovníků 37 4.2 Zkoušení

68

Jak již bylo řečeno, soubory slovníku pro sdílení na Tržišti budou v úložišti

uchovávány v podobě blobů v rámci jednoho kontejneru, který jsme pojmenovali

dictionaries. Vytvoření kontejneru je otázkou pouze několika kliknutí na portále

Microsoft Azure Management Portal. Při nahrávání souboru do úložiště nejdříve

získáme odkaz na náš kontejner, načteme si požadovaný soubor pro sdílení a na-

konec získáme odkaz na blob kam asynchronně nahraje soubor zavoláním metody

UploadFromFileAsync (obrázek 44). Po vytvoření blobu doplníme metadata

s informacemi o slovníku jako jsou název, autor, popis, jazyky, kategorie, velikost

souboru a datum nahrání do kontejneru. Cílem je, aby ostatní uživatelé získali co

nejvíce údajů, na základě kterých se rozhodnou zda je pro ně slovník zajímavý

a mají si ho stáhnout do své lokální knihovny. Při nastavování metadat jsme nara-

zili na problém s českou diakritikou, jelikož povolené jsou pouze znaky ASCII. Ře-

šením je využití metody Uri.EscapeUriString, která převede všechny znaky na he-

xadecimální vyjádření a díky tomu je možno v této podobě metadata v úložišti na-

stavit. Pro pozdější zobrazení informací o slovníku v seznamu na Tržišti je zpět

převedeme pomocí metody Uri.UnescapeDataString. Samotných dat v souboru se

tato konverze nedotkne.

Obrázek 44: Vytvoření blobu

Zdroj: Zdrojový kód aplikace – ShopStorage.cs (vlastní zpracování)

Page 69: UNICORN COLLEGEprev.unicorncollege.cz/european-it-center/jindra... · 3.7 Framework Caliburn.Micro 36 4 Představení aplikace 37 4.1 Vytváření a editace slovníků 37 4.2 Zkoušení

69

Pro získání všech dostupných sdílených slovníků v kontejneru dicitionaries

využijeme metodu ListBlobsSegmentedAsync. Tato asynchronní metoda na jedno

zavolání vrátí maximálně pět tisíc blobů a pokračovací znak v případě, že je

v kontejneru větší počet blobů. [5, s. 215] Z tohoto důvodu voláme metodu ve

smyčce do té doby, než vrátí nulový pokračovací znak a díky tomu víme, že je na-

čtení kompletní. Pro takto získanou kolekci položek musíme ještě načíst metadata

a vlastnosti blobů pomocí metody FetchAttributesAsync. Ve chvíli, kdy uživatel

vybere slovník ke stažení, postupujeme podobně jako u nahrávání. Nejdříve získá-

me odkaz na kontejner a poté odkaz na blob. Následně blob uložíme do lokálního

souboru na pevný disk do roamingové adresáře naší aplikace zavoláním metody

DownloadToFileAsync a zařadíme ho tak do uživatelské knihovny. Uživatelům

chceme taktéž umožnit ze sdíleného úložiště smazat ty slovníky, které z nějakého

důvodu již nechtějí nabízet ostatním ke stažení. Podmínkou ovšem je, že jsou jejich

autorem. Postup je opět stejný, získáme odkaz na blob se slovníkem který chceme

odstranit a zavoláme metodu Delete.

Obrázek 45: Načtení blobů

Zdroj: Zdrojový kód aplikace – ShopStorage.cs (vlastní zpracování)

5.5 Notifikační služby

Poslední službou z nabídky Microsoft Azure, kterou budeme implementovat do

naší aplikace pro Windows Store, budou Notifikační služby za pomoci služby Cen-

tra oznámení. Aplikace bude nejenom přijímat notifikační zprávy, ale bude je

i odesílat. V aplikaci Scholasticus využijeme různé typy notifikačních služeb.

Page 70: UNICORN COLLEGEprev.unicorncollege.cz/european-it-center/jindra... · 3.7 Framework Caliburn.Micro 36 4 Představení aplikace 37 4.1 Vytváření a editace slovníků 37 4.2 Zkoušení

70

V první řadě to budou notifikační zprávy (toast notifications), které budou všechny

uživatele informovat o tom, že na Tržiště byl vložen nový slovník. Zpráva se zobrazí

v pravém horním rohu obrazovky a po několika vteřinách zmizí. S ohledem na na-

stavení operačního systému je doplněna i zvukovým oznámením. Tyto notifikace

budou rozesílány na všechna zařízení registrovaná k odběru notifikací z našeho

kanálu, tedy na ty, kde je aplikace nainstalována. Dále využijeme takzvanou aktivní

dlaždici aplikace (tile notifications), tedy dlaždici umístěnou na úvodní obrazovce

sloužící jako zkratka ke spuštění programu, která zobrazuje aktuální informace

vztahující se k aplikaci. Zde budeme taktéž uvádět informace o vložení nových

slovníků na Tržiště. Tato dlaždice bude navíc doplněna v pravém dolním rohu

o takzvaný odznak (badge), který bude uvádět aktuální počet slovníku ve sdíleném

úložišti, Tržišti. Při počtu větším jak 99 bude zobrazena hodnota 99+. Dlaždice

může mít různé velikosti, typicky malou, střední a velkou. Malá není vhodná pro

zobrazování informací s ohledem na nedostatek místa, a proto budeme definovat

grafické rozložení údajů pouze pro střední a velkou dlaždici. Veškeré notifikace

bude uživatel dostávat i ve chvíli, kdy aplikace nepoběží.

Obrázek 46: Aktivní dlaždice aplikace

Zdroj: Aplikace Scholasticus (vlastní zpracování)

V rámci notifikací jsme museli vyřešit problém s možnými rozdílnými loka-

lizacemi aplikace jednotlivých uživatelů. Jelikož v našem případě odeslání notifi-

kace inicializuje jednotlivý uživatel vložením slovníku do sdíleného úložiště, byla

by tato zpráva v základní implementaci notifikačních služeb odeslána v jazyce da-

ného uživatele a přijali by ji v této podobě všechna zařízení bez rozlišení, což je sa-

mozřejmě nežádoucí. Jedním z řešení by mohlo být například odeslání notifikace

ve všech aplikací podporovaných jazycích a jednotlivá zařízení by se pak registro-

vala k odběru notifikací pouze ve svém jazyce. V aplikaci Scholasticus jsme pro-

blém vyřešili jinak, jednodušeji a z našeho pohledu i elegantněji. Konkrétně za

pomocí univerzálních grafických symbolů. V rámci zpráv předáváme dvě informa-

ce, název nového slovníku a jeho autora. Použijeme tedy jeden symbol pro slovník

doplněný jeho názvem a jeden symbol pro autora doplněný o jeho uživatelské jmé-

Page 71: UNICORN COLLEGEprev.unicorncollege.cz/european-it-center/jindra... · 3.7 Framework Caliburn.Micro 36 4 Představení aplikace 37 4.1 Vytváření a editace slovníků 37 4.2 Zkoušení

71

no. Výsledná zpráva je přehledná, bez zbytečných informací navíc (obrázek 47).

Nicméně možnost zaslat do jednotlivých zařízení lokalizované notifikace imple-

mentujeme taktéž. V budoucnu můžeme chtít zaslat uživatelům například lokalizo-

vanou informaci o nové verzi aplikace a je dobré, aby na to byl náš program při-

praven.

Obrázek 47: Notifikační zpráva

Zdroj: Aplikace Scholasticus (vlastní zpracování)

Podmínkou pro využití notifikačních služeb Azure je registrace aplikace na

portále Dev Center for Windows, získání identifikačního čísla klienta, sdíleného

tajného klíče a jedinečného identifikátoru aplikace pro Windows Store. V projektu

taktéž musí být nainstalovaný balíček WindowsAzure.MobileServices. Všechny

kroky jsme již provedli při implementaci autentizace v kapitole 5.1 Autentizace.

V rámci projektu ve Visual Studiu můžeme využít průvodce konfigurace mobilní

služby pro aktivování notifikací s názvem Add Push Notification Wizard. Je to be-

zesporu účinný pomocník, ale ve chvíli, kdy již máme některé služby Azure v pro-

jektu implementovány, může dojít k přepsání existujících nastavení anebo k jejich

duplikaci. Příkladem může být URL pro přesměrování uživatele nastavené na por-

tále Web Live Services během implementace autentifikačních služeb. Zde jsme do

URL vkládali URI služby doplněné o postfix signin-microsoft. Toto nastavení zmí-

něný průvodce přepíše a tím autentifikaci znevalidní. Vhodnější je proto provést

nastavení samostatně. Na portále Microsoft Azure Management Portal vytvoříme

novou službu Notification Hub (Centrum oznámení) a poté v záložce Configure

vložíme do oddílu Windows Notification Settings jedinečný identifikátor aplikace

a tajný klíč. Z karty View Connection String, kterou najdeme pod záložkou Dasho-

ard, si ještě poznamenáme připojovací řetězce, které použijeme později. Tím má-

me hotovu konfiguraci notifikačních služeb na portále Azure pro práci s WNS.

Na straně našeho projektu začneme tím, že v Package.appxmanifest v zá-

ložce Application nastavíme v oddíle Notification atribut Toast capable na Yes

a povolíme tak aplikaci možnost vyvolat notifikaci. Dále jsme si v projektu založili

Page 72: UNICORN COLLEGEprev.unicorncollege.cz/european-it-center/jindra... · 3.7 Framework Caliburn.Micro 36 4 Představení aplikace 37 4.1 Vytváření a editace slovníků 37 4.2 Zkoušení

72

třídu PushRegistrations s metodou RegChannel, která je volána při každém startu

aplikace, vytváří komunikační kanál a registruje zařízení v našem Centru oznáme-

ní k odběru notifikací. Jelikož komunikační kanál může expirovat, je nutné toto

učinit při každém startu. V rámci této třídy se registrujeme k odběru notifikací

v aktuálním jazyce uživatelského prostředí aplikace. Jak již ale bylo uvedeno výše,

budeme v našem případě zasílat univerzální notifikace bez rozlišení kategorií alias

jazyků.

Obrázek 48: Registrace k odběru notifikací

Zdroj: Zdrojový kód aplikace - PushRegister.cs (vlastní zpracování)

Jelikož chceme, aby aplikace Scholasticus mohla oznámení na všechna re-

gistrovaná zařízení přes Centrum oznámení také odesílat, vytvoříme si v našem

projektu mobilní služby další kontroléry. Po jednom pro každý typ notifikací,

ToastController pro notifikační zprávy, TileController pro aktualizaci živé dlaždice

a BadgeController pro změnu údaje o počtu sdílených slovníku ve znaku na dlaždi-

ci. Kontroléru předáváme objekt typu JObject (kolekce párů klíče a hodnoty)

s informacemi o nově přidaném slovníku či o počtu slovníku aktuálně dostupných

na Tržišti, ze kterého vytvoříme XML pro konkrétní druh notifikace. Při vytváření

XML je vhodné se inspirovat katalogem šablon notifikací, který je dostupný na

https://msdn.microsoft.com/en-us/library/windows/apps/hh761494.aspx a zvolit

vhodnou šablonu. Odeslání notifikační zprávy provedeme zavoláním metody Ser-

vices.Push.SendAsync(message), kde je v parametru pouze zpráva bez rozlišení

kategorie a bude tedy doručena všem zařízením. Obdobným způsobem implemen-

tuje i kontroléry pro aktivní dlaždici

Page 73: UNICORN COLLEGEprev.unicorncollege.cz/european-it-center/jindra... · 3.7 Framework Caliburn.Micro 36 4 Představení aplikace 37 4.1 Vytváření a editace slovníků 37 4.2 Zkoušení

73

Obrázek 49: XML Šablona pro Toast notifikaci

Zdroj: https://msdn.microsoft.com/en-us/library/windows/apps/hh761494.aspx

Veškeré případné chyby spojené s odesláním notifikace evidujeme v logu,

dostupném na portále Microsoft Azure Management Portal pod naší mobilní

službou. Nesmíme také zapomenout publikovat veškeré změny v projektu mobilní

služby v našem řešení do Microsoft Azure pomocí volby Publish ve Visual Studiu.

Výsledná implementace kontroléru vypadá jako na obrázku 50.

Page 74: UNICORN COLLEGEprev.unicorncollege.cz/european-it-center/jindra... · 3.7 Framework Caliburn.Micro 36 4 Představení aplikace 37 4.1 Vytváření a editace slovníků 37 4.2 Zkoušení

74

Obrázek 50: Kontrolér pro notifikační zprávu

Zdroj: Zdrojový kód aplikace – ToastController.cs (vlastní zpracování)

Při vložení nového slovníku na Tržiště provedeme s pomocí našich kontrolé-

rů odeslání jednotlivých notifikací.

Obrázek 51: Odeslání notifikací přes ApiController

Zdroj: Zdrojový kód aplikace – DictionaryAdministrationViewModel.cs (vlastní zprac.)

Page 75: UNICORN COLLEGEprev.unicorncollege.cz/european-it-center/jindra... · 3.7 Framework Caliburn.Micro 36 4 Představení aplikace 37 4.1 Vytváření a editace slovníků 37 4.2 Zkoušení

75

Závěr

Cloudovou platformu Microsoft Azure můžeme chápat jako kolekci vzájemně spo-

lupracujících služeb a nástrojů, které nám umožňují vytvořit cloudovou aplikaci

v takovém rozsahu, který bude odpovídat našim skutečným potřebám. Jak jsme si

sami prakticky vyzkoušeli při vývoji ukázkové aplikace Scholasticus a následně

demonstrovali v textu práce, využitím cloudových služeb Azure si výrazně ulehčíme

a zrychlíme vývoj aplikací pro Windows Store. Funkcionalitu, kterou do cloudu

přesuneme, nemusíme pracně vytvářet a odpadá i případná potřeba provozovat

vlastní serverové prostředí. Můžeme se tedy plně soustředit na vývoj samotné apli-

kace. Nároky na následnou správu jsou nízké a nemusíme řešit věci jako zálohová-

ní, škálování, způsob monitorování a případnou obnovu při ztrátě dat. Platforma

Azure takto poskytuje i pro malé projekty služby, které by jinak pro ně byly nedo-

stupné.

Nespornou výhodou je i relativní nenáročnost základní implementace clou-

dových služeb Azure do aplikací pro Windows Store, se kterou si poradí i začínající

vývojář. Díky tomu mohou být cloudové služby součástí i jednodušších aplikací. Při

vývoji aplikací pro Windows Store si ze široké nabídky služeb vybereme zejména

Mobilní služby, které přinášejí zajímavou kombinaci různých funkčností od data-

báze přes notifikační zprávy až po autentifikaci uživatelů a poskytují stabilitu

a škálovatelnost cloudu. V našem případě jsme v aplikaci Scholasticus z cloudo-

vých služeb platformy Azure v první řadě využili možnost autentizace uživatelů

a s tím spojenou správu identity přes poskytovatele Microsoft Account. Dále jsme

implementovali cloudovou SQL databázi, která slouží pro ukládání hodnocení uži-

vatele a následně jako zdroj statistik úspěšnosti uživatelů. Proto, aby aplikace moh-

la reálně sloužit v komunitě uživatelů, jsme využili službu Úložiště, která nám

umožnila nabídnout uživatelům možnost své slovníky vzájemně sdílet na síti. Po-

slední součást platformy, kterou jsme implementovali, byly notifikační služby. Vý-

sledkem je plně funkční aplikace pro Windows Store, která je připravena pomoci

uživateli s výukou cizích jazyků a rozšíření jeho slovní zásoby.

Za poslední měsíce přináší Microsoft Azure téměř každý týden nějakou no-

vou funkcionalitu či službu. Dle tempa inovací lze soudit, že Microsoft vidí v clou-

dových službách velkou budoucnost. Problémem platformy Azure tedy není nedo-

statek funkčností, ale z našeho pohledu prozatím spíše menší rozšířenost mezi vý-

Page 76: UNICORN COLLEGEprev.unicorncollege.cz/european-it-center/jindra... · 3.7 Framework Caliburn.Micro 36 4 Představení aplikace 37 4.1 Vytváření a editace slovníků 37 4.2 Zkoušení

76

vojáři. Jako drobné negativum neustálého vývoje platformy vidíme z toho plynoucí

rychlé zastarávání odborné literatury a popisů způsobů implementace. Tento stav

se ale mění každým dnem. Jen v průběhu doby, kdy vznikala tato práce, jsme pozo-

rovali, jak komunita uživatelů narůstá. Důvodem, proč využívat Microsoft Azure

jsou nejenom notoricky známé výhody cloudu, ale také přístup k nejnovějším tech-

nologiím. Tato práce může pomoci nováčkům či zkušenějším vývojářům, kteří pro-

zatím nemají s cloudem zkušenosti, s rozhodnutím, zda platformu Microsoft Azure

zařadit mezi svoje vývojové nástroje a na které služby se přitom zaměřit. Dle naše-

ho názoru tam určitě patří.

Page 77: UNICORN COLLEGEprev.unicorncollege.cz/european-it-center/jindra... · 3.7 Framework Caliburn.Micro 36 4 Představení aplikace 37 4.1 Vytváření a editace slovníků 37 4.2 Zkoušení

77

Conclusion

The Microsoft Azure cloud platform can be understood as a collection of services

and tools that cooperate with one another and that can be used to develop a cloud

application whose extent will meet our demands. As we have illustrated on the ex-

ample of the development of a sample application, Scholasticus, and as we have

shown later in the thesis, using the Azure cloud services makes the development

of applications for Windows Store significantly easier and faster. The functions

that are transferred to the cloud no longer need to be developed and there is no

need to operate a separate server. We can therefore put all our efforts into the ap-

plication as such. The demands in terms of operation of the application are low

and the developer does not waste his or her time on backups, scaling, monitoring

and restoration of lost data. Thus, the Azure platform provides even small projects

with services that would otherwise not be available.

One of the big advantages of the Azure platform is also how relatively easily

can the Azure cloud services be implemented in applications intended for Win-

dows Store – even a beginner can handle the process. Thanks to that, the cloud

services can be incorporated even into simple applications. As far as the develop-

ment of applications for Windows Store is concerned, we should point out the Mo-

bile services which offer an interesting combination of various functions, such as

databases, notifications or authentication, and which, at the same time, offer

the stability and scaling of a cloud. In our Scholasticus project, we have utilized

especially the service of authentication of users and the related administration of

identity through the provider of Microsoft Account. Furthermore, we have imple-

mented the SQL cloud database which is used for saving user ratings and for sub-

sequent calculation of statistics of the success of individual users. Because we

wanted the application to serve a whole community of users, we have used the

Storage service that enables the users to share their dictionaries on the web. The

last part of the platform that has been implemented was notification. The result is

a fully-functional application for Windows Store which helps its users to learn lan-

guages and to develop their vocabulary.

In the past months, Microsoft Azure has introduced a new function or ser-

vice almost every single week. This rapid innovation shows that Microsoft under-

stands cloud services as important for the future. The main problem of the Azure

Page 78: UNICORN COLLEGEprev.unicorncollege.cz/european-it-center/jindra... · 3.7 Framework Caliburn.Micro 36 4 Představení aplikace 37 4.1 Vytváření a editace slovníků 37 4.2 Zkoušení

78

platform is not an insufficient offer of quality services, but rather the fact that

the platform is not yet commonly used by developers. A minor drawback of

the rapid innovation of the platform is that manuals and professional literature

devoted to it quickly become obsolete. However, the situation changes every day.

Even during the period when this thesis was being written, I have witnessed

the community of the users of the platform expand. The reason to use Microsoft

Azure is not only the well-known advantages of the cloud, but also access to

the most recent technology.

This thesis can help beginners as well as skilled developers who do not have

much experience with the cloud, and it can help them decide whether they should

use Microsoft Azure as a development tool (which I believe they should) and which

services they should focus on.

Page 79: UNICORN COLLEGEprev.unicorncollege.cz/european-it-center/jindra... · 3.7 Framework Caliburn.Micro 36 4 Představení aplikace 37 4.1 Vytváření a editace slovníků 37 4.2 Zkoušení

79

Seznam použitých zdrojů

1. MICROSOFT. Microsoft.com [online]. 2014 [cit. 2014-11-10]. Dostupné z:

<http://www.microsoft.com/cs-cz/server-cloud/windows-azure/default.aspx>

2. KRISHNAN, Sriram. Programming Windows Azure. 1.vyd.

Sebastopol: O’Reilly Media, 2010, 345 s. ISBN: 978-0-596-80197-7.

3. DOČEKAL, Daniel. LUPA.CZ. In: Cloud computing ... je všude okolo nás

[online]. 2010-05-24 [cit. 2014-11-14]. Dostupné z:

<http://www.lupa.cz/clanky/cloud-computing-je-vsude-okolo-nas/>

4. LACKO, Ľuboslav. Windows Azure pre vývojárov a IT špecialistov. Bratislava:

Microsoft, 2012, 1.vyd., 92 s.

5. REDKAR, Tejaswi. Windows Azure Platform. 1.vyd. New York: Apress, 2009,

608 s. ISBN: 978-1-4302-2479-2.

6. Wikipedia [online]. 2014 [cit. 2014-11-21]. Dostupné z:

<http://en.wikipedia.org/wiki/Microsoft_Azure>

7. BAI, Haishi. Zen of Cloud: Learning Cloud Computing by Examples on

Windows Azure. 1.vyd. Boca Raton: CRC Press, 2014, 270 s. ISBN: 978-

1482215809.

8. MICROSOFT. Dokumentace [online]. 2014 [cit. 2014-11-18]. Dostupné z:

<http://azure.microsoft.com/cs-cz/documentation/>

9. CHAUHAN, Akvash,. Introduction Microsoft Azure HDInsight. 1.vyd.

Redmond: Microsoft Press, 2014, 123 s. ISBN: 978-0-7356-8551-2.

10. MACKENZIE, Niel. developerFusion. In: Introduction to Windows Azure -

What you should know [online]. 2011-05-17 [cit. 2014-11-21]. Dostupné z:

<http://www.developerfusion.com/article/119329/overview-of-windows-

azure/>

Page 80: UNICORN COLLEGEprev.unicorncollege.cz/european-it-center/jindra... · 3.7 Framework Caliburn.Micro 36 4 Představení aplikace 37 4.1 Vytváření a editace slovníků 37 4.2 Zkoušení

80

11. MICROSOFT. Služby [online]. 2014 [cit. 2014-11-20]. Dostupné z:

<http://azure.microsoft.com/cs-cz/services/>

12. LACKO, Ľuboslav. Mobilné služby na platforme Microsoft Azure.

Bratislava: Microsoft, 2012, 77 s.

13. JOHNSON, Bruce. Windows Azure® Mobile Services. 1.vyd.

Indianapolis: Wrox, 2013, 160 s. ISBN: 978-1-118-67853-4.

14. HALSEY, Mike. Beginning Windows 8.1. 1.vyd. New York City: Apress, 2013,

612 s. ISBN: 978-1-4302-6359-3.

15. HANÁK, Jan. Vývoj moderných WinRT programov pre systém Windows 8.

1.vyd. Bratislava: Microsoft, 2012, 106 s.

16. BECHNYSKÝ, Štěpán. MSDN Blogs. In: Začínáme vyvíjet aplikace pro

Windows 8 v C# a XAML [online]. 2013-02-26 [cit. 2014-11-17]. Dostupné z:

<http://blogs.msdn.com/b/vyvojari/archive/2013/02/26/zaciname-vyvijet-

aplikace-pro-windows-8-v-c-a-xaml-dil-1.aspx>

17. MICROSOFT. Application lifecycle (Windows Runtime apps) [online]. 2014

[cit. 2014-11-16]. Dostupné z: <http://msdn.microsoft.com/en-

us/library/windows/apps/hh464925.aspx>

18. VICE, Ryan,. MVVM Survival Guide for Enterprise Architectures in.

Birmingham, Mumbai: Packt Publishing, 2012, 490 s. ISBN: 978-1-84968-

342-5.

19. NATHAN, Adam. Windows® 8.1 Apps with XAML and C# Unleashed. 1.vyd.

Indianapolis: SAMS, 2013, 880 s. ISBN: 978-0-672-33708-6.

20. JECHA, Tomáš. Jazyk XAML [online]. 2012-02-02 [cit. 2015-02-11]. Dostupné

z: <http://www.dotnetportal.cz/clanek/198/Jazyk-XAML>

21. FREEMAN, Adam. Metro Revealed: Building Windows 8 Apps with XAML

and C#. 1.vyd. New York: Apress, 2012, 88 s. ISBN: 978-1-4302-4492-9.

Page 81: UNICORN COLLEGEprev.unicorncollege.cz/european-it-center/jindra... · 3.7 Framework Caliburn.Micro 36 4 Představení aplikace 37 4.1 Vytváření a editace slovníků 37 4.2 Zkoušení

81

22. BERNARD, Borek. Úvod do architektury MVC [online]. 2009-05-07

[cit. 2014-11-15]. Dostupné z: <http://www.zdrojak.cz/clanky/uvod-do-

architektury-mvc/>

23. JIRAVA, Jaroslav. Používáme Model-View-ViewModel – úvod [online]. 2010-

02-02 [cit. 2014-11-15]. Dostupné z: <http://xaml.cz/wpf/pouzivame-model-

view-viewmodel-uvod/>

24. EISENBERG, Rob. CaliburnMicro.com [online]. 2014 [cit. 2014-11-15].

Dostupné z: <http://caliburnmicro.com/>

25. BAXTER-REYNOLDS, Matt,. Programming Windows Store Apps with C#.

1.vyd. Sebastopol: O’Reilly Media, 2014, 485 s. ISBN: 978-1-449-32085-0.

26. MICROSOFT. Microsoft Service Pricing [online]. 2015 [cit. 2015-1-3].

Dostupné z: <http://azure.microsoft.com/en-us/pricing/details/mobile-

services/>

Page 82: UNICORN COLLEGEprev.unicorncollege.cz/european-it-center/jindra... · 3.7 Framework Caliburn.Micro 36 4 Představení aplikace 37 4.1 Vytváření a editace slovníků 37 4.2 Zkoušení

82

Seznam použitých zkratek

Zkratka Význam Popis

.NET Microsoft .NET Frame-work

Prostředí potřebné pro běh aplikací a nabí-zející jak spouštěcí rozhraní, tak potřebné knihovny

API Application Programming Interface

Rozhraní pro programování aplikací

ASCII American Standard Code for Information Inter-change

Kódová tabulka, která definuje znaky an-glické abecedy a jiné znaky používané v informatice

C# C Sharp Objektově orientovaný programovací jazyk vyvinutý firmou Microsoft

CRUD Create, Read, Update, De-lete

Shrnuje čtyři základní operace nad zázna-mem v trvalém úložišti

DNS Domain Name System Hierarchický systém doménových jmen

HTTP Hypertext Transfer Proto-col

Internetový protokol určený pro výměnu hypertextových dokumentů

IaaS Infrastructure as a Service Infrastruktura jako služba

IIS Internet Information Ser-vices

Softwarový webový server s kolekcí rozši-řujících modulů

IP Internet Protocol Základní protokol pracující na síťové vrstvě

IT Information Technology Informační technologie

JSON JavaScript Object Notation Datový formát pro přenos serializovaných dat

LINQ Language Integrated Que-ry

Integrovaný jazyk pro dotazování

MSN Microsoft Network Kolekce internetových služeb společnosti Microsoft

MVC Modev-View-Controller Softwarová architektura

MVVM Model-View-ViewModel Softwarová architektura

OS Operating System Operační systém

PaaS Platform as a Service Platforma jako služba

PDC Professional Developer’s Conference

Konference softwarových vývojářů

PHP Hypertext Preprocessor Skriptovací programovací jazyk

REST Representational State Transfer

Cesta jak jednoduše vytvořit, číst, editovat nebo smazat informace ze serveru pomocí jednoduchých HTTP volání

SaaS Software as a Service Software jako služba

SDK Software Development Kit Soubor nástrojů pro vývoj software

SLA Service Level Agreement Označuje smlouvu sjednanou mezi posky-tovatelem služby a jejím konzumentem

SQL Structured Query Lan-guage

Standardizovaný strukturovaný dotazovací jazyk

TFVC Team Foundation Version Control

Centralizovaný systém pro správu verzí

UI User Interface Uživatelské rozhraní

Page 83: UNICORN COLLEGEprev.unicorncollege.cz/european-it-center/jindra... · 3.7 Framework Caliburn.Micro 36 4 Představení aplikace 37 4.1 Vytváření a editace slovníků 37 4.2 Zkoušení

83

Zkratka Význam Popis

URI Uniform Resource Identi-fier

Textový řetězec s definovanou strukturou, který slouží k přesné specifikaci zdroje in-formací

URL Uniform Resource Locator Řetězec znaků s definovanou strukturou, který slouží k přesné specifikaci umístění zdrojů informací

VPN Virtual Private Network Virtuální privátní síť

WNS Windows Push Notificati-on Services

Služba pro zasílání notifikací

WPF Windows Presentation Foundation

Podmnožina .NET Frameworku, který pou-žívá značkovací jazyk XAML pro vytvoření uživatelsky bohatého rozhraní

XAML Extensible Application Markup Language

Značkovací jazyk využívaný k popisu gra-fického rozhraní

XML Extensible Markup Lan-guage

Univerzální značkovací jazyk

Page 84: UNICORN COLLEGEprev.unicorncollege.cz/european-it-center/jindra... · 3.7 Framework Caliburn.Micro 36 4 Představení aplikace 37 4.1 Vytváření a editace slovníků 37 4.2 Zkoušení

84

Seznam obrázků

Obrázek 1: Pohled na platformu Microsoft Azure .................................................... 15

Obrázek 2: Virtuální stroje ....................................................................................... 16

Obrázek 3: Cloudové služby ...................................................................................... 17

Obrázek 4: Weby ....................................................................................................... 18

Obrázek 5: Mobilní služby ........................................................................................ 19

Obrázek 6: Architektura služby Úložiště .................................................................. 21

Obrázek 7: Úvodní obrazovka Windows 8.1 ............................................................ 30

Obrázek 8: Přehled programovacích jazyků ............................................................ 32

Obrázek 9: Stavový diagram životního cyklu aplikace .............................................33

Obrázek 10: MVVM části a jejich interakce ............................................................. 36

Obrázek 11: Hlavní menu aplikace Scholasticus ...................................................... 37

Obrázek 12: Založení nové kategorie ....................................................................... 38

Obrázek 13: Editace slovníku ................................................................................... 39

Obrázek 14: XML soubor slovníku .......................................................................... 40

Obrázek 15: Administrace slovníků .......................................................................... 41

Obrázek 16: Zkoušení uživatele ............................................................................... 42

Obrázek 17: Statistika uživatele ............................................................................... 43

Obrázek 18: Tržiště .................................................................................................. 44

Obrázek 19: Panel nastavení aplikace....................................................................... 45

Obrázek 20: Registrace panelu nastavení ............................................................... 46

Obrázek 21: Nápověda v podobě popisku ................................................................. 47

Obrázek 22: Definice stylu tlačítka ........................................................................... 47

Page 85: UNICORN COLLEGEprev.unicorncollege.cz/european-it-center/jindra... · 3.7 Framework Caliburn.Micro 36 4 Představení aplikace 37 4.1 Vytváření a editace slovníků 37 4.2 Zkoušení

85

Obrázek 23: Styl a nápověda tlačítka........................................................................ 47

Obrázek 24: Kontrola připojení k internetu ............................................................ 48

Obrázek 25: Kontextové menu slovníku .................................................................. 48

Obrázek 26: Aplikační lišta ...................................................................................... 49

Obrázek 27: Vytvoření mobilní služby...................................................................... 52

Obrázek 28: Klient mobilní služby ........................................................................... 52

Obrázek 29: Nastavení API ....................................................................................... 54

Obrázek 30: Nastavení poskytovatele identit ........................................................... 55

Obrázek 31: Implementace přihlášení ...................................................................... 56

Obrázek 32: Přihlášení do aplikace Scholasticus ..................................................... 56

Obrázek 33: Implementace Api kontroléru ............................................................. 58

Obrázek 34: Získání uživatelského jména z kontroléru .......................................... 58

Obrázek 35: Schéma tabulky UserStatistics ............................................................ 60

Obrázek 36: Kontrolér pro práci s tabulkou ............................................................. 61

Obrázek 37: Data Transfer Object statistiky uživatele ............................................ 62

Obrázek 38: Inicializace a synchronizace databáze ................................................ 63

Obrázek 39: Konflikt mezi lokální a cloudovou statistikou .................................... 64

Obrázek 40: Načtení statistiky uživatele ................................................................. 64

Obrázek 41: Koncové body služby Úložiště ............................................................. 66

Obrázek 42: Přístupové klíče do Úložiště ................................................................. 67

Obrázek 43: Přístup do služby Úložiště z aplikace ................................................... 67

Obrázek 44: Vytvoření blobu ................................................................................... 68

Obrázek 45: Načtení blobů ...................................................................................... 69

Page 86: UNICORN COLLEGEprev.unicorncollege.cz/european-it-center/jindra... · 3.7 Framework Caliburn.Micro 36 4 Představení aplikace 37 4.1 Vytváření a editace slovníků 37 4.2 Zkoušení

86

Obrázek 46: Aktivní dlaždice aplikace ..................................................................... 70

Obrázek 47: Notifikační zpráva ................................................................................ 71

Obrázek 48: Registrace k odběru notifikací ............................................................. 72

Obrázek 49: XML Šablona pro Toast notifikaci ....................................................... 73

Obrázek 50: Kontrolér pro notifikační zprávu ......................................................... 74

Obrázek 51: Odeslání notifikací přes ApiController ................................................. 74

Page 87: UNICORN COLLEGEprev.unicorncollege.cz/european-it-center/jindra... · 3.7 Framework Caliburn.Micro 36 4 Představení aplikace 37 4.1 Vytváření a editace slovníků 37 4.2 Zkoušení

87

Seznam tabulek

Tabulka 1: Nabízené úrovně Mobilní služby Azure .................................................. 51

Tabulka 2: Nabízené úrovně služby SQL Azure ....................................................... 59

Tabulka 3: Úrovně služby Úložiště ........................................................................... 65

Page 88: UNICORN COLLEGEprev.unicorncollege.cz/european-it-center/jindra... · 3.7 Framework Caliburn.Micro 36 4 Představení aplikace 37 4.1 Vytváření a editace slovníků 37 4.2 Zkoušení

88

Seznam příloh

Příloha A – CD-ROM

CD je přiloženo do tištěné verze bakalářské práce.

Struktura CD:

BP_Instalační_balíček-Jindra_Pavel_6-4182-1 (složka)

o Scholasticus_AppPackage (složka)

Instalační balíček aplikace Scholasticus

o Postup_instalace.txt (soubor)

Popis postupu instalace aplikace Scholasticus

BP_Text-Jindra_Pavel_6-4182-1 (složka)

o BP_Jindra_Pavel_6-4182-1.pdf (soubor)

Text bakalářské práce v elektronické podobě

BP_Zdrojové_kódy-Jindra_Pavel_6-4182-1 (složka)

o Scholasticus_Project (složka)

Zdrojové kódy aplikace Scholasticus v podobě projektu Visual

Studia


Recommended