VYSOKÁ ŠKOLA POLYTECHNICKÁ JIHLAVA Katedra elektrotechniky a informatiky Obor Aplikovaná informatika
Plánovač úkolů pro vzdálené spouštění aplikací bakalářská práce
Autor: Karel Sedmík Vedoucí práce: Ing. Jan Marek Jihlava 2013
Anotace Tato práce se zabývá komunikací mezi klientskou aplikací a serverem v prostředí .NET Framework. Klientská aplikace komunikuje se serverem prostřednictvím služby Windows Communication Foundation (WCF). Grafické rozhraní aplikace je navrženo technologii Windows Presentation Foundation (WPF). Ovládací prvky jsou provázány pomocí data bindingu s vlastnostmi tříd.
Klíčová slova Server, Klient, WPF, WCF, .NET Framework, C#
Abstract This work deals with the communication between the client application and server in the environment .NET Framework. Client application communicates with the server through Windows Communication Foundation (WCF). Graphical user interface is designed by technology Windows Presentation Foundation (WPF). The controls are bound by data binding with class properties.
Key words Server, Client, WPF, WCF, .NET Framework, C#
Prohlašuji, že předložená bakalářská práce je původní a zpracoval/a jsem ji samostatně. Prohlašuji, že citace použitých pramenů je úplná, že jsem v práci neporušil/a autorská práva (ve smyslu zákona č. 121/2000 Sb., o právu autorském, o právech souvisejících s právem autorským a o změně některých zákonů, v platném znění, dále též „AZ“). Souhlasím s umístěním bakalářské práce v knihovně VŠPJ a s jejím užitím k výuce nebo k vlastní vnitřní potřebě VŠPJ. Byl/a jsem seznámen s tím, že na mou bakalářskou práci se plně vztahuje AZ, zejména § 60 (školní dílo). Beru na vědomí, že VŠPJ má právo na uzavření licenční smlouvy o užití mé bakalářské práce a prohlašuji, že s o u h l a s í m s případným užitím mé bakalářské práce (prodej, zapůjčení apod.). Jsem si vědom/a toho, že užít své bakalářské práce či poskytnout licenci k jejímu využití mohu jen se souhlasem VŠPJ, která má právo ode mne požadovat přiměřený příspěvek na úhradu nákladů, vynaložených vysokou školou na vytvoření díla (až do jejich skutečné výše), z výdělku dosaženého v souvislosti s užitím díla či poskytnutí licence. V Jihlavě dne 27. 5. 2013
............................................... Podpis
Poděkování Na tomto místě bych rád poděkoval svému vedoucímu práce Ing. Janu Markovi za cenné zkušenosti a rady, které jsem získal díky němu při tvorbě programu a možnost vytvářet ho pod jeho vedením.
Obsah 1
Úvod.......................................................................................................................... 8
2
Využitelnost aplikace .............................................................................................. 10
3
2.1
Náhrada za plánovač úloh ve Windows ........................................................... 10
2.2
Užitečnost pro testování aplikací ..................................................................... 11
Volba technologii .................................................................................................... 12 3.1
Programovací jazyk C# .................................................................................... 12
3.1.1
Vlastnosti .................................................................................................. 12
Historie.................................................................................................................... 13 3.2
Windows Presentation Foundation a XAML ................................................... 14
WPF – Data binding ............................................................................................... 15 3.3
4
Windows Communication Foundation ............................................................ 16
3.3.1
Service (služba)......................................................................................... 17
3.3.2
Endpoint (koncový bod) ........................................................................... 17
3.3.3
Messages (SOAP zprávy) ......................................................................... 18
3.3.4
Další prvky ................................................................................................ 18
Vývoj aplikace ........................................................................................................ 19 4.1
Spirálový model ............................................................................................... 19
4.2
Specifikace požadavků a jejich analýza ........................................................... 21
4.2.1
Diagram případů užití ............................................................................... 22
4.2.2
Diagramy tříd ............................................................................................ 23
4.3
Návrh aplikace ................................................................................................. 26
4.3.1
Vývojové prostředí ................................................................................... 26
4.3.2
Použité komponenty ................................................................................. 27
4.3.3
Microsoft .NET Framework ..................................................................... 27
4.3.4
Bezpečnost ................................................................................................ 28
4.3.5
Upravená architektura klient – server ....................................................... 28
4.3.6
Možnosti klienta ....................................................................................... 28
4.3.7
Možnosti serveru....................................................................................... 29
4.4
Integrace a testování ......................................................................................... 29
4.4.1
Funkčnost .................................................................................................. 29
4.4.2
Použití ....................................................................................................... 29
4.4.3
Spolehlivost .............................................................................................. 30
4.4.4
Výkon........................................................................................................ 30
5
Srovnání s existujícími aplikacemi ......................................................................... 30
6
Uživatelská příručka ............................................................................................... 31
7
6.1
Ovládání na straně serveru ............................................................................... 31
6.2
Ovládání na straně klienta ................................................................................ 33
Závěr ....................................................................................................................... 35 7.1
Zhodnocení ....................................................................................................... 35
7.2
Možnosti dalšího rozšíření aplikace ................................................................. 35
Seznam použité literatury ............................................................................................... 36 Seznam obrázků .............................................................................................................. 38 Seznam použitých zkratek .............................................................................................. 39 Přílohy............................................................................................................................. 40
1 Úvod Během absolvování své povinné praxe jsem byl pověřen správou automatického testování účetního informačního systému. V této činnosti jsem se věnoval i tvorbě a úpravě skriptů, které tento účetní systém testovaly. Testování probíhá na počítačích připojených ve firemní síti, na kterých jsou tyto skripty spouštěny. Skript se vytváří za účelem otestování nové verze systému ještě předtím, než se dostane k zákazníkovi. Jeho úkolem je otestovat všechny agendy a funkce. V případě, že se aplikace neočekávaně ukončí, zobrazí se neočekávaný dialog či nezobrazí se dialog, který byl očekáván, neuloží se správný údaj na faktuře, tak tento skript zapíše chybové hlášení do logovacího souboru. Na konci testování se vyhodnotí všechny skripty, a pokud je v nějakém chybovém hlášení, tak musí být chyba okamžitě nahlášena analytikům a posléze bude programátorem opravena. Tento informační systém je také testován ručně, kde je simulováno chování zákazníka. Tyto úkony provádí analytici, kde každý otestuje svůj sektor, který má na starost a za který zodpovídá, že je funkční. Velkou nevýhodou je časová náročnost, jelikož analytik potřebuje třikrát více času na otestování nežli skript. Proto se v současné době vytváří každý měsíc nové skripty, který mají na starost otestovat nové funkce systému a tedy i zrychlit celý průběh testování. Databáze firmy jich obsahuje již stovky, ale přibývá také samotná správa. Díky tomuto jsem se dostal k návrhu bakalářské práce, ve které vytvořím program, který bude mít vlastní plánovač úkolů pro vzdálené spouštění skriptů na testovacích počítačích připojených ve firemní síti. Jelikož tato aplikace bude sloužit pro testování pouze ve firemní síti, nemusím se tedy zabývat řešením zabezpečení proti připojení z jiné sítě. Aplikace bude fungovat na bázi serveru a klienta. Na testovacích počítačích postačí, když bude spuštěna klientská část aplikace. Na počítači, na kterém se ovládá celé vzdálené spouštění, bude serverová část aplikace. V této části aplikace bude také plánovač, ve kterém bude možné naplánovat úlohy, které se v nastavený čas spustí na připojených klientech. 8
Aplikace bude vytvořena v programu Microsoft Visual Studio 2010, ve kterém jsem již aplikace vytvářel a mám s ním v celku dobré zkušenosti. Zvlášť výborně se s ním odlaďují chyby. Aplikace bude napsaná v programovacím jazyku C#. Jako technologii pro komunikaci mezi serverovou a klientskou částí použiji Windows Communication Foundation (WCF). Jelikož chceme, aby tato aplikace byla uživatelsky přívětivá, máme možnost na výběr grafického rozhraní (GUI), buď Windows Forms nebo Windows Presentation Foundation (WPF). Protože bych se chtěl díky této možnosti naučit něco nového, tak jsem si zvolil WPF. Nikdy předtím jsem se s touto technologii nesetkal, jen jsem měl pár informací od kolegů. Po dokončení práce by aplikace měla být rozšířitelná, aby mohla být jak klientská, tak serverová část použita jako služba a celé ovládání by probíhalo přes webový prohlížeč, se kterým by mohl pracovat kterýkoliv počítač ve firemní síti.
9
2 Využitelnost aplikace Hlavním důvodem vzniku této práce je usnadnění správy, která má za úkol plánovaně spouštět skripty. Její využití může být mnohem širší, zamyslíme-li se nad možnostmi jak ji lze dále využít
2.1 Náhrada za plánovač úloh ve Windows V podstatě by se dalo říct, že plánovač úkolu, který bude obsahovat serverová část mé aplikace, je velice podobný klasickému plánovači úloh, který je v každém systému Windows. Nebude mít sice tolik možností spouštění, pro základní spouštění a opakování úloh je však postačující. V případě, že bychom chtěli například nějakou úlohu spouštět neustále dokola, tedy po každém ukončení aplikace jí spustit znovu, anebo úlohy spouštět opakovaně v intervalu menším než 1 minuta, tak bychom s plánovačem ve Windows nepochodili. Ovšem pokud by byla potřeba tato funkčnost doimplementovat do mé aplikace, tak by nebyl žádný problém o tyto funkce aplikaci v budoucnu rozšířit. Největší výhodou je ovšem správa ve firemní síti. Pomocí plánovače, který bude má aplikace obsahovat, je možné spravovat úlohy pro všechny klienty, kteří jsou připojeni v síti. Je tedy možné plánovat úlohy pro všechny klienty z jednoho místa. Při použití standardního plánovače ve Windows bychom se museli připojit ke každému počítači a nastavit tak úlohu přímo na konkrétním stroji. Nevýhodou tohoto řešení je, že plánovač bude fungovat pouze, pokud je konkrétní počítač připojen v síti a poběží na něm klientská část mé aplikace. V případě, že tento klient nebude připojen v síti nebo nebude mít spuštěného klienta, se úloha na daném počítači nespustí.
10
2.2 Užitečnost pro testování aplikací Na našem trhu je spousta firem zabývající se vývojem nějakého programu či aplikace. Základem úspěchu mezi velkou konkurencí, se kterou se firmy potýkají, je aplikace, která je stabilní a nedochází k neočekávaným pádům. To je základ každé aplikace, která chce na trhu uspět. Aby k tomuto nedocházelo, je potřeba, aby firmy své produkty pravidelně testovaly. S řešením, do kterého jsem se v rámci této práce pustil, se firmám ulehčí organizace spouštění těchto testů na lokálních počítačích. Nebude tedy problém naplánovat testování na určitém počítači tak, aby se úloha spustila někdy ve večerních hodinách, kdy je firemní síť méně využívaná.
11
3 Volba technologii V této části se seznámíme s použitými technologiemi a programovacími jazyky při implementaci praktické části mé práce.
3.1 Programovací jazyk C# „C# je vysokoúrovňový objektově orientovaný programovací jazyk vyvinutý firmou Microsoft zároveň s platformou .NET Framework.“ C# je založen na jazycích C++ a Java. Dalo by se tedy říct, že je „nepřímým potomkem jazyka C, ze kterého čerpá syntaxi.“ C# zajišťuje oproti některým jiným programovacím jazykům také korektní uvolňování paměti. O tento úkon se stará garbage collector. Je také možné pomocí výjimek zpracovávat chyby a podle typu výjimky se může různě zachovat. [1] C# je nejčastěji využívám pro tvorbu databázových programů, formulářových aplikací, webových aplikací a stránek, webových služeb, ale také při tvorbě softwaru pro mobilní zařízení. [1]
3.1.1 Vlastnosti Každá třída může být potomkem pouze jedné třídy, neexistuje vícenásobná dědičnost. Nenajdeme zde také žádné globální proměnné, funkce i metody musí být deklarovány vždy uvnitř třídy. Můžeme místo nich ale použít statické proměnné a metody, které naimplementujeme do veřejné třídy. V jazyku C# také není vůbec důležité, v jakém pořadí deklarujeme metody. Dále rozlišuje malá a velká písmena, je case sensitive.
12
Historie C# 1.0 Tato verze vyšla v roce 2002 spolu s .NET Frameworkem 1.0, obsahovala základní podporu objektového programování. C# 2.0 Na tuto verzi se čekalo další tři roky až do roku 2005. Jako novinky se zde objevily částečné a statické třídy, iterátory, použití anonymních delegátů, nullovatelné hodnotové typy, operátor koalescence. C# 3.0 Tato verze se objevila na trhu okolo roku 2007, spolu s .NET Frameworkem 3.5 a také novou verzí Visual Studia 2008. Přinesla sebou také spoustu nových změn. Například nový způsob pro dotazování nad jakýmikoliv daty LINQ, lambda výrazy kvůli kterým byl zaveden nový operátor =>, při deklaraci nového objektu nebo kolekce můžeme rovnou inicializovat prvky, rozšiřující metody, můžeme používat klíčové slovo var při inicializaci. Nakonec ještě přibyly výrazové stromy a anonymní třídy. C# 4.0 Tato verze, která vyšla v roce 2010, začala spolupráci s dynamickými aspekty programování a Frameworky, jako například DLR a COM, kovariance a kontravariance, volitelné parametry a pojmenované parametry, dynamicky typované objekty. [1] C# 5.0 S touto verzí jsme se poprvé setkali teprve nedávno, vyšla v roce 2012 spolu s novým Visual Studiem 2012. V této verzi přišel jazyk C# se zcela novým způsobem jak vytvářet a volat asynchronní metody. [2]
13
Obrázek 1: Vývoj jazyka C#
3.2 Windows Presentation Foundation a XAML Windows Presentation Foundation (WPF), dříve používaný pod názvem Avalon, je podmnožinou .NET Frameworku od verze 3.0, který používá značkovací jazyk XAML pro vytvoření uživatelského rozhraní. „WPF poskytuje nový vzhled, nové principy přizpůsobení ovládacích prvků, nové grafické funkce a nové programovací rozhraní.“ V praxi obsahuje dvě související programovací rozhraní. Programy lze psát pomocí jazyka C# nebo jiného jazyka, který vyhovuje CLS platformy .NET. Kromě toho je také možné použít nový značkovací jazyk založený na XML, jehož název je XAML. Pomocí toho nového jazyka je možné vytvářet celé samostatné programy. Nejčastěji se však setkáme s použitím jazyka XAML pro vytváření uživatelského rozhraní a grafických prvků a v procedurálním jazyku vytvořit kód k obsluze událostí na vstupu. [3]
14
WPF – Data binding Data binding je technika, která slouží k propojení prvků a elementů na data. Tuto vazbu lze využít na prosté propojení nějakého prvku (například TextBox, CheckBox, atd.) na logickou proměnnou, ale také na propojení databáze a okna pro vkládání dat. V minulosti programátoři psali kód pro inicializaci prvku pomocí logické proměnné a také pro nastavené této proměnné po ukončení práce s prvkem. V dnešních programovacích prostředích již stačí nastavit vazbu mezi prvkem a proměnnou a další práci již tato vazba obstará bezobslužně. Dokonce je možné provést vazbu mezi dvěma prvky a to opravdu jednoduše. Díky tomuto lze výrazně zjednodušit kód, zvlášť použijeme-li programovací jazyk XAML. [3] Zde malá ukázka použití data binding mezi dvěma prvky: <StackPanel>
Zdroj prvního TextBoxu je nabindovaný na druhý TextBox. Při psaní textu do prvního TextBoxu se ten samý text zobrazuje ve druhém. Jak můžeme na první pohled zjistit, je tento zápis opravdu krátký a jednoduchý. Chování data bindingu ještě můžeme ovlivnit dalšími atributy: 3.2.1.1 Mode TwoWay – je nastaven defaultně, hodnoty jsou synchronizovány obousměrně OneWay – synchronizace probíhá pouze ze zdroje do nabindované vlastnosti OneTime – synchronizace proběhne pouze po startu
15
3.2.1.2 UpdateSourceTrigger Explicit – synchronizuje se pouze při volání UpdateSource LostFocus – je nastaven defaultně, synchronizuje se, jakmile není aktivní PropertyChanged – synchronizuje se okamžitě, jakmile je změněna Pokud bychom chtěli bindovat vlastnost nějakého objektu, tak musí být třída poděděná z interface INotifyPropertyChanged. [4]
3.3 Windows Communication Foundation Windows Communication Foundation (WCF), dříve známé jako "Indigo", je sada rozhraní API v .NET Frameworku pro vytváření připojení servisně orientovaných aplikací. [5] Dříve psal programátor program tak, aby bylo nejlepší využití dané technologie pro účel, který potřeboval, například ASP.NET Web Services, Web Services Enhancements, .NET Remoting, Enterprise Services, Microsoft Message Queuing atd. Každá technologie byla tedy vhodná pro něco jiného. Nevýhodou těchto technologii je, že pokud v nich budeme chtít psát aplikaci, tak celá tato aplikace bude omezena touto technologii. Navíc všechny tyto technologie nejsou vzájemně kompatibilní. WCF je tedy základní infrastruktura, která všechny tyto dřívější technologie od firmy Microsoft sjednocuje. Programátor vůbec nemusí znát konkrétní model dané technologie, kterou chce ve své aplikaci použít, postačí znát koncepci WCF. Pro všechny programátory tedy nastalo obrovské zjednodušení, navíc WCF nabízí mnoho nových vlastností, které tuto technologii ještě zlepšují. [6]
16
3.3.1 Service (služba) Služba je systém, který poskytuje endpointy (koncové body). Služba publikuje metadata. Je tvořena třemi základními částmi: - Třída služby, která implementuje poskytovanou službu. - Hostovací prostředí. - Jeden nebo více koncových bodů.
Obrázek 2: Komunikace mezi službou a klientem
3.3.2 Endpoint (koncový bod) Tato část slouží k přijímání a odesílání zpráv. Je tvořen opět ze tří částí: Address (adresa) – určuje, kde služba poběží a kam budou zprávy zaslány. Binding – určuje, jaký bude zvolen protokol, jaké kódování a také bezpečnost. Contract (kontrakt) – je nezávislý na adrese a bindingu, určuje rozhraní a metody, které služba poskytuje.
17
3.3.3 Messages (SOAP zprávy) Jsou to zprávy, které se zasílají „mezi klientem a serverem (službou) a jsou nezávislé na přenosovém protokolu.“ Fungují na principu požadavek a odpověď na komunikačním kanále. WCF podporuje následující vzory: OneWay – klient zašle zprávu a neočekává odpověď. Request-Response – klient zašle požadavek a čeká na odpověď. Duplex – asynchronní obousměrná komunikace mezi klientem a službou.
3.3.4 Další prvky Metadata Tento prvek slouží především k popisu služby. Na základě tohoto popisu je poté nakonfigurován klient. Díky tomu klient ví, na jakém protokolu služba běží a na jaké adrese. Channel (kanál) V tomto prostředí se přenášejí veškeré zprávy. Je vytvořeno v okamžiku kdy klient zasílá zprávu. Proxy „Je to prostředník mezi klientem a serverem a používá se na straně klienta vždy, i když jde jen o komunikaci na jednom PC v rámci paměti.“ [6]
18
4
Vývoj aplikace
Při vývoji aplikaci, je nutné si hned na začátku zvolit správnou metodiku vývoje. „Metodika vývoje softwaru je souhrn postupů, pravidel a nástrojů používaný pro návrh plánování, řízení vývoje software. Metodikou se též rozumí využití takového frameworku nebo dalších specifických postupů pracovním týmem nebo celou organizací při vývoji aplikačního software nebo informačního systému.“ [7] Každý tento framework určuje jak vyvíjet a udržovat software. Mezi nejznámější z metodik patří: Vodopádový model - sekvenční typ frameworku Prototypový model - iterativní typ frameworku Inkrementální model - kombinace sekvenčního a iterativního typu frameworku Spirálový model - kombinace sekvenčního a iterativního typu frameworku RAD model - iterativní typ frameworku Extrémní programování Pro vývoj své aplikace jsem si vybral Spirálový model, jelikož se bude tato aplikace v budoucnu neustále rozvíjet a budou se k ní přidávat nové funkce a možnosti, je tento model dle mého názoru nejvhodnější volbou. [7]
4.1 Spirálový model Tento model skvěle pokrývá největší nedostatky, které má vodopádový model. Při použití spirálového modelu je postup do další fáze závislý na provedené analýze všech rizik a možných problémů. Je tedy postaven na opakované analýze všech rizik, díky tomuto se lépe vyrovnává s pozdější úpravou požadavků, což je také vhodné při vývoji větších projektů. „Model probíhá v neustále se opakujících krocích, dokud není výsledný produkt hotov.“ Ze začátku se vyvíjí podle hrubé specifikace požadavků, později se tyto specifikace upřesňují například konzultací se zákazníkem. [8]
19
Životní cyklus podle tohoto modelu se dělí na čtyři hlavní části: 1) Určení cílů, alternativ, omezení 2) Vyhodnocení alternativ, identifikace a řešení rizik 3) Vývoj a ověření další úrovně 4) Plánování následujících fází
Obrázek 3: Spirálový model životního cyklus softwaru
„Po každé fázi následuje testování, hodnocení a předání dílčích výsledků. Produkt je tedy testován pravidelně a to již od raných fází. S tímto přístupem je vhodné využít automatizovaných testů.“ Výhodou je, že aplikaci můžeme testovat po částech, pouze je nutné upravit testovací případy a scénáře podle aktuální verze. „Díky pravidelnému a včasnému testování dochází k včasnému odhalení chyb. Velký počet chyb v počátcích vývoje může mít za následek úpravu analýzy.“ [8] 20
4.2 Specifikace požadavků a jejich analýza Než se programátor pustí do své práce, je důležité si hned na začátku určit, jak by měla být aplikace navržena, co všechno by měla obsahovat a také jaké má požadavky zákazník. Musíme si tedy specifikovat, jaké jsou požadavky této práce:
Aplikace bude rozdělena na dvě hlavní části, server a klient
V serverové části bude navíc integrovaný plánovač úloh
Obě dvě části budou WPF aplikace s uživatelsky přívětivým prostředím
S ohledem na budoucí rozšiřování aplikace, by obě hlavní části měly používat vlastní knihovny
K serveru se bude moci připojit více klientů najednou
Klient se bude moci jen připojit anebo odpojit od serveru
Server se bude jednou za čas dotazovat všech připojených klientu, zda je komunikace pořád aktivní
V případě změny stavu, či spuštění úkolu vypíše server do logu oznámení o tomto úkonu
V případě neočekávané chyby, bude tato skutečnost zapsána do souboru
Při spouštění naplánovaného úkolu klient zpět odešle protokol s informací o běhu spuštěné aplikace
21
4.2.1 Diagram případů užití Diagram případů užití zobrazuje chování systému tak, jak ho vidí uživatel. Jeho účelem je popsat funkcionalitu systému, tedy co od něj zákazník nebo my očekáváme. Říká nám co má systém umět, ale neříká, jak to bude dělat. Proto je to většinou první diagram, který při návrhu informačního systému vytváříme. Nejprve je tedy důležité se shodnout, co bude naše aplikace dělat a až poté se zabývat tím, jak to vlastně uděláme. [9]
Obrázek 4: Diagram případu užití
22
4.2.2 Diagramy tříd „Diagram tříd popisuje statickou strukturu systému, znázorňuje datové struktury a operace u objektů a souvislosti mezi objekty.“ Díky němu poznáme datový model systému od konceptuální úrovně až po implementaci. „Datové struktury zařazuje do tříd a zobrazuje vztahy těchto tříd.“ [10] Knihovna Common Zde je naimplantováno vše, co potřebuje klient i server. Jsou zde rozhraní, která se využívají pro komunikaci mezi serverem a klientem, ale také statické třídy, které můžeme používat v celé aplikaci.
Obrázek 5: Diagram tříd ve společné knihovně Common
23
Knihovna ServerLib Tato knihovna je z celé aplikace nejrozsáhlejší. Jsou zde třídy, které zajišťují správnou funkčnost celého serveru. Hlavní kostrou celého programu je třída ServerScheduler. Pomocí této třídy můžeme manipulovat s naplánovanými úlohami, s připojenými klienty a také zde řídit chování serveru.
Obrázek 6: Diagram tříd v knihovně ServerLib
24
Knihovna ClientLib V této knihovně se vytváří počátek celé komunikace, bez které by nebylo možné navázat spojení mezi klientem a serverem.
Obrázek 7: Diagram tříd knihovny ClientLib
25
4.3 Návrh aplikace Při návrhu aplikace se již zajímáme o to, jak konkrétně budeme program tvořit.
4.3.1 Vývojové prostředí Asi nejpoužívanější a nejznámější vývojové prostředí je Visual Studio od firmy Microsoft. Může být použito pro tvorbu konzolových aplikací, aplikací s grafickým rozhraním, webových stránek, webových aplikací a webových služeb. „Visual Studio obsahuje editor kódu podporující IntelliSense a refaktorování.“ Tyto funkce nám velice usnadňují a zrychlují celé programování. [11] Editor kódu Podporuje zvýraznění syntaxe a automatické dokončování kódu. Je možné si nastavit vlastní záložky, vyhledávat bloky kódu anebo si v něm spravovat seznam úkolů. Během psaní kódu se Visual Studio na pozadí kompiluje, poskytuje tím informace o syntaktických a kompilačních chybách, které jsou podtrženy červenou vlnovkou. Upozornění jsou podtržena zelenou vlnovkou. Debugger Umí pracovat se spravovaným i strojovým kódem a může být použit při psaní jakéhokoliv programovacího jazyku, které Visual Studio podporuje. Pomocí breakpointů si můžeme zastavit běh programu na určité pozici a sledovat tak, jak se mění proměnné hodnoty během procesu. Designer Je hojně využíván při tvorbě GUI aplikací. Nabízí paletu ovládacích prvků (tlačítka, popisky, textbox, atd.), která podporuje funkci Drag and Drop (přetáhni a pusť). Díky němu si tedy může i začínající programátor udělat v celku rychle jednoduchou aplikaci. [11]
26
4.3.2 Použité komponenty Jelikož je aplikace navrhnuta pomocí WPF, jsou zde použity trochu jiné komponenty oproti Windows Forms. Zmíním tedy pouze prvky, které jsem v aplikaci použil. Button – je to klasické tlačítko, které po stisknutí provede událost OnClick, můžeme zde nadefinovat i jiné události. CheckBox – funguje na principu zaškrtávacího tlačítka, může mít hodnoty true, false nebo null. ComboBox – je to vysouvací kontrolka, která po kliknutí zobrazí výběr, můžeme si zvolit pouze jednu možnost. ListView – zobrazuje kolekci položek, můžeme zde volit z více možností zobrazení. TextBox – je vstupní pole, do kterého můžeme zapisovat, v našem případě jsme ho využili v kombinaci s data bindingem.
4.3.3 Microsoft .NET Framework Jelikož naše aplikace poběží i na starších systémech Windows, zvolili jsme .NET Framework 3.5. Pro naše účely nám jeho funkcionalita plně postačí.
Obrázek 8: Obsah .NET Framework 3.5
27
4.3.4 Bezpečnost Jelikož naše aplikace, je především určena pro použití ve firemní síti, nemusíme se zabývat příliš zabezpečením aplikace. Aplikace umí přidat pravidlo do Firewall, aby mohla začít správně komunikovat.
4.3.5 Upravená architektura klient – server Při klasickém použití architektury klient-server, bývá chování takové, že klient je v roli tazatele a server mu na dotaz odpovídá. V naší aplikace je ovšem chování zcela opačné. Klient je pouze v roli vykonavatele, znamená to tedy, že poté co se sám připojí k serveru, již pouze čeká, až dostane od klienta nějaký příkaz. Veškerá vzájemná komunikace tedy závisí na serveru, který rozdává úkoly a v našem případě také plánuje úlohy pro všechny klienty. [12]
4.3.6 Možnosti klienta Klient je omezen pouze na pár úkonů: 1) Vytvoření připojení pomocí IP adresy a portu 2) Uložení si nastavení do XML souboru 3) Připojení se k serveru 4) Kontrola, zda mu dorazí pravidelná kontrola komunikace ze serveru 5) Odeslání protokolu o průběhu spuštěné aplikace 6) Odpojení se od serveru
28
4.3.7 Možnosti serveru Oproti tomu server je vlastně takové jádro celé komunikace, jelikož si udržuje kolekci aktivních klientů, může klienta kdykoliv odpojit nebo mu okamžitě nařídit spustit úlohu. 1) Určuje port, na kterém bude očekávat klienty 2) Kdykoliv může klienta odpojit 3) Plánuje úlohy pro klienty 4) Může vynutit okamžité spuštění některé aplikace 5) Ukládá nastavení do XML souboru 6) Ukládá všechny úlohy v plánovači do XML souboru 7) Může být kdykoliv vypnut a odpojit tak všechny připojené klienty
4.4 Integrace a testování Aplikaci jsem nejčastěji testoval na lokální adrese a portu 2080, proto jsem tyto údaje umístil do defaultního nastavení, které se vytvoří v případě, že nenajde soubor, ze kterého nastavení načítá.
4.4.1 Funkčnost Všechny požadavky, které byly zmíněny v zadání práce, byly také splněny. Z počátku jsem se setkal s pádem aplikace, ale to přišlo ve chvíli, kdy jsem úmyslně napsal nekorektní XML soubor pro načítání nastavení. Aplikace je tedy připraveny i na tyto nestandardní postupy.
4.4.2 Použití Aplikace se používá velice snadno, ovládání je jednoduché, v aplikaci máte možnost kliknout jen na tlačítka, která jsou aktivní.
29
4.4.3 Spolehlivost Aplikace je ošetřena proti všem možným situacím, na které jsem po dobu testování narazil. V případě, že nastane, nějaká situace, na kterou jsem nenarazil, chybové hlášení se zapíše do logového souboru s chybami.
4.4.4 Výkon Při používání událostí, se může snadno stát, že nastane tzv. memory leak. To znamená, že počítač někde alokuje paměť a není jí schopen poté uvolnit. Na tuto situaci jsem si dal zvlášť pozor. Všechny prostředky použité v aplikaci jsou tedy řádně ukončeny.
5
Srovnání s existujícími aplikacemi
Při hledání podobných aplikací, jsem narazil pouze na pár aplikací, které by alespoň trochu zadání bakalářské práce. PSEXEC - nástroj díky kterému je možné například vzdáleně instalovat a spouštět libovolné aplikace, bohužel vše je potřeba spouštět ručně, není zde žádný plánovač. RemoteApp manager – tento program sice také umí vzdáleně spouštět aplikace, ale je trochu složitější na nastavení a také nemá plánovač úloh.
30
6 Uživatelská příručka 6.1 Ovládání na straně serveru Po spuštění aplikace se nám server zobrazí na záložce Plánovač. V případě, že je port již používán, bude o tom uživatel na záložce Server informován. Při vypnutém serveru svítí mezi tlačítky Start a Stop nápis „Offline“, pokud stiskneme tlačítko Startu, tak změní se nápis na zelený text „Online“.
Obrázek 9: Úvodní obrazovka aplikace Server, záložka Plánovač
Obrázek 10: Úvodní obrazovka Serveru, záložka Server
31
Obrázek 11: Obrazovka Serveru po připojení klienta
Na záložce Plánovač můžeme přidávat, upravovat a odebírat úlohy pomocí příslušných tlačítek.
Obrázek 12: Dialog po stisknutí tlačítka Upravit
32
6.2 Ovládání na straně klienta Klient se ihned po spuštění pokusí připojit k naposledy nastavené IP adrese a portu. Pokud se mu to nepovede, zobrazí se mezi tlačítky nápis „Odpojeno“ a do pravé strany okna se zapíše důvod, proč se nepřipojil. V případě, že se připojí úspěšně, zobrazí se zelený nápis „Připojeno“ a klient je tak připojenu k serveru.
Obrázek 13: Úvodní okno klienta v případě, že se nepřipojí
33
Obrázek 14: Úvodní okno klienta v případě, že je připojen
Obrázek 15: Okno Klienta pro nastavení IP adresy a portu
34
7 Závěr 7.1 Zhodnocení Díky této bakalářské práci, jsem naučil rychle odlaďovat a hledat chyby v programu, optimalizovat kód a také pracovat s novými technologiemi. Nejvíce jsem získal při vytváření grafického rozhraní ve WPF. Zjistil jsem, že se díky této technologii dá snadněji pracovat s uživatelskými komponenty díky data binding. Ovšem tato technologie má i své stinné stránky, například zabezpečit prvky nějakou validací a ošetřit vstupy, mi dělali velký problém. WPF je poměrně nová technologie a tak můžeme ještě očekávat, že ještě přijdou nějaké vylepšení a také funkce, se kterými bude tato technologie přívětivější.
7.2 Možnosti dalšího rozšíření aplikace Již na začátku tvorby této aplikace se pamatovalo na možnosti rozšíření v budoucnu. Jako první by měl přijít automatický reconnect po určitém časovém úseku na straně klienta. Jelikož pokud se nám přeruší spojení, musíme jít k počítači a ručně ho opět připojit. Dále by určitě bylo dobré, kdyby bylo možné úkol naplánovat a spustit pro více klientů na jednou. Jednou aktivační událostí by se tak mohlo spustit například testování na všech připojených klientech. V budoucnu by se měla aplikace rozšířit tak, že klient i server by fungovaly jako služba a celé plánování úloh a vzdálené spouštění aplikací by se provádělo přes webové rozhraní. Znamenalo by to tedy, že by do plánování úloh mohlo přidávat úlohy a měnit nastavení několik uživatelů najednou z různých míst firmy. To by ale sebou přineslo i další úskalí, na které bychom si museli dát pozor.
35
Seznam použité literatury 1. C Sharp - Wikipedie. Wikipedie [online]. 2013 [cit. 2013-04-08]. Dostupné z: http://cs.wikipedia.org/wiki/C_Sharp 2. C Sharp (programming language). Wikipedia [online]. 2013 [cit. 2013-04-08]. Dostupné z: http://en.wikipedia.org/wiki/C_Sharp_(programming_language) 3. PETZOLD, Charles. Mistrovství ve Windows Presentation Foundation. Vyd. 1. Brno: Computer Press, 2008, 928 s. ISBN 978-80-251-2141-2. 4. Vyvojar.cz - Vývojáři sobě. 5. WPF - Data Binding [online]. 2007 [cit. 2013-0502]. Dostupné z: http://www.vyvojar.cz/Articles/458-5-wpf-data-binding.aspx 5. Wikipedia, the free encyclopedia. Windows Communication Foundation [online]. 2013
[cit.
2013-05-26].
Dostupné
z:
http://en.wikipedia.org/wiki/Windows_Communication_Foundation 6. Netstudent.cz. WCF PRO ZAČÁTEČNÍKY – 1. DÍL: TEORIE, ZÁKLADNÍ POJMY [online]. 2009 [cit. 2013-05-26]. Dostupné z: http://www.netstudent.cz/Articles/wcfpro-zacatecniky-1-dil-teorie-zakladni-pojmy 7. Wikipedie. Metodika vývoje softwaru [online]. 2013 [cit. 2013-05-25]. Dostupné z: http://cs.wikipedia.org/wiki/Metodika_v%C3%BDvoje_softwaru 8. Testování softwaru. Spirálový model [online]. 2012 [cit. 2013-05-26]. Dostupné z: http://testovanisoftwaru.cz/lang/en/manualni-testovani/modely-zivotniho-cyklusoftwaru/spiralovy-model/ 9. Devbook.cz. 2. díl - UML - Use Case Diagram [online]. 2010 [cit. 2013-05-26]. Dostupné z: http://www.devbook.cz/uml-use-case-diagram 10. Wikipedie. Diagram tříd [online]. 2013 [cit. 2013-05-27]. Dostupné z: http://cs.wikipedia.org/wiki/Diagram_t%C5%99%C3%ADd 11. Wikipedie. Microsoft Visual Studio [online]. 2013 [cit. 2013-05-27]. Dostupné z: http://cs.wikipedia.org/wiki/Microsoft_Visual_Studio
36
12. Svět hardware. Klient-server [online]. 2011 [cit. 2013-05-28]. Dostupné z: http://www.svethardware.cz/glos.jsp?doc=1F194B6D2A901385C125747E007EFA4 4
37
Seznam obrázků Obrázek 1: Vývoj jazyka C# ........................................................................................... 14 Obrázek 2: Komunikace mezi službou a klientem ......................................................... 17 Obrázek 3: Spirálový model životního cyklus softwaru ................................................. 20 Obrázek 4: Diagram případu užití .................................................................................. 22 Obrázek 5: Diagram tříd ve společné knihovně Common .............................................. 23 Obrázek 6: Diagram tříd v knihovně ServerLib ............................................................. 24 Obrázek 7: Diagram tříd knihovny ClientLib ................................................................. 25 Obrázek 8: Obsah .NET Framework 3.5 ........................................................................ 27 Obrázek 9: Úvodní obrazovka aplikace Server, záložka Plánovač ................................ 31 Obrázek 10: Úvodní obrazovka Serveru, záložka Server ............................................... 31 Obrázek 11: Obrazovka Serveru po připojení klienta .................................................... 32 Obrázek 12: Dialog po stisknutí tlačítka Upravit ........................................................... 32 Obrázek 13: Úvodní okno klienta v případě, že se nepřipojí.......................................... 33 Obrázek 14: Úvodní okno klienta v případě, že je připojen ........................................... 34 Obrázek 15: Okno Klienta pro nastavení IP adresy a portu ........................................... 34
38
Seznam použitých zkratek WCF - Windows Communication Foundation GUI - Graphical User Interface WPF - Windows Presentation Foundation XAML - Extensible Application Markup Language LINQ - Language Integrated Query DLR - Dynamic Language Runtime COM - Component Object Model CLS - Common Language Specification XML - Extensible Markup Language XAML - Extensible Application Markup Language API - Application programming interface SOAP - Simple Object Access Protocol RAD - Rapid Application Development
39
Přílohy Obsah přiloženého CD Na přiloženém CD se v kořenovém adresáři nachází tato bakalářská práce ve formátu bakalarska_prace_sedmik.pdf. Dále pak ve složce „Projekt“ se nachází celý projekt se zdrojovými kódy, který je spustitelný v prostředí Visual Studio.
40