Haladó Fejlesztési Technikák

2020 őszi szemeszter

A 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

BPROF

A 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.

Részletekért a repository gyökerében található README.md állományt érdemes elolvasni.

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.

delegate delegate as parameter multicast Func Predicate Action anonymous methods lambda expressions outer variable trap expression lambda statement lambda

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.

XML hierarchical XDocument XElement XAttribute LINQ var extension methods from select where join orderby query syntax method syntax chaining IEnumerable anonymous class

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.

meta-data reflection Type assembly MethodInfo PropertyInfo FieldInfo attribute

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.

ORM EFCore DbContext DbSet fluent API annotation attributes code first eager loading lazy loading

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.

layer SOLID ORM EFCore DbContext DbSet IQueryable fluent API annotation code first eager loading lazy loading logic repository dependency inversion dependency injection constructor injection loose coupling

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.

NUnit TestFixture Setup OneTimeSetup AAA arrange act assert attribute reflection TDD fluent syntax logic layer

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.

dependency inversion dependency injection constructor injection fake objects mock objects Moq AAA arrange act assert attribute TestFixture Setup

Előadás - Párhuzamos programozás

ELŐADÁS

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.

A frissített és részletesebb előadások itt érhetők el, Párhuzamos programozás I.,II. és III. nevű, előadással jelzett blokkok közül. A Mérnökinformatikus képzésen nagyobb teret kap a párhuzamos programozás, kiváltképpen annak elméleti része, ezért részletesebben kerülnek a témakörök feldolgozásra.

data decomposition pipeline Process Thread multiprocessing multithreading threadpool asynchronous background worker Task threadpool race condition deadlock livelock starvation threadsafe synchronization critical section Interlocked lock semaphore Monitor CancellationToken AggregateException atomicity atomic operation threadpool speedup granularity asynchronous async-await data-parallelism TPL LINQ

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.

Archív tartalom itt érhető el.

parallel programming Process Thread XML JSON

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.

Archív tartalom itt érhető el.

parallel programming Process Task RSS XML cancellation token aggregate exception handle continuation lock

Előadás 10 - Web API

ELŐADÁS

Mi 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.

Archív tartalom itt érhető el.

server client request response GET POST HTTP method JSON serialization deserialization TCP UDP SOAP REST Swagger API-first CORS

Labor 10 - Web API

API-k felhasználása, adatok konverziója Newtonsoft JSON segítségével. Saját API végpont létrehozása NancyFx library segítségével.

API GET NancyFx JSON