Předvánoční Black Friday Předvánoční Black Friday
Až 80% zdarma! Předvánoční BLACK FRIDAY akce. Více informací

Lekce 1 - E-shop v ASP.NET Core MVC - Struktura řešení

C# .NET ASP.NET ASP.NET Core E-shop E-shop v ASP.NET Core MVC - Struktura řešení

ONEbit hosting Unicorn College Tento obsah je dostupný zdarma v rámci projektu IT lidem. Vydávání, hosting a aktualizace umožňují jeho sponzoři.

Vítám všechny středně pokročilé a pokročilé programátory u kurzu E-shop v ASP.NET Core 2.X MVC. Je určen pro všechny, kteří mají za sebou základy této technologie alespoň v rozsahu zdejších Základů ASP.NET Core MVC a chtějí se posunout na další úroveň. V tomto on-line kurzu vytvoříme plně funkční e-shop s využitím následujících technologií:

  • Entity Framework Core - ORM s metodikou Code First
  • Repository - návrhový vzor pro práci s daty
  • ASP.NET Identity - framework pro správu uživatelů a rolí, autentizaci a autorizaci
  • Extension metody - ukážeme si příklady, jak rozšířit funkcionalitu stávajících tříd
  • Generické třídy - umí ušetřit spoustu psaní a věřím, že si je oblíbíte
  • AutoMapper - pomáhá s mapováním tříd
  • Javascript - trocha kódu bude i na straně klienta
  • AJAX a mnoho dalších ...

Kurz vás dokonale připraví na zaměstnání v C# .NET, jelikož většina pracovních pozic vyžaduje kromě samotného C# dobrou znalost webového frameworku ASP.NET, zkušenosti s modernějším Core jsou vítanou výhodou. Samozřejmě můžete znalosti využít i do svého podnikání.

Základní požadavky na e-shop

Jelikož obchod bude opravdu reálně použitelný, zamysleme se alespoň nad základními požadavky:

  • Správa uživatelů a rolí - Tak jako ve většině webových aplikací i zde je potřeba rozlišovat běžné návštěvníky e-shopu od administrátorů, kteří mají dostupných více funkcionalit. Navíc ještě musíme umožnit nákup i neregistrovaným uživatelům (uživatelům bez přihlašovacích údajů).
  • Správa produktů a kategorií - Přehledně zobrazit produkty (včetně jejich obrázků) s možností vkládání a editace. Zařazovat produkty do kategorií. Vyhledávat, filtrovat a řadit produkty ve výpisu. Umožnit uživatelům napsat hodnocení zakoupeného produktu.
  • Systém objednávek - Vést uživatele nákupním procesem od vložení zboží do nákupního košíku přes zadání fakturačních údajů a výběr způsobu dopravy až po dokončení objednávky včetně odeslání potvrzovacího emailu.
  • Historizace záznamů - Zajistit integritu a platnost dat. Žádné provedené úpravy nesmějí ovlivnit již provedené transakce v e-shopu.
  • Responzivní web design - Přehledně zobrazovat stránky i na displejích s menším rozlišením.

Požadovaný vzhled aplikace

Požadovaný vzhled si přiblížíme na následujících obrázcích:

Přehled produktů z vybrané kategorie Přehled produktů z vybrané kategorie

Registrační formulář Registrační formulář

Přehled produktů v košíku – první krok při dokončení objednávky Přehled produktů v košíku - první krok při dokončení objednávky

Začínáme...

Ve Visual Studiu si vytvořte si nový projekt typu ASP.NET Core Web Application (já budu pracovat ve Visual studiu 2017 Community Edition - silně doporučuju používat alespoň verzi 15.7+). Tutoriál je psán pro verzi Core 2.1. Pokud tuto verzi nainstalovanou nemáte, můžete si aktuální SDK stáhnout zde. Zvolíme také Authentication Individual User Accounts.

Vytvoření projektu

Obrázek 4 - Vytvoření projektu

Struktura řešení

Reálné komerční projekty mají spoustu tříd a určitě bychom si v nich nevystačili pouze s rozdělením struktury projektu na modely, kontrolery a pohledy. Mít v jedné složce desítky souborů je minimálně nepřehledné. Kód by se špatně spravoval a z vlastní zkušenosti mohu říci, že byste se dostali do bodu, kdy byste psali podobné metody znovu a znovu místo toho, abyste parametrizovali nějakou existující, protože byste zkrátka ani nevěděli, že v projektu nějaká podobná již je. A to je začátek konce :). Jak z toho ven?

Projekty

Celé řešení rozdělíme do více vrstev. Každá vrstva bude v samostatném projektu. Náš projekt bude středně složitý, proto si vystačíme s následujícími vrstvami:

  • Datová vrstva - Bude obsahovat část, která se bude starat o ukládání a načítání dat. Ostatní části řešení budou využívat její metody (a v našem případě asi i třídy), aniž by se zajímaly o to, kde jsou vlastně data uložena a jakým způsobem. Metody pro práci s daty implementujeme do této vrstvy v podobě repositářů.
  • Business vrstva - Bude obsahovat téměř všechnu logiku našeho řešení rozdělenou do tzv. manažerů podle entit, ke kterým dané metody patří. Dále sem přidáme nějaké pomocné třídy, ViewModely a nějaký "mapper", který nám pomůže přetypovávat třídy mezi sebou.
  • Aplikační vrstva - To je ten náš (zatím jediný) vytvořený projekt. Bude obsahovat hlavně kontrolery a pohledy (většina modelů bude v business vrstvě) a samozřejmě také další části, které patří k webové aplikaci - CSS styly, skripty, obrázky apod.

Přidejte si tedy do nového řešení 2 projekty (například v místní nabídce Solution -> Add -> New Project -> Class Library). Co se pojmenování týče, doporučuji všude používat výhradně angličtinu, takže je pojmenujte například EShop.Business a EShop.Data. Čeština je v programování pouze pro začátečníky a v reálných aplikacích by se objevovat neměla. Minimálně to zvýší čitelnost vašeho kódu pro další programátory.

Nastavení referencí

Abychom mohli v jednom projektu využívat objektů z jiného projektu, musíme si nastavit reference. Nejjednodušším způsobem je asi využít místní nabídku. V Solution Exploreru klikněte v Business projektu pravým tlačítkem myši na projekt, zvolte Add -> Reference. V levé části okna vyberte Projects a zaškrtněte Data projekt. Obdobným způsobem nastavte referenci z Aplikačního projektu na Business projekt. Protože naše aplikace bude ještě v udržitelném rozsahu, nebudeme v business vrstvě využívat žádné DTO nebo DAO modely a nastavíme si referenci i z Aplikačního projektu na Data projekt. U ještě větších aplikací bývá Aplikační vrstva od datové úplně odstíněna, nám bude bohatě stačit, když si vyzkoušíme jen toto logické rozdělení.

Složky

V jednotlivých projektech si budeme uspořádávat soubory s kódem do složek (a třídy do odpovídajících jmenných prostorů). Výslednou strukturu hotového projektu můžete vidět na obrázku č. 5. Význam složek se dá většinou odvodit z jejich názvu. Složky si nyní vytvářet nemusíte, budeme je vytvářet postupně podle potřeby.

Struktura řešení

Obrázek 5 - Navrhovaná struktura řešení

To by bylo pro dnešek vše. Máme představu o tom, jak bude vypadat struktura našeho řešení a proč. V příští lekci, E-shop v ASP.NET Core MVC - Identity, databáze a layout, se podíváme na konfiguraci ASP.NET Identity.


 

 

Článek pro vás napsal Martin Petrovaj
Avatar
Jak se ti líbí článek?
1 hlasů
Autor je lenivý vymýšľať nejaký slušný podpis. Venuje sa ale prevažne C#.
Aktivity (3)

 

 

Komentáře

Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zatím nikdo nevložil komentář - buď první!