Vytvoření Serverové Aplikace V Programovacím Jazyce Swift Development of Server Application in Swift Programming Language
Total Page:16
File Type:pdf, Size:1020Kb
VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ Fakulta elektrotechniky a komunikačních technologií BAKALÁŘSKÁ PRÁCE Brno, 2018 Martin Střálka VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ BRNO UNIVERSITY OF TECHNOLOGY FAKULTA ELEKTROTECHNIKY A KOMUNIKAČNÍCH TECHNOLOGIÍ FACULTY OF ELECTRICAL ENGINEERING AND COMMUNICATION ÚSTAV TELEKOMUNIKACÍ DEPARTMENT OF TELECOMMUNICATIONS VYTVOŘENÍ SERVEROVÉ APLIKACE V PROGRAMOVACÍM JAZYCE SWIFT DEVELOPMENT OF SERVER APPLICATION IN SWIFT PROGRAMMING LANGUAGE BAKALÁŘSKÁ PRÁCE BACHELOR'S THESIS AUTOR PRÁCE Martin Střálka AUTHOR VEDOUCÍ PRÁCE doc. Ing. Jiří Hošek, Ph.D. SUPERVISOR BRNO 2018 Bakalářská práce bakalářský studijní obor Teleinformatika Ústav telekomunikací Student: Martin Střálka ID: 174403 Ročník: 3 Akademický rok: 2017/18 NÁZEV TÉMATU: Vytvoření serverové aplikace v programovacím jazyce Swift POKYNY PRO VYPRACOVÁNÍ: V bakalářské práci se student bude zabývat nejprve analýzou možnosti použití jazyka Swift pro vývoj serverových aplikací. Následně v jazyce SWIFT navrhne a vytvoří aplikaci pro REST komunikaci. Jako podklad bude sloužit popis již existující aplikace pro měření kvality mobilního internetového připojení. Vytvořená aplikace bude schopna komunikovat s databází a dle uživatelských požadavků vyčítat potřebné informace a ukládat je do XML / CSV souborů s požadovanou strukturou. DOPORUČENÁ LITERATURA: [1]The Swift Programming Language [online]. Swift 4.0. Cupertino: Apple, 2014 [cit. 2017-09-15]. Dostupné z: https://itunes.apple.com/cz/book/the-swift-programming-language-swift-4/id881256329?mt=11 [2]FLEMING, Candace C. a Barbara. VON HALLE. Handbook of relational database design. Reading, Mass.: Addison-Wesley, c1989. ISBN 978-0201114348 Termín zadání: 5.2.2018 Termín odevzdání: 29.5.2018 Vedoucí práce: doc. Ing. Jiří Hošek, Ph.D. Konzultant: prof. Ing. Jiří Mišurec, CSc. předseda oborové rady UPOZORNĚNÍ: Autor bakalářské práce nesmí při vytváření bakalářské práce porušit autorská práva třetích osob, zejména nesmí zasahovat nedovoleným způsobem do cizích autorských práv osobnostních a musí si být plně vědom následků porušení ustanovení § 11 a následujících autorského zákona č. 121/2000 Sb., včetně možných trestněprávních důsledků vyplývajících z ustanovení části druhé, hlavy VI. díl 4 Trestního zákoníku č.40/2009 Sb. Fakulta elektrotechniky a komunikačních technologií, Vysoké učení technické v Brně / Technická 3058/10 / 616 00 / Brno ABSTRAKT Tato práce se věnuje možnostem použití vývojářského jazyka Swift v serverových aplika- cích. Popisuje výhody a nevýhody jazyka Swift oproti ostatním jazykům, zejména Obj-C který je předchůdcem Swiftu a Java, který je přímým konkurentem jazyka Swift. Dále popisuje rozdíly mezi jednotlivými frameworky používané pro webové aplikace. Výběr jazyka Swift je implementován v podobě jednoduché aplikace pro REST komunikaci s databází na základě již existující aplikace. Řešení bude schopno v databázi vyhledávat a následně zobrazovat výsledky vyhledávání. KLÍČOVÁ SLOVA Swift, Linux, Linux server, Vapor, NoSQL databáze, Bakalářská práce, VUT Brno ABSTRACT This work deals with possibilities of using the developer language Swift in server appli- cations. Describes the advantages and disadvantages of Swift versus other languages, especially Obj-C, which is the predecessor of Swift and Java, a direct competitor of Swift. It also describes the differences between frameworks used for web applications. Swift language selection is implemented as a simple application for REST database communication based on an existing application. The solution will be able to search and display search results in the database.) KEYWORDS Swift, Linux, Linux server, Vapor, NoSQL database, Bachelors Thesis, BUT, Brno Uni- versity of Technology STŘÁLKA, Martin. Vytvoření serverové aplikace v programovacím jazyce Swift. Brno, Rok, 41 s. Bakalářská práce. Vysoké učení technické v Brně, Fakulta elektrotechniky a komunikačních technologií, Ústav telekomunikací. Vedoucí práce: Ing. Rastislav Červe- ňák, CSc. Vysázeno pomocí balíčku thesis verze 2.63; http://latex.feec.vutbr.cz PROHLÁŠENÍ Prohlašuji, že svou bakalářskou práci na téma „Vytvoření serverové aplikace v programo- vacím jazyce Swift“ jsem vypracoval(a) samostatně pod vedením vedoucího bakalářské práce a s použitím odborné literatury a dalších informačních zdrojů, které jsou všechny citovány v práci a uvedeny v seznamu literatury na konci práce. Jako autor(ka) uvedené bakalářské práce dále prohlašuji, že v souvislosti s vytvoře- ním této bakalářské práce jsem neporušil(a) autorská práva třetích osob, zejména jsem nezasáhl(a) nedovoleným způsobem do cizích autorských práv osobnostních a/nebo ma- jetkových a jsem si plně vědom(a) následků porušení ustanovení S 11 a následujících au- torského 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ů (autorský zákon), ve znění pozdějších předpisů, včetně možných trestněprávních důsledků vyplývajících z ustanovení části druhé, hlavy VI. díl 4 Trestního zákoníku č. 40/2009 Sb. Brno . ................................... podpis autora(-ky) PODĚKOVÁNÍ Rád bych poděkoval vedoucímu bakalářské práce panu doc. Ing. Jiřímu Hoškovi, Ph.D. za odborné vedení, konzultace, trpělivost a podnětné návrhy k práci. Brno . ................................... podpis autora(-ky) OBSAH Úvod 10 1 Mobilní sítě 11 1.1 Historie a vývoj mobilních sítí . 11 1.1.1 Generace mobilních sítí . 11 1.2 Základní struktura mobilních sítí . 12 1.3 Parametry mobilní sítí . 13 1.3.1 Šířka pásma . 13 1.3.2 Přenosová rychlost . 13 1.3.3 Propustnost . 14 1.3.4 Zpoždění . 14 2 Jazyk Swift 15 2.1 Základní konstrukce jazyku Swift . 15 2.1.1 Syntax . 15 2.1.2 Knihovna Foundation . 17 2.2 Porovnání jazyka Swift s ostatními programovacími jazyky . 18 3 Serverové aplikace v jazyce Swift 20 3.1 Základní komunikační model . 20 3.1.1 Přístup k datům na serveru . 20 3.2 Komunikace v prostředí jazyka . 22 3.2.1 Porovnání frameworků . 22 3.2.2 Zhodnocení frameworků . 23 3.3 Databáze . 23 3.3.1 Relační databáze - SQL . 23 3.3.2 Nerelační databáze - NoSQL . 24 3.3.3 Dělení NoSQL databází . 24 3.3.4 Použití vhodné databáze při programování Swift aplikace . 25 4 Vytvoření serverové aplikace v jazyce Swift 26 4.1 Definice problému a přesná specifika zadání . 26 4.2 Analýza aplikace . 26 4.3 Server DigitalOcean . 26 4.4 Framework Vapor . 27 4.4.1 Instalace frameworku Vapor . 27 4.5 Databáze MongoDB . 27 4.5.1 Instalace MongoDB . 27 4.5.2 Správa dat databáze MongoDB . 28 4.5.3 Import dat do databáze . 28 4.6 Model řešení . 29 4.7 Řešení databáze . 30 4.7.1 Struktura databáze . 30 4.8 Webové rozhraní . 31 4.8.1 Návrh webového rozhraní . 32 4.8.2 Framework NutView . 33 5 Závěr 34 Literatura 35 Seznam symbolů, veličin a zkratek 37 Seznam příloh 38 A Některé funkce programu 39 A.1 Funkce pro vyhledání a výpočet hodnot . 39 A.2 Funkce pro převod dat přijatých z POST požadavku . 40 B Databáze 41 B.1 Struktura vstupní databáze . 41 SEZNAM OBRÁZKŮ 1.1 Buněčná síť . 12 1.2 Sektorizace buněčné sítě s 21 stanicemi . 13 1.3 Sektorizace buněčné sítě se 7 stanicemi . 13 3.1 Komunikace mezi klientem, serverovou aplikací a její databází . 20 4.1 Ukázka prostředí NoSQL Manager for MongoDB . 28 4.2 Ukázka prostředí NoSQL Manager for MongoDB . 31 4.3 Struktura databáze výsledků . 32 4.4 Návrh webového rozhraní . 32 4.5 Webové rozhraní . 33 B.1 Struktura databáze výsledků . 41 SEZNAM TABULEK 2.1 Porovnání jazyka Swift s Obj-C a Java . 19 3.1 Porovnání frameworků Perfect, Vapor, Kitura a Zewo . 22 ÚVOD V dnešní době, početnost chytrých zařízení rapidně vzrůstá. V roce 2019 více než 75 procent provozu na mobilních sítí budou konzumovat chytré telefony. S tím se i zvyšují nároky na bezdrátové sítě, které jsou v současné době nejpoužívanější ko- munikační technologií. V důsledku použití vyššího frekvenčního pásma u rychlejších sítí je potřeba nainstalovat stále větší množství antén k dosažení stejné penetrace. Monitorování mobilních sítí se díky tomu stává velice významné k detekování sle- pých míst jak v krytých tak i otevřených místech a je nezbytné k vylepšení QoE (Quality of Experience) odběratele internetu. Dříve se monitorování mobilních sítí provádělo pouze experty se speciálním za- řízením. Dnes k vylepšení QoE může přispět téměř kdokoliv, kdo vlastní chytrý te- lefon. S použitím aplikace, která sbírá data na pozadí, senzory dokáží určit přesnou polohu, rychlost přenosu, odezvu a další parametry. To umožňuje měřit parametry sítě v globálním měřítku, finanční náročnost je přitom minimální a data jsou prů- běžně aktualizovány. S rostoucím počtem přispěvatelů ovšem roste i množství dat, které je potřeba shromažďovat a průběžně zpracovávat. Tato práce se věnuje zpracovávání naměřených dat parametrů mobilních sítí. Data budou zpracovávány na serverové aplikaci napsané v programovacím jazyce Swift, který je v tomto odvětví oproti ostatním jazykům nový, hlavně co se týče možností nasazení na server. Programovací jazyk slibuje lepší práci s pamětí, což se právě hodí na výpočty s velkým množstvím dat. Teoretická část je věnovaná stručnému seznámení s mapováním sítí, lze se dočíst i o vývoji rádiových techno- logií. Následně se věnuje popisu programovacího jazyka Swift, součástí je i úvod o REST API komunikaci. Praktická část se věnuje analýze dostupnosti frameworků pro server-side Swift a databází a následně jejich použití. Cílem práce je vytvo- řit jednoduchou serverovou aplikaci, která bude komunikovat s databází obsahující data monitoringu sítí a následně data zpracovávat a výsledky ukládat v tabulkové formě. Aplikace bude muset umět i