IT rekvalifikácia. Seniorní programátori zarábajú až 6 000 €/mesiac a rekvalifikácia je prvým krokom. Zisti, ako na to!

Diskusia – 1. diel - E-shop v ASP.NET Core MVC - Štruktúra riešenie

Späť

Upozorňujeme, že diskusie pod našimi online kurzami sú nemoderované a primárne slúžia na získavanie spätnej väzby pre budúce vylepšenie kurzov. Pre študentov našich rekvalifikačných kurzov ponúkame možnosť priameho kontaktu s lektormi a študijným referentom pre osobné konzultácie a podporu v rámci ich štúdia. Toto je exkluzívna služba, ktorá zaisťuje kvalitnú a cielenú pomoc v prípade akýchkoľvek otázok alebo projektov.

Komentáre
Avatar
Adam Gajdečka:21.12.2018 14:11

Jakou tu class library mám přidat? Mám jich v nabídce mnoho. Byl bych rád, kdyby to bylo potom použitelné třeba i v mobilní appce, ale Class Portable nenabízí Core 2.1 pouze Core 1.0 a to mám nainstalované ty additional targets.

Díky

 
Odpovedať
21.12.2018 14:11
Avatar
Martin Petrovaj
Tvůrce
Avatar
Odpovedá na Adam Gajdečka
Martin Petrovaj:21.12.2018 14:30

Štandardne by si chcel pri vytváraní nového projektu ísť cez Visual C# -> .NET Core -> Class Library (.NET Core). Pokiaľ máš ale nejaké špecifické požiadavky, tak ti k tomu bohužiaľ veľmi poradiť neviem :-(

Ak ti chýbajú novšie verzie .NET Core celkovo, nie len pre portable, tak sa uisti, že máš nainštalovaný aktuálny .NET Core SDK. Ak sa ti o to nevie postarať VS, môžeš to vyskúšať aj manuálne.

Odpovedať
21.12.2018 14:30
if (this.motto == "") { throw new NotImplementedException(); }
Avatar
Martin Petrovaj
Tvůrce
Avatar
Odpovedá na Adam Gajdečka
Martin Petrovaj:21.12.2018 14:59

Dokonca som sa teraz pozeral na dokumentáciu od MS a neodporúčajú používať na cross-platform vývoj portable class libraries (zdroj). Pokiaľ chceš zaistiť svojmu projektu čo najväčšiu kompatibilitu naprieč rôznymi zariadeniami, mal by si správne targetovať .NET Standard. Pokiaľ si schopný dostať do zariadenia, na ktorom program pobeží .NET Core, tak by malo byť OK targetovať aj ten.

Odpovedať
21.12.2018 14:59
if (this.motto == "") { throw new NotImplementedException(); }
Avatar
Odpovedá na Martin Petrovaj
Adam Gajdečka:21.12.2018 15:20

ok, díky. Takže v tomto projektu můžu bez problémů používat .NET Standard?

 
Odpovedať
21.12.2018 15:20
Avatar
Martin Petrovaj
Tvůrce
Avatar
Odpovedá na Adam Gajdečka
Martin Petrovaj:21.12.2018 15:33

DAL (spomínaný dátový projekt) bude pracovať s ASP.NET Core Identity a s Entity Framework Core. Nekontroloval som to, ale tieto veci budú mať zrejme závislosti na .NET Core.

BL (business projekt) by na tom mohol byť lepšie, ale nedokážem ti zaručiť, že rôzne 3rd party knižnice používané v seriáli nebudú potrebovať .NET Core.

Celkovo je celý seriál o ASP.NET Core, tak by s tým trebalo tak trochu počítať :-) Väčšinou keď už sa aj robia mobilné appky k rôznym produktom, ktoré sú pôvodom na webe, tak sa to aj tak nerobí v .NETe / Xamarine, ale v nejakej používanejšej technológii (pre Android obvykle Kotlin / Java, pre produkty od Applu Swift). Mobilná aplikácia potom komunikuje s tou webovou cez jej API.

Odpovedať
21.12.2018 15:33
if (this.motto == "") { throw new NotImplementedException(); }
Avatar
Odpovedá na Martin Petrovaj
Adam Gajdečka:21.12.2018 16:55

ok.

Ještě mám dotaz, není dobré používat Area v projektu?

 
Odpovedať
21.12.2018 16:55
Avatar
Martin Petrovaj
Tvůrce
Avatar
Odpovedá na Adam Gajdečka
Martin Petrovaj:21.12.2018 16:58

Ak chceš, tak ich kľudne používaj. Osobne si ale myslím, že to má zmysel až od veľmi rozsiahlych projektov, tam to môže prísť vhod na prehľadnejšiu organizáciu pohľadov a pod.

Ak ich ale chceš použiť v tomto eshope, počítaj s tým, že ich budeš musieť sám zohľadniť v routovaní. Pri tom sa budeš musieť riadiť prevažne dokumentáciou od MS, keďže tento seriál areas nikde nevyužíva.

Odpovedať
21.12.2018 16:58
if (this.motto == "") { throw new NotImplementedException(); }
Avatar
Odpovedá na Martin Petrovaj
Adam Gajdečka:23.12.2018 21:38

ok, díky. Už s tím mám zkušenosti a je to super.

Co mě hlavně zajímalo v tomto kurze je to, že vidím konečně, jak správně vytvořit strukturu projektu a oddělit projekt do jednotlivých vrstev.

 
Odpovedať
23.12.2018 21:38
Avatar
Adam Gajdečka:28.12.2018 16:39

Potřebuji posílat pěkné html emaily a metody k odeslání jsou v business vrstvě. Kam si uložit html šablonu a jednotlivé html emaily? V jaké vrstvě mají správně být. V datové?

Díky

 
Odpovedať
28.12.2018 16:39
Avatar
Martin Petrovaj
Tvůrce
Avatar
Odpovedá na Adam Gajdečka
Martin Petrovaj:28.12.2018 17:14
  • Dátová vrstva (presnejšie v angl. Data Access Layer - vrstva pre prístup k dátam) ti obvykle získava dáta z databázy, API iných aplikácií, prípadne nejakých špeciálnych súborov tvojej aplikácie.
  • Business vrstva sa stará o spracovanie dát (či už z dátovej, alebo aplikačnej vrstvy) podľa logiky a pravidiel, ktoré tam naprogramuješ. Obsahuje objekty, ktorých úlohou je nad dátami vykonávať rôzne operácie, aby sa nimi neznečisťovali ostatné vrstvy. Business vrstva často sama využíva ešte ďalšie, menšie projekty a knižnice, ktoré riešia vždy jednu konkrétnu vec.
  • Aplikačná alebo prezentačná vrstva by sa ideálne mala zaoberať len zobrazovaním výstupu a dát používateľovi (s tým, že na základe jeho vstupu v nej často začína flow tvojej aplikácie, prevolávajú sa z nej metódy business vrstvy atď).

Pri plánovaní a vytváraní nových súčastí aplikácie a ich následnom rozdeľovaní by si sa mal (pri takejto 3-vrstvej architektúre) riadiť týmito základnými poučkami a zdravým rozumom.

HTML šablóny do emailov znie ako niečo, čo sa proste nakŕmi dátami a zobrazí používateľovi. Plus je to pravdepodobne (dizajnovo, graficky) naviazané na zvyšok tvojej prezentačnej vrstvy, akonáhle sa tam niečo významne zmení, bude potrebné meniť aj tie šablóny. Nie je to niečo, čo by malo zmysel alebo sa dalo portovať medzi rozdielnymi aplikáciami a riešeniami (pekný týždenný email z dámskeho eshopu a z banky asi budú vyzerať, mierne povedané, inak). Osobne by som to dal do tejto vrstvy v momente, keď som prečítal skratku HTML.

Metódy na odosielanie mailov sú v business vrstve, pretože riešia presne a len to - odosielanie mailov. Nestarajú sa o to, čo sú to za maily, odkiaľ prišli a kam idú. Proste príde nejaký string (či už ako plain text, HTML, byte string, whatever) a ten objekt ho pošle na jeho šťastnú cestu internetom. Nemal by si mať žiaden problém s použitím toho istého objektu bez úprav v rôznych projektoch, ktoré emaily posielať potrebujú.

No a potom tu ostáva posledná otázka, a síce čo ti odosielanie tých emailov riadi. Odošlú sa po nejakej akcii používateľa (napr. po registrácii alebo zakúpení tovaru)? Tak nech si to ošéfuje daný controller - povie business vrstve, tu máte takýto pekný email, pošlite ho na adresu užívateľa x. Done. Má sa posielať vždy v určitý čas? Má sa poslať po nejakom inpute alebo zmene u tretej strany? V takýchto prípadoch už sa treba zamyslieť viac.

Odpovedať
28.12.2018 17:14
if (this.motto == "") { throw new NotImplementedException(); }
Robíme čo je v našich silách, aby bola tunajšia diskusia čo najkvalitnejšia. Preto do nej tiež môžu prispievať len registrovaní členovia. Pre zapojenie sa do diskusie sa zaloguj. Ak ešte nemáš účet, zaregistruj sa, je to zadarmo.

Zatiaľ nikto nevložil komentár - buď prvý!