{"id":84,"date":"2016-04-02T19:44:29","date_gmt":"2016-04-02T17:44:29","guid":{"rendered":""},"modified":"2018-09-17T21:52:27","modified_gmt":"2018-09-17T19:52:27","slug":"web-mvc-microsoft-asp-net-mvc","status":"publish","type":"post","link":"https:\/\/spireng.sk\/en\/web-mvc-microsoft-asp-net-mvc\/","title":{"rendered":"Web + MVC + Microsoft = ASP.NET MVC"},"content":{"rendered":"<p><img loading=\"lazy\" decoding=\"async\" class=\"imgp_img\" style=\"float: left; margin: 2px 5px;\" src=\"\/sites\/default\/files\/imagepicker\/1\/f5ds4afsd5.jpg\" alt=\"Obr\u00e1zok\" width=\"170\" height=\"215\" \/>Ako v\u0161etko vo svete IT, aj jedna z jeho najd\u00f4le\u017eitej\u0161\u00edch \u010dast\u00ed &#8211; web &#8211; sa pos\u00fava neust\u00e1le dopredu. Ned\u00e1 sa to ignorova\u0165, preto\u017ee nov\u00e1 doba v\u017edy prin\u00e1\u0161a nov\u00e9 mo\u017enosti, ale aj nov\u00e9 hrozby. A ani firmy ako Microsoft to nem\u00f4\u017eu ignorova\u0165, a tak st\u00e1le prich\u00e1dzaj\u00fa s nov\u00fdmi n\u00e1strojmi, ktor\u00e9 by mali lep\u0161ie sp\u013a\u0148a\u0165 aktu\u00e1lne po\u017eiadavky. Jedn\u00fdm z tak\u00fdch (nov\u0161\u00edch) je ASP.NET MVC. V tomto \u010dl\u00e1nku sa pozrieme na knihu Professional <a href=\"http:\/\/www.bookdepository.com\/Professional-ASPNET-MVC-4-Jon-Galloway-Phil-Haack-Brad-Wilson-K-Scott-Allen-Scott-Hanselman\/9781118348468?ref=grid-view\">ASP.NET MVC 4<\/a>, ktor\u00e1 bola nap\u00edsan\u00e1 pr\u00e1ve o tomto frameworku.<!--more--><!--break--><\/p>\n<p>Kniha je ide\u00e1lna pre \u013eud\u00ed, ktor\u00ed u\u017e nie\u010do v .Nete naprogramovali, pr\u00edpadne maj\u00fa dokonca sk\u00fasenosti s ASP.NET. Ak o .Nete ni\u010d neviete, tak treba za\u010da\u0165 niekde inde, preto\u017ee tu \u017eiadne lekcie C# alebo Visual Basic-u nen\u00e1jdete. Namiesto toho kniha \u0161tartuje preh\u013eadom, \u010do to ASP.NET MVC je. A \u010do to vlastne je? Je to framework, ktor\u00fd je postaven\u00fd na MVC vzore. Budem predpoklada\u0165, \u017ee u\u017e ste o \u0148om po\u010duli a len pripomeniem, \u017ee je to vzor, ktor\u00fd rozdel\u00ed triedy (alebo objekty) do troch kateg\u00f3ri\u00ed pod\u013ea ich zodpovednosti. Model udr\u017eiava d\u00e1ta, validuje ich a m\u00f4\u017ee ich \u010diasto\u010dne spracov\u00e1va\u0165. View zobrazuje \u00fadaje a transformuje, ak treba, do nejakej reprezent\u00e1cie. A tie\u017e m\u00f4\u017ee prij\u00edma\u0165 vstup od pou\u017e\u00edvate\u013ea, ale neinterpretuje ho, len prepo\u0161le Controlleru. Controller je ten, kto interpretuje vstup, rob\u00ed zmeny d\u00e1t v Modely, pr\u00edpadne vytv\u00e1ra v\u00e4zbu medzi View a Modelom. MVC m\u00e1 viacero vari\u00e1ci\u00ed, v ktor\u00fdch sa tieto zodpovednosti (a v\u00e4zby medzi r\u00f4znymi typmi tried) m\u00f4\u017eu l\u00ed\u0161i\u0165.<\/p>\n<p>ASP.NET MVC ost\u00e1va tomuto vzoru vern\u00e9, a teda tam v z\u00e1sade existuj\u00fa tieto tri hlavn\u00e9 typy tried. Aj preto je logick\u00e9, \u017ee po \u00favodnej kapitole autor venuje tri za sebou nasleduj\u00face kapitoly pr\u00e1ve controlleru, view a modelu. View je v ASP.NET MVC reprezentovan\u00e9 \u0161abl\u00f3nou, ktor\u00e1 m\u00f4\u017ee by\u0165 p\u00edsan\u00e1 pomocou r\u00f4znej syntaxe. Nat\u00edvna podpora je pre ASP.NET Web Forms (star\u0161\u00ed View engine, kde sa \u0161peci\u00e1lne v\u00fdrazy vkladaj\u00fa do HTML pomocou zna\u010diek &lt;%) a Razor (nov\u0161\u00ed &#8211; od verzie 3 &#8211; View engine, kde sa tieto v\u00fdrazy vkladaj\u00fa cez znak @). Okrem t\u00fdchto je framework modul\u00e1rny a na nete si viete n\u00e1js\u0165 in\u00e9 View enginy so syntaxou Ruby, Python alebo Nodejs \u0161ablonov\u00fdch syst\u00e9mov a pou\u017ei\u0165 tie. Controller je v podstate zoznam akci\u00ed, ktor\u00e9 s\u00fa volate\u013en\u00e9 zvonku (rozumej prehliada\u010dom alebo in\u00fdm serverom). M\u00f4\u017eu to by\u0165 akcie, ktor\u00e9 vracaj\u00fa vygenerovan\u00fa str\u00e1nku (nejak\u00e9 View, ktor\u00e9 boli spracovan\u00e9 a je z neho hotov\u00e9 HTML + Javascript) alebo m\u00f4\u017eu vraca\u0165 nie\u010do na sp\u00f4sob REST sie\u0165ovej slu\u017eby &#8211; teda d\u00e1ta v nejakej forme &#8211; napr\u00edklad JSON alebo XML. Posledn\u00fd je model. Ten predstavuje to, \u010do maj\u00fa View a Controller spolo\u010dn\u00e9. Objekt, ktor\u00fd v sebe dr\u017e\u00ed \u00fadaje, aby ich View mohlo zobrazova\u0165 a Controller pripravova\u0165\/meni\u0165.<\/p>\n<p>\u010eal\u0161ie kapitoly sa postupne venuj\u00fa r\u00f4zn\u00fdm t\u00e9mam, ktor\u00e9 nejako s\u00favisia s jednou z t\u00fdchto typov tried. Napr\u00edklad Forms a Html helpers. To s\u00fa r\u00f4zne pomocn\u00e9 triedy, ktor\u00e9 u\u013eah\u010duj\u00fa tvorenie \u0161abl\u00f3n. Je tu pou\u017e\u00edt\u00fd mechanizmus .Net Extensions Method, a teda sta\u010d\u00ed k projektu prida\u0165 spr\u00e1vne kni\u017enicu a helpery, ktor\u00e9 s\u00fa v priamo vo frameworku, zrazu z\u00edskaj\u00fa nov\u00e9 met\u00f3dy. Takto je mo\u017en\u00e9 vysklada\u0165 helpery, ak\u00e9 pre dan\u00fd projekt treba. \u010eal\u0161\u00edmy t\u00e9mami s\u00fa napr\u00edklad autoriz\u00e1cia alebo valid\u00e1cia. To druh\u00e9 je realizovan\u00e9 na strane aj server aj klienta. V klientovi nebe\u017e\u00ed \u017eiaden C# k\u00f3d, ale JavaScript a tak sa Microsoft rozhodol pre pln\u00fa integr\u00e1ciu s jQuery Validation pluginom.<\/p>\n<p>Za ten \u010das, \u010do je ASP.NET MVC na trhu, sa toho u\u017e do frameworku pridalo mno\u017esvo (kniha m\u00e1 507 str\u00e1n). Nesmie ch\u00fdba\u0165 podpora pre AJAX (napr\u00edklad aj pomocou AJAX Helperov) alebo nastavite\u013en\u00fd Routing. Routing je pomerne zauj\u00edmav\u00e1 komponenta, lebo aj ke\u010f n\u00e1zov napoved\u00e1, \u017ee by sa mal stara\u0165 o n\u00e1jdenie spr\u00e1vnej akcie v Controllery na z\u00e1klade URL, tak dok\u00e1\u017ee aj opak. Teda pre vybran\u00fd ControLler a akciu vygenerova\u0165 URL. To sa hojne pou\u017e\u00edva vo View, kde je potrebn\u00e9 zadefinova\u0165 akciu napr\u00edklad pri potvrden\u00ed formul\u00e1ra. Princ\u00edp, na ktorom je Routing postaven\u00fd, bol dokonca tak zauj\u00edmav\u00fd, \u017ee bol vytiahnut\u00fd z MVC frameworku do samostatnej kni\u017enice priamo v ASP.NET, tak\u017ee sa mu dostalo \u0161ir\u0161ieho uplatnenia.<\/p>\n<p>Medzi t\u00e9mami s\u00favisiacimi s ASP.NET MVC nem\u00f4\u017ee ch\u00fdba\u0165 NuGet package manager, Dependency Injection (v ASP.NET MVC realizovan\u00e9 pomocou DI kontajn\u00e9ra, ktor\u00fd je nutn\u00fd vybra\u0165 z nieko\u013ek\u00fdch typov) alebo Unit Testing. Ka\u017ed\u00e9mu z tohoto je venovan\u00e1 samostatn\u00e1 kapitola. Rovnako ako aj ASP.NET Web API, \u010do je svoj\u00edm sp\u00f4sobom nie\u010do ako ASP.NET MVC ale prioritne ur\u010den\u00e9 pre vytv\u00e1ranie sie\u0165ov\u00fdch slu\u017eieb (web services) nie str\u00e1nok. Posledn\u00e9 kapitoly sa venuj\u00fa roz\u0161irovaniu frameworku (ke\u010f\u017ee je do istej miery modul\u00e1rny), zlo\u017eitej\u0161\u00edm t\u00e9mam (r\u00f4zne View enginy, <span style=\"background: transparent;\">zlo\u017eitej\u0161<\/span><span style=\"background: transparent;\">\u00ed<\/span><span style=\"background: transparent;\"> routing<\/span> at\u010f) a jedn\u00e9mu re\u00e1lnemu v\u00e4\u010d\u0161iemu pr\u00edkladu.<\/p>\n<p>ASP.NET MVC nie je komplikovan\u00e1 vec. Ak m\u00e1te aspo\u0148 predstavu, \u010do to MVC je, ovl\u00e1date z\u00e1klady v\u00fdvoja pre web a pozn\u00e1te C#, tak m\u00e1te k tomuto frameworku bli\u017e\u0161ie, ne\u017e si mysl\u00edte. Mus\u00edte sa nau\u010di\u0165 syntax niektor\u00e9ho View enginu (alebo si vybra\u0165 nejak\u00fd bl\u00edzky tomu, \u010do pozn\u00e1te), pochopi\u0165 ako funguje model a ako Controllery a m\u00f4\u017eete sa pusti\u0165 do p\u00edsania. Ak ste teda niekde na za\u010diatku toho cel\u00e9ho, tak v\u00e1m knihu Professional ASP.NET MVC 4 m\u00f4\u017eem odporu\u010di\u0165. Nebude v\u00e1s za\u0165a\u017eova\u0165 za\u010diato\u010dn\u00edckymi detailami, ale sk\u00f4r t\u00fdm, \u010do je pre framework podstatn\u00e9.<\/p>","protected":false},"excerpt":{"rendered":"<p>Ako v\u0161etko vo svete IT, aj jedna z jeho najd\u00f4le\u017eitej\u0161\u00edch \u010dast\u00ed &#8211; web &#8211; sa pos\u00fava neust\u00e1le dopredu. Ned\u00e1 sa to ignorova\u0165, preto\u017ee nov\u00e1 doba v\u017edy prin\u00e1\u0161a nov\u00e9 mo\u017enosti, ale aj nov\u00e9 hrozby. A ani firmy ako Microsoft to nem\u00f4\u017eu ignorova\u0165, a tak st\u00e1le prich\u00e1dzaj\u00fa s nov\u00fdmi n\u00e1strojmi, ktor\u00e9 by mali lep\u0161ie sp\u013a\u0148a\u0165 aktu\u00e1lne po\u017eiadavky. [&hellip;]<\/p>","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[13],"tags":[],"class_list":["post-84","post","type-post","status-publish","format-standard","hentry","category-vyvoj-softveru"],"_links":{"self":[{"href":"https:\/\/spireng.sk\/en\/wp-json\/wp\/v2\/posts\/84","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/spireng.sk\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/spireng.sk\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/spireng.sk\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/spireng.sk\/en\/wp-json\/wp\/v2\/comments?post=84"}],"version-history":[{"count":1,"href":"https:\/\/spireng.sk\/en\/wp-json\/wp\/v2\/posts\/84\/revisions"}],"predecessor-version":[{"id":149,"href":"https:\/\/spireng.sk\/en\/wp-json\/wp\/v2\/posts\/84\/revisions\/149"}],"wp:attachment":[{"href":"https:\/\/spireng.sk\/en\/wp-json\/wp\/v2\/media?parent=84"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/spireng.sk\/en\/wp-json\/wp\/v2\/categories?post=84"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/spireng.sk\/en\/wp-json\/wp\/v2\/tags?post=84"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}