Haladó Fejlesztési Technikák
2021 őszi szemeszterA C# nyelv haladó eszközei (Lambda kifejezések, LINQ, Entity Framework Core, Code-first adatbázis, Attribútumok, Reflexió, DLL készítése és használata, Unit tesztelés, Mock, Folyamatok és szálak kezelése).
Kódok
MÉRNÖKINFOA saját kurzusaimhoz tartozó laboranyagok kódjai és egyéb további, nem kód jellegű anyagai (pdf, pptx stb.) itt találhatók meg. Utóbbi a _other-materials
mappában. Korábbi félévek anyagai illetve kódjai az _archived
mappában találhatók.
Részletekért a repository gyökerében található README.md
állományt érdemes elolvasni.
Repo processor
JELENLEG NEM AKTÍVFéléves feladatok állapotát (GITSTATS kimenet) feldolgozó és megjelenítő program.
Helyette: GitStat v3
Követelmények, menetrend
Féléves követelmények, menetrend és egyéb általános információk ismertetése.
A követelmények az egyes félévekben eltérhetnek! Az adott előző félévre vonatkozó követelményeket ismertető videót itt lehet megnézni: 2020-21-1, 2020-21-2, míg az aktuális félév követelményét tartalmazó hivatalos dokumentumot pedig az oldal tetején található "követelmény megtekintése" linken keresztül.
! FIGYELEM !Az alábbi videós anyagok korábbi (pandémiás) félévekben/hez készültek, így bizonyos fokú eltérések lehetségesek az éppen aktuális félévhez képest. Minden aktuális tartalom a (mostmár) fizikai formában megtartott órákon kerül leadásra!
Labor 01 - Delegáltak
Delegáltak felépítése. Beépített (action, func, predicate) és saját delegáltak létrehozása, használata. Névtelen metódusok és lambda kifejezések használata. Rendezés és bináris keresőfa kiegészítése delegálttal mint metódus paraméter.
Labor 02 - LINQ, XML
Névtelen osztályok és a var kulcsszó (típus) kapcsolata. IEnumerable típus megismerése. LINQ query és method syntax megismerése, valamint feladatok megoldása. XML struktúra megismerése és feldolgozása .Net környezetben, kiegészítve LINQ lekérdezésekkel.
Labor 03 - Reflexió
Attribútumok használata és készítése. Reflexió használata a programkódban található típusok (és az azokból elérhető további meta-adatok) dinamikus, futás közbeni vizsgálatára. Attribútumok alapján történű szűrés. A feldolgozott adatok XML fájlba írása.
Labor 04 - Adatbázis
Code-First adatbázis létrehozása és használata EntityFrameworkCore segítségével. Attribútumok / annotációk (pl. Required, NotMapped stb.) és Fluent API használata az entitások közötti relációk beállítására. Alapvető CRUD műveletek és komplexebb lekérdezések az adatbázison. Extension method létrehozása az IEnumerable feldolgozására, mint a LINQ lekérdezések eredménye.
Labor 05 - Rétegzés
Rétegzett alkalmazás létrehozása class library-k segítségével. Data (code-first, EFCore), Repository, Logic és "UI" rétegek alkalmazása. Dependency Injection (konstruktoron keresztül) alkalmazása a rétegek közötti függőségek kezelésére.
Labor 06 - Egységtesztelés
A rétegzett alkalmazás logic rétegének tesztelése NUnit segítségével. AAA megközelítés alkalmazása a tesztek folyamán.
Labor 07 - Mockolás
NEM ELÉRHETŐA rétegzett alkalmazás logic rétegének tesztelése, a függőségek kiváltásával Moq keretrendszer segítségével. AAA megközelítés alkalmazása a tesztek folyamán.
Labor 08 - Párhuzamos programozás I.
Párhuzamos programozás megvalósítása Process-szek és Thread-ek segítségével .Net Core környezetben. Adatpárhuzamosság bemutatása Thread segítségével: szöveges állományok párhuzamos feldolgozása, majd szinkronizációs pont alkalmazása után ezek összefésülése. Webes statisztika készítése Thread-ek segítségével, párhuzamos végrehajtási formában. Az eredmények kiírása JSON és XML állományba, majd ezek megnyitása Process-ek segítségével.
Labor 09 - Párhuzamos programozás II.
Párhuzamos programozás megvalósítása Task-ok segítségével .Net Core környezetben. Continuation szerkezet bemutatása. Task cancellation kezelése try-catch valamint continuation felhasználásával. Kritikus szakasz szemléltetése lock (illetve annak hiányának) használatával. RSS olvasó implementálása több szálon. Párhuzamos folyamatok leállítása, visszavonása cancellation token segítségével.
Gyakorló feladatmegoldás I.
GYAKORLÁS EGYSZERŰEgyszerűbb, egy entitásos feladatsor megoldása. Adatbázis használat, XML feldolgozás, attribútumokon keresztüli vizsgálat reflexió segítségével, LINQ lekérdezések írása, Unit tesztek létrehozása.
Gyakorló feladatmegoldás II.
GYAKORLÁS KOMPLEXKomplexebb, két entitásos feladatsor megoldása melyek one-to-many relációban állnak egymással. Adatbázis használat reláció definiálással, XML feldolgozás, attribútumokon keresztüli vizsgálat reflexió segítségével, LINQ lekérdezések írása, Unit tesztek létrehozása.
Előadás 06 - Web API
ELŐADÁSMi a szerver-kliens alapú kommunikáció és a weboldalak valamint webalkalmazások hogyan kapcsolódnak ehhez. Adatszerializáció és -deszerializáció fogalmának megismerése a JSON formátum esetén. Hogyan változtatták meg az API-alapú megközelítések a web felhasználását, mi maga az API és a SOAP valamint REST fogalmak hogyan kapcsolódnak ezekhez. Hogyan használhatók a HTTP metódusok az API-kkal közösen. Mi az API-first megközelítés és miért fontos ez. Mi a CORS probléma.
Előadás 09 - Párhuzamos programozás I.
ELŐADÁSBevezetés a párhuzamos végrehajtás, valamint a párhuzamos programozás alapjaiba. Miért fontos a párhuzamosítás a számítástechnikában és hogyan érhető el. Mi az adatdekompozíció fogalma. Hogyan működik egy futószalag (pipeline) elvű feldolgozás. Mi a különbség a multiprocessing és a multithreading fogalmak között. Mi a különbség a process-ek és a thread-ek között, valamint hogyan használhatók ezek a típusok a .Net Core-ban.
Előadás 10 - Párhuzamos programozás II.
ELŐADÁSHogyan használhatók a task típusok .Net Core-ban. Mi a különbség a task és a thread között, előtérbe helyezve előbbinek az előnyeit. Mi a kapcsolat a task, thread illetve a threadpool fogalmak között. Hogyan szinkronizálhatók a task-ok. Hogyan lehet kivételeket, valamint ún. cancellation-t (visszavonás) használni task-ok esetén- A következő párhuzamos programozás esetén felmerülő jelenségek ismertetése: versenyhelyzet, holtpont, élőpont, szinkronizáció, kritikus szakasz, kölcsönös kizárás. Mi az a lock objektum, hogyan használhatók az atomi műveletek és mi az a szemafor.
Előadás 11 - Párhuzamos programozás III.
ELŐADÁSMi az a maximális felső határ amelyet el lehet érni a gyorsulás tekintetében, párhuzamos végrehajtás esetén (szemben a szekvenciálissal). Hogyan számolható ez ki Amdahl törvényét felhasználva. Mit jelentenek a szemcsézettség és a terheléskiegyenlítés fogalmak többszálú végrehajtás esetén. A következő fogalmak ismertetése: aszinkron metódusok, async-await szerkezet, threadpool, adatpárhuzamosság a TPL library-t felhasználva (parallel for / foreach / invoke and parallel LINQ). Az async-await szerkezet összehasonlítása C# és JavaScript esetén.