21 Flashcards

(6 cards)

1
Q

Popište možnosti komunikace s databází v ASP.NET MVC/MVC Core

A
  • ASP.NET Core framewok nabízí podporu pro velké množství databázových providerů (SQL Server, MySQL, PostgreSQL, Azure, Oracle DB). Databázového providera volíme v konfigurační části aplikace, v ASP.NET Core se jedná o třídu Startup a nastavení propojení s databází se provádí v metodě ConfigureServices(). Pro připojení k databázi je také nutný tzv. Connection string, který definuje připojení k databázi a nejčastěji se ukládá do appsettings.json souboru. Každý databázový provider má rozdílný formát connection stringu, ale v zásadě obsahuje zařízení/server na kterém databázový server běží, název databáze, se kterou se chceme spojit, popř. nějaké přihlašovací údaje k databázovému serveru.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

Entity framework

A
  • Je to framework zaměřený na objektově relační mapování (ORM). Minimalizuje anebo úplně odstraňuje nutnost psát přímý SQL kód pro přístup k datům. Místo toho nabízí práci s daty za pomoci LINQ metod nebo jiných metod pracujících s kolekcemi. Zrychluje podstatně implementaci základních CRUD (Create, Read, Update, Delete) operací nad tabulkami databáze.
  • Umožňuje tedy namapovat databázové tabulky na .NET modely, včetně jejich referencí na další modely. Přístup k datům je prováděn na základě třídy, která se skládá z Entit a kontextu. Kontext reprezentuje propojení s databází a Entity jsou modely seskupené do DbSet kolekcí. Mapování probíhá standardně na základě shody názvu sloupce a názvem property v příslušném modelu. Tabulky pak mají název stejně jako Entita typu DbSet.
  • Je možné implementovat code first i database first přístupem. Při Code first přístupu se modely dají konfigurovat pomocí DataAnnotations knihovny a nebo lze mapování konfigurovat v metodě OnModelCreating()
  • Dotazy lze provádět pomocí jazyka LINQ nebo lambda výrazů, ale lze je psat i manuálně jako přímý SQL kód
  • Podporuje Eager loading (závislá data jsou načtena z databáze jako součást dotazu), Explicit loading (závislá data jsou explicitně načtena z databáze v pozdějším čase), Lazy loading (závislá data jsou načtena až ve chvíli, kdy probíhá přístup k dané property)
  • Využívá se zde Migrací, které slouží ke synchronizaci dat modelů a databáze (aktualizuje se tak schéma databáze aniž by se ztratily data, což je v produkci velmi důležité)
  • Je možný také Seeding dat, což je naplnění databáze nějakými počátečními daty při spuštění migrace
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

database first a codefirst

A
  • Database first = Nejdříve vytvoříme databázi, tabulky a vazmi mezi nimi a z té potom reverzně sestrojíme modely. Tento přístup je preferovaný pro velké aplikace založené na práci s daty, nevýhodou ale pak je, že při změně struktury databáze je nutné upravit i modely v aplikaci.
  • Code first = Nejdříve se vytvoří modely v kódu aplikace, zde se vydefinují např. pomocí DataAnotations knihovny specifika pro jednotlivé sloupce, která properta má být primární klíč, cizí klíč atd. a následně jsou z těchto modelů vygenerovány tabulky.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

LINQ

A
  • Language Integrated Query (syntaktické a funkční rozšíření frameworku .NET) není sám o sobě formou přístupu k databázi, ale často se používá na jednodušší zpracování/filtraci dat, které proudí z/do databáze.
  • Umožňuje pokročilé možnosti selekce či modifikace objektů v rámci kolekce.
  • Je to jednotná syntaxe pro přístup k datům bez ohledu na jejich zdroj (databáze, objekt v paměti, XML), tedy stejný příkaz bude fungovat pro jakoukoliv z těchto kolekcí
  • Umožňuje jednodušší realizaci DB konceptů, jako je například funkcionalita ekvivalentní ke klíčovým slovům „GROUP BY“ či „ORDER BY“. LINQ v mnohých metodách používá svoji syntax realizovanou buď pomocí lambda výrazů či syntaxy značně podobnou jazyku SQL.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

ADO.NET

A
  • Je to knihovna obsahující třídy pro přístup k datům a tvorbu databázových aplikací. Je přímo integrovaná v .NET Frameworku a zprostředkovává přístup k relačním, XML a aplikačním datům. Mezi výhody patří především jednoduchý způsob použití a rychlost při zpracování dat, může také přistupovat k nerelačním zdrojům dat.
  • Konceptuálně se dělí na konzumenty a poskytovatele dat. Konzumenti jsou aplikace, které potřebují přístup k datům a poskytovatelé jsou třídy, které poskytují data konzumentům.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q
  • Je to knihovna obsahující třídy pro přístup k datům a tvorbu databázových aplikací. Je přímo integrovaná v .NET Frameworku a zprostředkovává přístup k relačním, XML a aplikačním datům. Mezi výhody patří především jednoduchý způsob použití a rychlost při zpracování dat, může také přistupovat k nerelačním zdrojům dat.
  • Konceptuálně se dělí na konzumenty a poskytovatele dat. Konzumenti jsou aplikace, které potřebují přístup k datům a poskytovatelé jsou třídy, které poskytují data konzumentům.
A

XML HTTP Request
- XML http Request je objekt pomocí kterého lze zaslat data na server bez nutnosti přenačtení stránky. Využívá se v AJAX programování (asynchronním programování).
- Podporuje nejen XML, ale i další formáty (XML, JSON, HTTP, File)
- Jelikož je request asynchronní, tak se využívá tzv. Promises, což jsou objekty reprezentující právě vykonávanou akci a její eventuální dokončení (ať už úspěšné nebo neúspěšné). Na promise navazujeme callback funkci, která zabezpečuje pak další obsluhu v závislosti na response serveru. Standardně je promise splněný, když dorazí odpověd od serveru, ať už je jakákoliv.
- Možné využít množství přístupů: String (přímo v query), FormData (při submitování formuláře), Blob, BufferSource. Pro GET dotazy je preferovaný string, pro POST pak JSON struktura.
- Je zde nutné nastavit headery pro příslušné typy zasílaných dat.
jQuery AJAX
- Na pozadí se volá XML http Request, santaxe je však příjemnější a umožňuje specifikaci vlastností volání prostřednictvím vlastností objektu, nastavuje headery charakterizující zasílaná data automaticky.
- Různé frontendové frameworky pak využívají HttpClient, který obdobně poskytuje příjemnější syntaxi pro zasílání HTTP požadavků na server. HttpClient využívá na pozadí Fetch API. Fetch je nativní prohlížečové API obsažené v JavaScriptu pro zasílání HTTP requestů, je to ideální náhrada za XMLHttpRequest, je jednodušší, využívá promise místo callback funkcí.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly