Category:Võrgurakendused II: hajussüsteemide ehitamine: Difference between revisions
(236 intermediate revisions by 53 users not shown) | |||
Line 15: | Line 15: | ||
==Õppejõud== | ==Õppejõud== | ||
Mait Poska | Mait Poska | ||
* mait.poska<ät> itcollege.ee | * mait.poska<ät> itcollege.ee või mait.poska <ät> netgroup.ee | ||
* Skype: minamait | * Skype: minamait | ||
* +372 53 469 734 | * +372 53 469 734 | ||
==Hinne== | ==Hinne== | ||
<!--Hinde kujunemisel arvestatakse kahte | <!--Hinde kujunemisel arvestatakse kahte osa: | ||
alamosast: | alamosast: | ||
**XML andmefail | **XML andmefail | ||
Line 49: | Line 33: | ||
* <ins>Hinne</ins> ('''100p / 100%''') - Hinde kujunemisel arvestatakse kahte tööd: | * <ins>Hinne</ins> ('''100p / 100%''') - Hinde kujunemisel arvestatakse kahte tööd: | ||
** [[Kodutöö aines "Võrgurakendused II: hajussüsteemide ehitamine" | ** [[Kodutöö aines "Võrgurakendused II: hajussüsteemide ehitamine" 2018]], mis moodustab hindest 55%. '''55p''' (koosneb kolmest osast) (vähemalt 51%) | ||
*** | *** Veebiteenus '''18p''' | ||
**** Retsensioonid | **** Veebiteenuse analüüs '''3p''' | ||
*** | **** Retsensioonid Veebiteenuse kohta '''3p''' | ||
**** Retsensioonid | *** Klientrakendus veebiteenusele '''18p''' | ||
*** | **** Retsensioonid Klientrakenduse kohta '''3p''' | ||
**** Retsensioonid | *** XML (xsd, xslt) '''5p''' | ||
**** Retsensioonid XML-i kohta '''2p''' | |||
*** Esitlus '''3p''' | |||
** <ins>Individuaalne teadmiste kontroll</ins> '''45p''' | ** <ins>Individuaalne teadmiste kontroll</ins> '''45p''' | ||
*** Teooria (Test) '''20p''' (tulemus vähemalt 51%) | *** Teooria (Test) '''20p''' (tulemus vähemalt 51%) | ||
Line 76: | Line 62: | ||
==Tähtajad== | ==Tähtajad== | ||
* ''' | * '''Veebiteenus''' | ||
** | ** Veebiteenuse analüüs peab olema valmis ja kirjeldatud wikilehel hiljemalt '''01.04.2018''' | ||
** Retsensioonid | ** Veebiteenus peab olema valmis, esitatud ja ja wikilehel kirjeldatud hiljemalt '''27.05.2018''' | ||
** Retsensioonid veebiteenuste kohta peavad tehtud olema '''03.06.2018''' | |||
* '''Klientrakendused''' | |||
** Klientrakendused peavad olema valmis, esitatud ja ja wikilehel kirjeldatud hiljemalt '''27.05.2018''' | |||
** Retsensioonid klientrakenduste kohta peavad tehtud olema '''03.06.2018''' | |||
* ''' | * '''XML fail''' | ||
** | ** XML fail, stiilifail ja skeemifail peavad olema valmis ja wikilehel kirjeldatud hiljemalt '''01.06.2018''' | ||
** Retsensioonid XML-failide kohta peavad tehtud olema '''05.06.2018''' | |||
** Retsensioonid | |||
==Retsensioonid== | ==Retsensioonid== | ||
Retsensioonid võib teha vabalt valitud gruppide tööde kohta. Tingimuseks on see, et ühe töö kohta saab teha maksimaalselt kolm retsensiooni. | |||
Seega kokku tuleb esitada | Seega kokku tuleb esitada 3 retsensiooni ühel grupil. | ||
<!-- | <!-- | ||
Lisaks iga grupp, kelle töö kohta retsensioon tehakse saab iga töö kohta boonuseks ühe punkti. Seega võib koguneda igale grupile kokku 6 boonuspunkti kolme töö eest.--> | Lisaks iga grupp, kelle töö kohta retsensioon tehakse saab iga töö kohta boonuseks ühe punkti. Seega võib koguneda igale grupile kokku 6 boonuspunkti kolme töö eest.--> | ||
Line 110: | Line 88: | ||
Ühte meeskonda võib kuuluda 3 kuni 4 tudengit. Gruppi kuuluvate tudengite nimekiri kinnitatakse esimese projekti esitamisega. | Ühte meeskonda võib kuuluda 3 kuni 4 tudengit. Gruppi kuuluvate tudengite nimekiri kinnitatakse esimese projekti esitamisega. | ||
=== [[ | ==Projekti kaitsmisele registreerumine== | ||
=== [[ | Siia lisada meeskonna nimetus ja wiki leht. Palun aegu täita järjest võimaluse korral. | ||
=== [[ | |||
=Veebiteenused= | |||
<!-- ==Loengud== --> | |||
Käesolevas blokis räägitakse veebiteenuste loomisest kasutades Microsofti tehnoloogiaid nagu Microsoft Windows Communication Foundation ja ASP.NET MVC Web API | |||
Antud kursuse raames käsitletakse kahte liiki veebiteenuseid: | |||
*SOAP protokollil baseeruvad teenused | |||
*RESTful veebitennused | |||
==Veebiteenused== | |||
*[https://www.w3.org/TR/2004/NOTE-ws-gloss-20040211/#webservice Veebiteenuse definitsioon] | |||
*[http://www.service-architecture.com/articles/web-services/web_services_explained.html Lühike ülevaade Rest teenustest ja SOAPist] | |||
===REST teenused=== | |||
Alljärgnevalt on teoreetiline lugemismaterjal, mis aitab lihtsustada REST teenuste põhimõtetest arusaamist. | |||
*[http://www.drdobbs.com/web-development/restful-web-services-a-tutorial/240169069 Sissejuhatus REST teenustesse] | |||
*[https://www.ics.uci.edu/~fielding/pubs/dissertation/fielding_dissertation.pdf Roy Fieldingi doktoritöö ] | |||
*[http://rest.elkstein.org/ Olulisemad mõisted ja mõned koodinäited REST teenustest] | |||
'''REST teenuste loomine ASP.NET Core 2.0 | |||
'''REST teenuste loomine(Web API2)''' | |||
Alljärgnevalt on toodud välja materjalid, kus räägitakse kuidas ASP.NET Web API abil luua veebiteenuseid. | |||
*[http://www.asp.net/web-api Üleüldine web api leht, kus koodi ja näiteid uuendatakse pidevalt] | |||
*[http://www.asp.net/web-api/overview/getting-started-with-aspnet-web-api/tutorial-your-first-web-api REST teenuste loomine] | |||
*[http://www.asp.net/web-api/overview/creating-web-apis/creating-a-web-api-that-supports-crud-operations Creating a Web API that Supports CRUD Operations] | |||
===SOAP teenused=== | |||
*[http://www.w3schools.com/xml/xml_soap.asp SOAPi sissejuhatus ning olulisemad elemendid] | |||
*[https://en.wikipedia.org/wiki/SOAP SOAPi ajalugu] | |||
*[https://docs.microsoft.com/en-us/dotnet/framework/wcf/ SOAP teenuste loomine kasutades WCFi] | |||
===SOAP ja REST võrdlus=== | |||
*[http://blog.smartbear.com/apis/understanding-soap-and-rest-basics/ SOAP ja REST võrdlus] | |||
*[https://stormpath.com/blog/rest-vs-soap Erinevad stsenaariumid, kuna mida kasutada] | |||
==Andmebaasi loomine== | |||
Enne kui saame hakata looma veebiteenuseid, mis tagastavad erinevaid andmeid või võimdaldavad neid salvestada, on meil vaja andmebaasi, kus hoida informatsioonid. Käesoleva kursuse raames kasutatakse andmebaasi loomiseks '''Entity Frameworki(EF)''' ja '''Code First''' lähenemist. | |||
===Entity Framework=== | |||
Enne Entity Frameworkiga tutvumist, tuleb lahti seletada mõiste ORM. ORM pakub raamistiku objektorienteeritud domeeni mudeli sidumiseks (mapping) traditsiooniliste relatsiooniandmebaasidega. | |||
Entity Framework on ORM, mis võimaldab .NET arendajatel tegeleda relatsiooniliste andmetega, kasutades samal ajal ära domeenimudelied. EFi kasutades ei ole vaja andmetele ligipääsuks andmebaasis kirjutada ise koodi, vaid ORM genereerib selle meie eest. | |||
EFi (või mõne muu ORMi) kasutamine võimaldab hoida kokku arendusaega, kuna arendajal ei ole vajalik kirjutada SQLi ega eraldi koodi, et andmebaasis olevatele andmetele ligipääseda. Samas tuleb olla ORMi kasutamisega ettevaatlik, kuna võrreldes traditsiooniliselt kirjutatud SQLiga on selle jõudlus ~30% nõrgem. | |||
Vt. Enity Frameworki raamistiku API: https://msdn.microsoft.com/en-us/library/dn223258(v=vs.113).aspx | |||
'''Andmebaasi loomine kasutades Entity Frameworki''' | |||
Tänasel päeval on Entity Frameworki puhul kuuldud arvatavasti kõige rohkem Code First lähenemisest, kus kõige pealt luuakse domeenimudel(klassid) ning selle põhjal genereeritakse andmebaas. Samas ei tohi unustada, et tarkvara on võimalik arendada ka stiilis, kus andmebaas on juba olemas ning selle põhjal luuakse domeenimudel Sellist lähenemist kutsutakse Database First arendamiseks. | |||
= | *Uus andmebaas | ||
**''Model First'' - Luuakse graafiliselt mudel, mille põhjal on võimalik genereerida andmebaas ja domeenimudel | |||
***Näide: https://msdn.microsoft.com/en-us/library/vstudio/cc716703(v=vs.100).aspx | |||
**''Code First'' - Kirjeldatakse domeenimudel, mille põhjal luuakse andmebaas | |||
*Olemasolev andmebaas | |||
* | **''Database first'' - Mudel koos domeenimudeliga genereeritakse andmebaasi põhjal | ||
* | ***Näide: https://msdn.microsoft.com/en-us/library/vstudio/cc716703(v=vs.100).aspx | ||
* | **''Code First'' - Domeenimudel klassidega genereeritakse olemasolevat andmebaasti | ||
* | ***Näide: https://msdn.microsoft.com/en-us/library/jj200620.aspx | ||
=== | ===Code First=== | ||
Nagu eelpool mainitud, siis selle kursuse käigus vaatleme eelkõige "kood enne" lähenemist. | |||
Esimese sammuna peaksime ära kirjeldama oma andmemudeli. Code First lähenemise puhul ei pea arendaja teoorias andmebaasist midagi teadma, vaid peab ära defineerima lihtsalt andmestruktuurid ning andmebaas luuakse selle põhjal. Paratamtult tuleb siiski keerulisemate andmete mudelleerimise juures mõista ka relatsioonilise andmebaasi tööpõhimõtteid. | |||
Vt. lihtsa andmebaasi loomist siit: https://msdn.microsoft.com/en-us/data/jj193542 | |||
Nagu ka videost on näha, siis üks põhiline probleem, millega kokku puutume on domeenimudeli muutumine. Meie objekt-orienteeritud maailmas ei ole andmemudeli(klassi) struktuuri muutmine üldjuhul keerukas(kui on vaja lisada mõni väli, või midagi ära kaotada). Kui aga mängus on ka andmebaas, siis peab arvestama, et nende muutuste tegemine on keerulisem, kuna raamistik peab hoolitsema selle eest, et andmebaasis ei tekiks andmekadusid. Muutused domeenimudelis toovad kaasa ka muutused andmebaasi struktuurides. Selle jaoks tuleb kasutusele võtta '''Code First Migrations''', kus kirjeldatakse ära, kuidas muutused andmebaasi struktuuris peaks toimuma. Nagu eelpool toodud näites on näha, siis õnneks suudab migratsioone raamistik üldjoontes ise genereerida. | |||
Kui kasutada Code First lähenemist, tuleb valida ka strateegia andmebaasi loomiseks, mis on kirjeldatud siin: http://www.entityframeworktutorial.net/code-first/database-initialization-strategy-in-code-first.aspx | |||
Vt. Code First Migrations lubamine projektis: http://www.asp.net/mvc/overview/getting-started/getting-started-with-ef-using-mvc/migrations-and-deployment-with-the-entity-framework-in-an-asp-net-mvc-application | |||
*pööra tähelepanu andmebaasi uuendamisele, kui mudel on muutunud ''add-migration'' käsk | |||
* | |||
== | ==Lihtsamate päringute loomine kasutades LINQt== | ||
===Teooria=== | |||
*[[Linq päringukeel]] | |||
*[https://msdn.microsoft.com/en-us/library/bb738550(v=vs.110).aspx LINQs olemasolevad meetodid] | |||
*101 LINQ Samples: http://code.msdn.microsoft.com/101-LINQ-Samples-3fb9811b | |||
*Getting Started with LINQ in C#: http://msdn.microsoft.com/en-us/library/bb397933.aspx | |||
===Praktika=== | |||
<!-- | |||
[[Praktikum:LINQ päringukeele meeldetuletus VR2.3]] --> | |||
==Arendusmustrid ja põhimõtted== | |||
Üleüldine pilt: https://i-msdn.sec.s-msft.com/dynimg/IC340233.png | |||
===Repositoorium=== | |||
*https://msdn.microsoft.com/en-us/library/ff649690.aspx | |||
*http://www.codeproject.com/Articles/526874/Repository-pattern-done-right | |||
*https://www.youtube.com/watch?v=rtXpYpZdOzM | |||
*http://deviq.com/repository-pattern/ | |||
===Sõltuvuse süstimine=== | |||
*http://www.codeproject.com/Articles/615139/An-Absolute-Beginners-Tutorial-on-Dependency-Inver | |||
*https://msdn.microsoft.com/en-us/library/hh323705(v=vs.100).aspx | |||
*http://www.jeremybytes.com/downloads/dependencyinjection.pdf | |||
*http://martinfowler.com/articles/injection.html | |||
===Äriloogika=== | |||
* | ==Veebiteenuste turvamine== | ||
* ASP.NET Web API turvamine ja erinevad võimalused https://www.asp.net/web-api/overview/security | |||
* | * [https://docs.microsoft.com/en-us/dotnet/framework/wcf/feature-details/common-security-scenarios WCF teenuste turvamine] | ||
==Praktika== | |||
<!-- | |||
*[[Praktikum VR 2.4 OOP meeldetuletus]] | |||
*[[Praktikum VR 2.5 Päringud Andmebaasist]] | |||
--> | |||
* | |||
* | |||
=XML failivorming ja sellega seotud tehnoloogiad= | =XML failivorming ja sellega seotud tehnoloogiad= | ||
==XML failivorming== | ==XML failivorming== | ||
===Loengusalvestused=== | <!--===Loengusalvestused=== | ||
* '''Esimese loengu salvestus http://enos.itcollege.ee/~htahis/VRII/WR2%20-%20Loeng%201/WR2%20-%20Loeng%201.html''' | * '''Esimese loengu salvestus http://enos.itcollege.ee/~htahis/VRII/WR2%20-%20Loeng%201/WR2%20-%20Loeng%201.html''' | ||
* '''Teise loengu salvestus http://echo360.e-uni.ee/ess/echo/presentation/9264dd7c-990a-4e3f-9045-1a7a5e04039b''' | * '''Teise loengu salvestus http://echo360.e-uni.ee/ess/echo/presentation/9264dd7c-990a-4e3f-9045-1a7a5e04039b''' | ||
** Teise loengu näited: http://enos.itcollege.ee/~htahis/VRII/Praktikum2%20(loeng2)/ | ** Teise loengu näited: http://enos.itcollege.ee/~htahis/VRII/Praktikum2%20(loeng2)/ | ||
--> | --> | ||
===Teooria=== | ===Teooria=== | ||
Line 198: | Line 226: | ||
* XSLT - XML failide transformeerimine ehk stiilifailid | * XSLT - XML failide transformeerimine ehk stiilifailid | ||
** XSLT Tutorial by w3schools.com http://www.w3schools.com/xsl/default.asp | ** XSLT Tutorial by w3schools.com http://www.w3schools.com/xsl/default.asp | ||
[https://wiki.itcollege.ee/index.php/Praktikum:_XML_failide_valideerimine_(XSD,_DTD)_ning_XML_stiilide_(XSLT)_loomine_,_VR2.3 Lugemiseks ja harjutamiseks] | |||
===Praktika=== | ===Praktika=== | ||
<!-- | |||
* [[Praktikum: XML failide loomine vol 2, VR2.2]] | |||
* [[Praktikum: XML failide lugemine ja muutmine .Net vahenditega, VR2.3]] | |||
--> | |||
<!-- * [[Praktikum: XML failide loomine ja nende skeemifailid(XSD), VR2.1]] | |||
*[[Praktikum: XML andmefailidest päringute tegemine VR2.2]] | |||
* [[Praktikum: XML failide valideerimine (XSD, DTD) ning XML stiilide (XSLT) loomine , VR2.3]]--> | |||
*[[Praktikum: XML failide loomine(VR2.1)]] | |||
*[[Praktikum: XML failide valideerimine (XSD, DTD) ning XML stiilide (XSLT) loomine , VR2.3]] | |||
<!-- *[[Praktikum: XML andmefailidest päringute loomine(VR2.2)]] | |||
*[[Praktikum: XML skeemifailid(VR2.3)]]--> | |||
=JSON= | |||
=Veebiteenuste kasutamine= | |||
=Teooria= | |||
*REST teenusele kliendi loomine kasutades C# programmeerimiskeelt: https://docs.microsoft.com/en-us/aspnet/web-api/overview/advanced/calling-a-web-api-from-a-net-client | |||
*[[Angularis klientrakenduse loomine]] | |||
==Praktika== | |||
<!-- | |||
* [[Praktikum: Flickr'i veebiteenuse rakendus, VR2.10]] | |||
[[Praktikum: Flickr'i veebiteenusele klientrakenduse loomine]]--> | |||
[[Praktikum: REST veebiteenusele klientrakenduse loomine]] | |||
=Arhiiv= | |||
==2012 Kevad== | |||
===Loengud=== | |||
* '''Esimese loengu salvestus, kus räägiti XML andmefailist asub siin: http://echo360.e-uni.ee/ess/echo/presentation/d590aaa6-2d08-4852-9db6-42041cc7e438 ''' | |||
* '''Teise loengu salvestus, kus räägiti XML skeemidest ja transformatsioonidest asub siin: http://echo360.e-uni.ee/ess/echo/presentation/fa1431fb-3b80-42a3-a7de-f18fe6a1d3ae ''' | |||
**Teises loengus tehtud näited, asuvad siin: http://enos.itcollege.ee/~mposka/Vorgurakendused_II_2012/Paevaope/Loengud/Loeng2/ | |||
* '''Kolmas loeng, kus räägiti LINQ'st: http://echo360.e-uni.ee/ess/echo/presentation/bbb940ea-fb20-49b4-9d5b-7b2e41f1ac39 ''' | |||
**Kolmandas loengus tehtud näited asuvad siin: http://enos.itcollege.ee/~mposka/Vorgurakendused_II_2012/Paevaope/Loengud/Loeng3/ | |||
* ''' Neljas loeng: http://echo360.e-uni.ee/ess/echo/presentation/7b97f540-e6e1-4bbb-99c3-04e9833b690b ''' | |||
* ''' Viies loeng. Lihtsa veebiteenuse loomise algus: http://echo360.e-uni.ee/ess/echo/presentation/7babae6b-fd76-4564-b60b-d30f82d3d2cf | |||
* ''' Kuues loeng. <i>Windows Communication Foundation</i>: http://echo360.e-uni.ee/ess/echo/presentation/78ee4f6d-e7d5-47e0-92b9-824331027bbd | |||
* ''' [http://echo360.e-uni.ee/ess/echo/presentation/c5abc659-5d25-4e7c-bbdb-f054dfd99c3f Loeng 12.03.2012] | |||
* ''' [http://echo360.e-uni.ee/ess/echo/presentation/8c5b7bba-7f5f-4a2c-b143-473ea810ac34 Loeng 19.03.2012] | |||
* ''' [http://echo360.e-uni.ee/ess/echo/presentation/c5abc659-5d25-4e7c-bbdb-f054dfd99c3f Loeng 02.04.2012 - WCF Turvalisus] | |||
* ''' [http://echo360.e-uni.ee/ess/echo/presentation/6aba1a81-fab2-418d-bb70-969dbe97de9e Loeng 09.04.2012] | |||
* ''' [http://echo360.e-uni.ee/ess/echo/presentation/ecce8a28-6bed-4164-9443-3cd784197489 Loeng 16.04.2012] | |||
* ''' [http://echo360.e-uni.ee/ess/echo/presentation/4115cf45-538e-42d3-bf1f-f28504e3a18e Loeng 23.04.2012 - Bing teenuse kasutamine] | |||
* ''' [http://echo360.e-uni.ee/ess/echo/presentation/1f36208f-fa14-41c2-bb7e-75f7a4ffd765 Loeng 07.05.2012(Asjalikum jutt algab 40min kandist] | |||
* ''' [http://echo360.e-uni.ee/ess/echo/presentation/bdfcb5f2-698d-4429-a485-a40d51c74ded Loeng 14.05.2012 Gunnar] | |||
===Praktikumid=== | |||
* [[Praktikum: XML failide loomine, VR2.1]] | * [[Praktikum: XML failide loomine, VR2.1]] | ||
* [[Linq_päringukeel|Praktikum: LINQ päringute tegemine XML-i peal, VR2.2]] | * [[Linq_päringukeel|Praktikum: LINQ päringute tegemine XML-i peal, VR2.2]] | ||
Line 217: | Line 297: | ||
* [[Praktikum: Windows Communication Foundation teenuse turvamine jätk, VR2.10]] | * [[Praktikum: Windows Communication Foundation teenuse turvamine jätk, VR2.10]] | ||
** [http://enos.itcollege.ee/~kraspel/VRII/%5b2012.04.13%5d%20Praktikum%2011/ Praktikumi näide] | ** [http://enos.itcollege.ee/~kraspel/VRII/%5b2012.04.13%5d%20Praktikum%2011/ Praktikumi näide] | ||
* [[Praktikum: Lihtne andmebaasil veebiteenus, VR2.6]] | |||
<!-- | <!-- | ||
* [[Praktikum: | * [[Praktikum: Lihtne andmebaasil veebiteenus 2 (mitme tabeliga), VR2.7]] | ||
* [[Praktikum: | * [[Praktikum: Rollipõhine kasutajahaldus veebiteenuses, VR2.8]] | ||
--> | --> | ||
===Meeskonnad 2012=== | |||
*[[Hello Kitty]] | |||
*[[TTiim]] | |||
*[[Meeskond "Harold"|Harold]] | |||
*[[Meeskond "WP"]] | |||
*Meeskond "[[-.-]]"* | |||
** Erki Miilberg (projektijuht) | |||
* | ** Kalev Vallsalu | ||
* | ** Oliver Naaris | ||
* | ** Margo Kuustik | ||
* | |||
* | |||
* | |||
* | |||
* | |||
* | |||
* | |||
* Meeskond "[[PhoneBook]]" | |||
**Lauri Jansen | |||
**Tanel Jüris | |||
**Madis Rääk | |||
*Meeskond "[[LLL]]" | |||
** Joonas Püüa | |||
** Janno Toomingas | |||
** Janek Kople | |||
** Roland Krindal | |||
* [[ | *Meeskond "[[Peeter VR2]]" | ||
** Lennart Lüsi | |||
* | ** Kairo Koik | ||
* | ** Marek Kikas | ||
** Kaivar Kull | |||
*[[Meeskond ".NOT"]] | |||
** Martin Kosk | |||
** Kalmer Tart | |||
* [[ | ** Martin Aarne | ||
** Gert Glükmann | |||
Latest revision as of 00:01, 10 May 2018
Võrgurakendused II: hajussüsteemide ehitamine
Eesmärk
Õppeaine eesmärgiks on tutvustada õppijale XML märgendikeelel baseeruvaid hajuslahendusi ja nende loomise võimalusi ning arendada õppijates .Net raamistiku vahenditega tarkvara arendamisoskuseid
Lühitutvustus
Õppeaines käsitletakse XML märgendikeelt ning veebiteenuseid. Kursuse käigus disainitakse, koostatakse ja testitakse veebiteenustel ning XML märgendikeelel põhinevaid lahendusi.
Õpiväljundid
- Õppija oskab kasutada XML märgendikeelt keerulisema strukuuriga andmete hoidmiseks ja esitamiseks struktureeritud kujul.
- Õppija oskab avalikult kättesaadavate juhendite abil koostada lihtsamaid klientrakendusi levinud veebiteenustele.
- Õppija oskab luua lihtsamaid veebiteenuseid kasutades selleks .Net raamistiku tehnoloogiaid ning vahendeid.
- Õppija teab veebiteenuste turvamiseks kasutatavaid tehnoloogiaid ja vahendeid ning oskab leid tavaolukorras rakendada.
- Õppija teab ning oskab kirjeldada hajusrakenduste kasutusvaldkondi ning nende arhitektuure.
- Õppija oskab töötada 3-5 liikmelises meeskonnas.
Õppejõud
Mait Poska
- mait.poska<ät> itcollege.ee või mait.poska <ät> netgroup.ee
- Skype: minamait
- +372 53 469 734
Hinne
- Hinne (100p / 100%) - Hinde kujunemisel arvestatakse kahte tööd:
- Kodutöö aines "Võrgurakendused II: hajussüsteemide ehitamine" 2018, mis moodustab hindest 55%. 55p (koosneb kolmest osast) (vähemalt 51%)
- Veebiteenus 18p
- Veebiteenuse analüüs 3p
- Retsensioonid Veebiteenuse kohta 3p
- Klientrakendus veebiteenusele 18p
- Retsensioonid Klientrakenduse kohta 3p
- XML (xsd, xslt) 5p
- Retsensioonid XML-i kohta 2p
- Esitlus 3p
- Veebiteenus 18p
- Individuaalne teadmiste kontroll 45p
- Teooria (Test) 20p (tulemus vähemalt 51%)
- Praktiline (Programmeerimine) 25p (tulemus vähemalt 51%)
- Kodutöö aines "Võrgurakendused II: hajussüsteemide ehitamine" 2018, mis moodustab hindest 55%. 55p (koosneb kolmest osast) (vähemalt 51%)
Võrgurakendused II: 2011 kevadel valminud kodutööd
Tähtajad
- Veebiteenus
- Veebiteenuse analüüs peab olema valmis ja kirjeldatud wikilehel hiljemalt 01.04.2018
- Veebiteenus peab olema valmis, esitatud ja ja wikilehel kirjeldatud hiljemalt 27.05.2018
- Retsensioonid veebiteenuste kohta peavad tehtud olema 03.06.2018
- Klientrakendused
- Klientrakendused peavad olema valmis, esitatud ja ja wikilehel kirjeldatud hiljemalt 27.05.2018
- Retsensioonid klientrakenduste kohta peavad tehtud olema 03.06.2018
- XML fail
- XML fail, stiilifail ja skeemifail peavad olema valmis ja wikilehel kirjeldatud hiljemalt 01.06.2018
- Retsensioonid XML-failide kohta peavad tehtud olema 05.06.2018
Retsensioonid
Retsensioonid võib teha vabalt valitud gruppide tööde kohta. Tingimuseks on see, et ühe töö kohta saab teha maksimaalselt kolm retsensiooni.
Seega kokku tuleb esitada 3 retsensiooni ühel grupil.
Lisaks tuleb silmas pidada retsensioonide minimaalseid pikkusi projektide kohta. Retsensioonide minimaalsed pikkused
Meeskonnad
Ühte meeskonda võib kuuluda 3 kuni 4 tudengit. Gruppi kuuluvate tudengite nimekiri kinnitatakse esimese projekti esitamisega.
Projekti kaitsmisele registreerumine
Siia lisada meeskonna nimetus ja wiki leht. Palun aegu täita järjest võimaluse korral.
Veebiteenused
Käesolevas blokis räägitakse veebiteenuste loomisest kasutades Microsofti tehnoloogiaid nagu Microsoft Windows Communication Foundation ja ASP.NET MVC Web API
Antud kursuse raames käsitletakse kahte liiki veebiteenuseid:
- SOAP protokollil baseeruvad teenused
- RESTful veebitennused
Veebiteenused
REST teenused
Alljärgnevalt on teoreetiline lugemismaterjal, mis aitab lihtsustada REST teenuste põhimõtetest arusaamist.
- Sissejuhatus REST teenustesse
- Roy Fieldingi doktoritöö
- Olulisemad mõisted ja mõned koodinäited REST teenustest
REST teenuste loomine ASP.NET Core 2.0
REST teenuste loomine(Web API2)
Alljärgnevalt on toodud välja materjalid, kus räägitakse kuidas ASP.NET Web API abil luua veebiteenuseid.
- Üleüldine web api leht, kus koodi ja näiteid uuendatakse pidevalt
- REST teenuste loomine
- Creating a Web API that Supports CRUD Operations
SOAP teenused
SOAP ja REST võrdlus
Andmebaasi loomine
Enne kui saame hakata looma veebiteenuseid, mis tagastavad erinevaid andmeid või võimdaldavad neid salvestada, on meil vaja andmebaasi, kus hoida informatsioonid. Käesoleva kursuse raames kasutatakse andmebaasi loomiseks Entity Frameworki(EF) ja Code First lähenemist.
Entity Framework
Enne Entity Frameworkiga tutvumist, tuleb lahti seletada mõiste ORM. ORM pakub raamistiku objektorienteeritud domeeni mudeli sidumiseks (mapping) traditsiooniliste relatsiooniandmebaasidega.
Entity Framework on ORM, mis võimaldab .NET arendajatel tegeleda relatsiooniliste andmetega, kasutades samal ajal ära domeenimudelied. EFi kasutades ei ole vaja andmetele ligipääsuks andmebaasis kirjutada ise koodi, vaid ORM genereerib selle meie eest.
EFi (või mõne muu ORMi) kasutamine võimaldab hoida kokku arendusaega, kuna arendajal ei ole vajalik kirjutada SQLi ega eraldi koodi, et andmebaasis olevatele andmetele ligipääseda. Samas tuleb olla ORMi kasutamisega ettevaatlik, kuna võrreldes traditsiooniliselt kirjutatud SQLiga on selle jõudlus ~30% nõrgem.
Vt. Enity Frameworki raamistiku API: https://msdn.microsoft.com/en-us/library/dn223258(v=vs.113).aspx
Andmebaasi loomine kasutades Entity Frameworki
Tänasel päeval on Entity Frameworki puhul kuuldud arvatavasti kõige rohkem Code First lähenemisest, kus kõige pealt luuakse domeenimudel(klassid) ning selle põhjal genereeritakse andmebaas. Samas ei tohi unustada, et tarkvara on võimalik arendada ka stiilis, kus andmebaas on juba olemas ning selle põhjal luuakse domeenimudel Sellist lähenemist kutsutakse Database First arendamiseks.
- Uus andmebaas
- Model First - Luuakse graafiliselt mudel, mille põhjal on võimalik genereerida andmebaas ja domeenimudel
- Code First - Kirjeldatakse domeenimudel, mille põhjal luuakse andmebaas
- Olemasolev andmebaas
- Database first - Mudel koos domeenimudeliga genereeritakse andmebaasi põhjal
- Code First - Domeenimudel klassidega genereeritakse olemasolevat andmebaasti
Code First
Nagu eelpool mainitud, siis selle kursuse käigus vaatleme eelkõige "kood enne" lähenemist.
Esimese sammuna peaksime ära kirjeldama oma andmemudeli. Code First lähenemise puhul ei pea arendaja teoorias andmebaasist midagi teadma, vaid peab ära defineerima lihtsalt andmestruktuurid ning andmebaas luuakse selle põhjal. Paratamtult tuleb siiski keerulisemate andmete mudelleerimise juures mõista ka relatsioonilise andmebaasi tööpõhimõtteid.
Vt. lihtsa andmebaasi loomist siit: https://msdn.microsoft.com/en-us/data/jj193542
Nagu ka videost on näha, siis üks põhiline probleem, millega kokku puutume on domeenimudeli muutumine. Meie objekt-orienteeritud maailmas ei ole andmemudeli(klassi) struktuuri muutmine üldjuhul keerukas(kui on vaja lisada mõni väli, või midagi ära kaotada). Kui aga mängus on ka andmebaas, siis peab arvestama, et nende muutuste tegemine on keerulisem, kuna raamistik peab hoolitsema selle eest, et andmebaasis ei tekiks andmekadusid. Muutused domeenimudelis toovad kaasa ka muutused andmebaasi struktuurides. Selle jaoks tuleb kasutusele võtta Code First Migrations, kus kirjeldatakse ära, kuidas muutused andmebaasi struktuuris peaks toimuma. Nagu eelpool toodud näites on näha, siis õnneks suudab migratsioone raamistik üldjoontes ise genereerida.
Kui kasutada Code First lähenemist, tuleb valida ka strateegia andmebaasi loomiseks, mis on kirjeldatud siin: http://www.entityframeworktutorial.net/code-first/database-initialization-strategy-in-code-first.aspx
Vt. Code First Migrations lubamine projektis: http://www.asp.net/mvc/overview/getting-started/getting-started-with-ef-using-mvc/migrations-and-deployment-with-the-entity-framework-in-an-asp-net-mvc-application
- pööra tähelepanu andmebaasi uuendamisele, kui mudel on muutunud add-migration käsk
Lihtsamate päringute loomine kasutades LINQt
Teooria
- Linq päringukeel
- LINQs olemasolevad meetodid
- 101 LINQ Samples: http://code.msdn.microsoft.com/101-LINQ-Samples-3fb9811b
- Getting Started with LINQ in C#: http://msdn.microsoft.com/en-us/library/bb397933.aspx
Praktika
Arendusmustrid ja põhimõtted
Üleüldine pilt: https://i-msdn.sec.s-msft.com/dynimg/IC340233.png
Repositoorium
- https://msdn.microsoft.com/en-us/library/ff649690.aspx
- http://www.codeproject.com/Articles/526874/Repository-pattern-done-right
- https://www.youtube.com/watch?v=rtXpYpZdOzM
- http://deviq.com/repository-pattern/
Sõltuvuse süstimine
- http://www.codeproject.com/Articles/615139/An-Absolute-Beginners-Tutorial-on-Dependency-Inver
- https://msdn.microsoft.com/en-us/library/hh323705(v=vs.100).aspx
- http://www.jeremybytes.com/downloads/dependencyinjection.pdf
- http://martinfowler.com/articles/injection.html
Äriloogika
Veebiteenuste turvamine
- ASP.NET Web API turvamine ja erinevad võimalused https://www.asp.net/web-api/overview/security
- WCF teenuste turvamine
Praktika
XML failivorming ja sellega seotud tehnoloogiad
XML failivorming
Teooria
- XML failid
- Kippar, J. "XML rakendused", TLU:2009 http://minitorn.tlu.ee/~jaagup/kool/java/kursused/10/xmlrak/trykk/xmlrak.pdf
- XMLi rakendused ainekursuse leht by Jaagup Kippar http://minitorn.tlu.ee/~jaagup/kool/java/kursused/10/xmlrak/juht.html
- Introduction to XML by w3schools.com http://www.w3schools.com/xml/xml_whatis.asp
- XSLT - XML failide transformeerimine ehk stiilifailid
- XSLT Tutorial by w3schools.com http://www.w3schools.com/xsl/default.asp
Praktika
- Praktikum: XML failide loomine(VR2.1)
- Praktikum: XML failide valideerimine (XSD, DTD) ning XML stiilide (XSLT) loomine , VR2.3
JSON
Veebiteenuste kasutamine
Teooria
- REST teenusele kliendi loomine kasutades C# programmeerimiskeelt: https://docs.microsoft.com/en-us/aspnet/web-api/overview/advanced/calling-a-web-api-from-a-net-client
- Angularis klientrakenduse loomine
Praktika
Praktikum: REST veebiteenusele klientrakenduse loomine
Arhiiv
2012 Kevad
Loengud
- Esimese loengu salvestus, kus räägiti XML andmefailist asub siin: http://echo360.e-uni.ee/ess/echo/presentation/d590aaa6-2d08-4852-9db6-42041cc7e438
- Teise loengu salvestus, kus räägiti XML skeemidest ja transformatsioonidest asub siin: http://echo360.e-uni.ee/ess/echo/presentation/fa1431fb-3b80-42a3-a7de-f18fe6a1d3ae
- Teises loengus tehtud näited, asuvad siin: http://enos.itcollege.ee/~mposka/Vorgurakendused_II_2012/Paevaope/Loengud/Loeng2/
- Kolmas loeng, kus räägiti LINQ'st: http://echo360.e-uni.ee/ess/echo/presentation/bbb940ea-fb20-49b4-9d5b-7b2e41f1ac39
- Kolmandas loengus tehtud näited asuvad siin: http://enos.itcollege.ee/~mposka/Vorgurakendused_II_2012/Paevaope/Loengud/Loeng3/
- Neljas loeng: http://echo360.e-uni.ee/ess/echo/presentation/7b97f540-e6e1-4bbb-99c3-04e9833b690b
- Viies loeng. Lihtsa veebiteenuse loomise algus: http://echo360.e-uni.ee/ess/echo/presentation/7babae6b-fd76-4564-b60b-d30f82d3d2cf
- Kuues loeng. Windows Communication Foundation: http://echo360.e-uni.ee/ess/echo/presentation/78ee4f6d-e7d5-47e0-92b9-824331027bbd
- Loeng 12.03.2012
- Loeng 19.03.2012
- Loeng 02.04.2012 - WCF Turvalisus
- Loeng 09.04.2012
- Loeng 16.04.2012
- Loeng 23.04.2012 - Bing teenuse kasutamine
- Loeng 07.05.2012(Asjalikum jutt algab 40min kandist
- Loeng 14.05.2012 Gunnar
Praktikumid
- Praktikum: XML failide loomine, VR2.1
- Praktikum: LINQ päringute tegemine XML-i peal, VR2.2
- Praktikum: XML failide valideerimine (XSD, DTD) ning XML stiilide (XSLT) loomine , VR2.3
- Praktikum: XML failidega töötamine (kokkuvõttev praktikum), VR2.4
- Praktikum: Lihtne andmebaasil veebiteenus, VR2.6
- Praktikum: Veebiteenuse loomine Windows Communication Foundation abil, VR2.7
- Praktikum: Object Orientated crash, VR2.8
- Praktikum: Windows Communication Foundation teenuse turvamine, VR2.9
- Praktikum: Windows Communication Foundation teenuse turvamine jätk, VR2.10
- Praktikum: Lihtne andmebaasil veebiteenus, VR2.6
Meeskonnad 2012
- Meeskond "-.-"*
- Erki Miilberg (projektijuht)
- Kalev Vallsalu
- Oliver Naaris
- Margo Kuustik
- Meeskond "PhoneBook"
- Lauri Jansen
- Tanel Jüris
- Madis Rääk
- Meeskond "LLL"
- Joonas Püüa
- Janno Toomingas
- Janek Kople
- Roland Krindal
- Meeskond "Peeter VR2"
- Lennart Lüsi
- Kairo Koik
- Marek Kikas
- Kaivar Kull
- Meeskond ".NOT"
- Martin Kosk
- Kalmer Tart
- Martin Aarne
- Gert Glükmann
Pages in category "Võrgurakendused II: hajussüsteemide ehitamine"
The following 49 pages are in this category, out of 49 total.
A
G
J
K
- Kodutöö aines "Võrgurakendused II: hajussüsteemide ehitamine" - vanad meeskonnad
- Kodutöö aines "Võrgurakendused II: hajussüsteemide ehitamine" 2012
- Kodutöö aines "Võrgurakendused II: hajussüsteemide ehitamine" 2013
- Kodutöö aines "Võrgurakendused II: hajussüsteemide ehitamine" 2014
- Kodutöö aines "Võrgurakendused II: hajussüsteemide ehitamine" 2015
- Kodutöö aines "Võrgurakendused II: hajussüsteemide ehitamine" 2016
- Kodutöö aines "Võrgurakendused II: hajussüsteemide ehitamine" 2017
- Kodutöö aines "Võrgurakendused II: hajussüsteemide ehitamine" 2018
- KTMdev
- Kõnõtraat
M
O
P
- Peeter VR2
- Praktikum: Flickr'i veebiteenuse rakendus, VR2.10
- Praktikum: Lihtne andmebaasil veebiteenus 2 (mitme tabeliga), VR2.7
- Praktikum: Lihtne andmebaasil veebiteenus, VR2.6
- Praktikum: Rollipõhine kasutajahaldus veebiteenuses, VR2.8
- Praktikum: XML failide loomine vol 2, VR2.2
- Praktikum: XML failide lugemine ja muutmine .Net vahenditega, VR2.3