View
0
Download
0
Category
Preview:
Citation preview
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
Č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)
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.
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
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
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
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
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
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í.
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
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.
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í.
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ů-
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]
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.
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í
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ý
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]
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]
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]
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]
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]
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]
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
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]
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]
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
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ě
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.
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ž
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-
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]
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]
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.
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á-
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
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í)
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.
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.
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.
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.
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]
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.
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.
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
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í)
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í)
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]
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.
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
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-
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.
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]
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
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.
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-
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.
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.
61
Obrázek 36: Kontrolér pro práci s tabulkou
Zdroj: Zdrojový kód aplikace – UserStatisticController.cs (vlastní zpracování)
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.
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í.
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.
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.
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.
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í)
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í)
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.
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é-
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
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
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.
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.)
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ý-
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ří.
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
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.
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/>
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.
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/>
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í
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
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
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
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
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
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