22 Flashcards
(7 cards)
1
Q
Popište principy ASP.NET MVC/Core,
A
- ASP.NET MVC/Core = Frameworky od společnosti Microsoft založené na architektonickém vzoru Model-View-Controller, který rozděluje odpovědnosti aplikace právě do těchto tří částí.
- Model = Jedná se o množinu tříd, které popisují business logiku aplikace a definují způsob práce s daty. Definují tedy pravidla, jak mohou být data měněna, jak s něma lze manipulovat a zpracovávat je. O plnění modelu daty se starají controllery s využitím dalších vrstev (services). Model udržuje také stav systému. Je běžné mít modely v separátní assembly nebo knihovně pro zjednodušení sdílení. Pod model spadá i ViewModel, který umožňuje sloučit více modelů do jedné třídy a tu pak zobrazit ve view.
- View = View je zobrazení, do kterého posíláme Model z Controlleru a na základě modelu dynamicky renderujeme uživatelské rozhraní, je to tedy to, co uživatel vidí a s čím interaguje (formuláře, tlačítka). View tedy zobrazuje data, která získá od Controlleru, může obsahovat klientskou logiku. View je často realizováno jako kombinace HTML a JavaScript, popř. TypeScript kódu. V ASP.NET realizované ve formě .cshtml souborů využívající šablonovací engine Razor, který využívá kombinaci HTML a C# kódu. Mohou být: Strongly Typed (View je přidělený model, engine dokáže pracovat s informacemi v modelu),
Partial View (view sdílené mezi více stránkami – komponenta), Master/Layout page (sdílený Layout napříč všemi stránkami). - Controller = Příjímá vstup od uživatele (příchozí dotazy, HTTP požadavky), slouží jako vstupní brána pro dotazy přicházející z frontendu, manipuluje s modelem a spouští obslužnou logiku. Volí také vhodné view pro výstup. Jedná se tedy o prostředníka mezi view a modelem/viewmodelem (získává model naplněný daty a předává ho do view). Dochází zde také k validaci dat. Veřejné metody Controlleru se nazívají akční metody a obvykle jsou mapovány 1:1 s prvky v UI. Výchozí HTTP metodou pro každou akční metodu je GET, jinak je nutné specifikovat.
2
Q
co je to area
A
- Area = Umožňují důkladnější oddělení aplikační logiky do menších celků, vhodné hlavně u velkých komplexních projektů (např. rozdělení oblastí dle typu uživatele na Admin/User). Umožňují vytváření vlastních Controllerů, Views a modelů v rámci daných oblastí. Prakticky se jedná o rozdělení souborů do složek dle oblastí, Controllery v rámci jednotlivých oblastí musí být označeny atributem [Area]. V routingu musí být vždy specifikovaná area, ve které se má hledat Controller a jeho Action.
3
Q
Co je to repository
A
- Repository = Vrstva obvykle používaná jako rozhraní mezi .NET kódem a relační databází. V závislosti na použité technologii přístupu k databázi (Dapper, EF) implementuje vhodný způsob zajištění CRUD operací nad využívanými tabulkami a jejich přemapování do objektů. Funkce obsažené v rámci repositories jsou většinou volané prostřednictvím vyšších tříd – Services. Jelikož se jedná o abstrakci práce s daty, tak je aplikace více flexibilní (je možné využít více databázových uložišť). Při použití s ORM jako je např. EF se považuje až za anti-pattern, jelikož EF generiku i určitou uroven abstrakce obsahuje.
4
Q
Co je to dependency injection
A
- Repository = Vrstva obvykle používaná jako rozhraní mezi .NET kódem a relační databází. V závislosti na použité technologii přístupu k databázi (Dapper, EF) implementuje vhodný způsob zajištění CRUD operací nad využívanými tabulkami a jejich přemapování do objektů. Funkce obsažené v rámci repositories jsou většinou volané prostřednictvím vyšších tříd – Services. Jelikož se jedná o abstrakci práce s daty, tak je aplikace více flexibilní (je možné využít více databázových uložišť). Při použití s ORM jako je např. EF se považuje až za anti-pattern, jelikož EF generiku i určitou uroven abstrakce obsahuje.
5
Q
Co je to unit of work
A
- Unit of work = Umožňuje sloučení všech transakcí v rámci repository (update, delete, insert) do jedné transakce, takže pro všechny modifikace se provede jen jedno potvrzení uložení do databáze (SaveChanges() metoda). Pokud selže alespoň jedna transakce v rámci Unit of work, tak dojde k vrácení změn všech obsažených transakcí (rollback), jinak by mohlo dojít k nekonzistentnímu obsahu databáze. Tedy všechny transakce v rámci unit of work vždy projdou nebo selžou. Snižuje duplicitu kódu a dotazů, zvyšuje se úroveň abstrakce a odděluje doménovou a aplikační logiku, lze jednoduše provádět unit testy. Reálná implementace je pak skrz interface vytvořený pro Unit of work, který v sobě obsahuje repozitáře, které operují s daty. V controlleru se bude pracovat s jen interface Unit of work.
6
Q
Co jsou to šablony
A
- Šablony = ASP.NET umožňuje tvořit šablony za pomoci šablonovacího enginu Razor. View je realizováno jako .cshtml soubor, což je kombinace Razor syntaxe a HTML značkovacího jazyka. Modelem (ViewModelem) zobrazení, ze kterého můžeme zobrazovat data je standardně objekt či kolekce poslaná do View z Controlleru. Když chceme v .cshtml souboru zahájit blok kódu v syntaxi Razoru, docílíme toho prostřednictvím znaku ‘@’. V šablonách Razor lze používat C# kód.
7
Q
Jaka je strukutra mvc
A
- wwwroot = Složka obsahující styly CSS, obrázky, JavaScript knihovny a další statické soubory
- Controllers = Složba obsahující třídy s Controllery
- Models = Složka obsahující modelové třídy
- Views = Složka obsahující šablony uživatelského rozhraní (views)
- Appsettings = konfigurační soubor aplikace, možno vkládat a poté získávat vlastní konfigurační hodnoty
- Program = Základní třída, ve které se spouští celá serverová část aplikace (popř. i klientská)
- Startup = Třída, ve které dochází ke konfiguraci serverové části aplikace (registrace services atd.)