Webes alkalmazások fejlesztése 2. előadás. Webfejlesztés MVC architektúrában (ASP.NET)



Hasonló dokumentumok
Webes alkalmazások fejlesztése 2. előadás. Webfejlesztés MVC architektúrában (ASP.NET) Webfejlesztés MVC architektúrában Fejlesztés ASP.

Webes alkalmazások fejlesztése 2. előadás. Webfejlesztés MVC architektúrában (ASP.NET Core) Cserép Máté

Webes alkalmazások fejlesztése 2. előadás. Webfejlesztés MVC architektúrában (ASP.NET Core) Cserép Máté

Webes alkalmazások fejlesztése 6. előadás. Weblapok fejlesztése és architektúrája (ASP.NET)

Webes alkalmazások fejlesztése 8. előadás. Webszolgáltatások megvalósítása (ASP.NET WebAPI)

Webes alkalmazások fejlesztése. 9. előadás Bevezetés az ASP.NET MVC keretrendszerbe

Webes alkalmazások fejlesztése. Bevezetés az ASP.NET MVC 5 keretrendszerbe

Programozás I gyakorlat

Webes alkalmazások fejlesztése 4. előadás. Megjelenítés és tartalomkezelés (ASP.NET)

Osztály szint tagok. Krizsán Zoltán 1 [2012. március 12.] Objektumorientált programozás C# alapokon tananyag

Webes alkalmazások fejlesztése 4. előadás. Megjelenítés és tartalomkezelés (ASP.NET) Cserép Máté.

MVC Java EE Java EE Kliensek JavaBeanek Java EE komponensek Web-alkalmazások Fejlesztői környezet. Java Web technológiák

A táblázatkezelő felépítése

AWP TELEPÍTÉSE- WINDOWS7 64 OPERÁCIÓS RENDSZEREN

Models are not right or wrong; they are more or less useful.

Többfelhasználós adatbázis környezetek, tranzakciók, internetes megoldások

A szerzõrõl... xi Bevezetés... xiii

Eseményvezérelt alkalmazások fejlesztése II 12. előadás. Objektumrelációs adatkezelés (ADO.NET) Giachetta Roberto

Webes alkalmazások fejlesztése 3. előadás. Objektumrelációs adatkezelés (ASP.NET)

Web fejlesztés II. Illés Zoltán ELTE Informatikai Kar I n f o r m a t i k a

Vodafone ReadyPay. Használati útmutató

Digitális technika (VIMIAA01) Laboratórium 1

Kivétel kezelés. Krizsán Zoltán 1. Objektumorientált programozás C# alapokon tananyag. Általános Informatikai Tanszék Miskolci Egyetem

JAVA webes alkalmazások

SAP JAM. Felhasználói segédlet

FTP-kapcsolat létrehozása FlashFXP alatt

Tartalomjegyzék. Tartalom 1/16

EPER E-KATA integráció

Hálózati beállítások gyorsútmutatója

FORTE MAP 5.0 Felhasználói tájékoztató

Adatok ábrázolása, adattípusok. Összefoglalás

Összefüggő szakmai gyakorlat témakörei. 13 évfolyam. Információtechnológiai gyakorlat 50 óra

10. évfolyam 105 óra azonosító számú Hálózatok, programozás és adatbázis-kezelés 105 óra Adatbázis- és szoftverfejlesztés gyakorlat tantárgy

Programozás alapjai Bevezetés

RIA Rich Internet Application

E-ADÓ RENSZER HASZNÁLATI ÚTMUTATÓ

MVC. Model View Controller

Első randi a QGIS SERVER környezettel

Töltse ki értelemszerűen a vevő nevét, irányítószámát, település, utca házszám mezőket, valamint a partner adószáma mezőket.

Számítógépes vírusok

Vasúti információs rendszerek gyakorlat

Webes alkalmazások fejlesztése 4. előadás. Megjelenítés és tartalomkezelés (ASP.NET Core) Cserép Máté

A Felhasználónév és Jelszó mezőkbe írjuk be az adatainkat, majd kattintsunk a Bejelentkezés gombra, vagy üssük le az Enter billentyűt.

Összefüggő szakmai gyakorlat témakörei évfolyam. 9. évfolyam

Vektoros elemzés végrehajtása QGIS GRASS moduljával 1.7 dr. Siki Zoltán

Kép részlet kivágás útvonalak létrehozása és szerkesztése útvonalak kijelöléssé alakítása Kijelölés > Lágy szél

Korszerű geodéziai adatfeldolgozás Kulcsár Attila

Árverés kezelés ECP WEBSHOP BEÉPÜLŐ MODUL ÁRVERÉS KEZELŐ KIEGÉSZÍTÉS. v ECP WEBSHOP V1.8 WEBÁRUHÁZ MODULHOZ

Webes alkalmazások fejlesztése 7. előadás. Autentikáció és autorizáció (ASP.NET)

WWW Kliens-szerver Alapfogalmak Technológiák Terv. Web programozás 1 / 31

Laborgyakorlat Windows 7 upgrade-je, felhasználói adatok költöztetése

Fábián Zoltán Hálózatok elmélet

Tájékoztató az önkéntes nyugdíjpénztárak számára a 2012-től érvényes felügyeleti adatszolgáltatási változásokról

Webes alkalmazások fejlesztése 6. előadás. Állapotfenntartás (ASP.NET) Állapotfenntartás. Állapotfenntartás. Állapotfenntartás.

Gyakorlatok. VITMMA09 Okos város MSc mellékspecializáció

I. 4.) Az ajánlatkéra más ajánlatkérak nevében folytatja-e le a közbeszerzési eljárást? nem X

A Justh Zsigmond Városi Könyvtár panaszkezelési szabályzata

HENYIR felhasználói dokumentáció

Miért válassza a tárhelyeinket?

Az informatika oktatás téveszméi

Shared IMAP beállítása magyar nyelvű webmailes felületen

Számítógép labor V. Egyszer Web szerver. Dokumentáció. Készítette: Ács Gergely (K4C03M)

Vodafone GPRS Kapcsolat létrehozása Win2000 alatt a Connect Me használata nélkül

Adattípusok. Szám: pozitív egész, egész, valós, dátum + idő,... Szöveg, Formázott szöveg Kép Hang Mozgókép+Hang

Prolog 1. Készítette: Szabó Éva

Dial-UP Kapcsolat létrehozása angol nyelvű Windows 2000 alatt

A Lotus Lovasiskola nem alkalmaz korlátozás nélkül használható, általános és egységes személyazonosító jelet.

OmniTouch 8400 Instant Communications Suite 4980 Softphone

ITIL alapú szolgáltatás menedzsement megvalósítása a KELER Zrt-ben

Számítógép-hálózatok Egyéni Feladat

Felhasználói útmutató Dahua gyártmányú digitális képrögzítő eszközökhöz

A) Belépés a Webinar felületére

A WEBES FELÜLET HASZNÁLATA. Munkáltatói oldalról. Fejér Megyei Kormányhivatal Munkaügyi Központja Székesfehérvár 2011.

Lemezkezelés, RAID, partícionálás, formázás, defragmentálás.

Útmutató az EPER-ben már regisztrált szervezetek elektori jelentkezéséhez

Ahol az ERP véget ér hasznos kiegészítők

Java Servlet technológia

Linux Mint 8 telepítése

A programkód és az Unified Modeling Language (UML) osztálydiagramjának kapcsolata

Elektronikus öltözőszekrényzárak

Bank: minden tranzakciónál. Egyetemek: regisztráci. Emberi erőforr. források: alkalmazottak adatainak rögzr

Webes alkalmazások fejlesztése 6. előadás. Állapotfenntartás (ASP.NET) 2015 Giachetta Roberto

Kérjük, hogy mielőtt elkezdené használni a Csavarhat webáruházat, gondosan olvassa végig ezt a segédletet.

Dr. Schuster György február 21. Real-time operációs rendszerek RTOS

VHDL szimuláció. Tervezés. Labor II. Dr. Hidvégi Timót

Miért ASP.NET? Egyszerű webes alkalmazás fejlesztése. Történet ASP ASP.NET. Működés. Készítette: Simon Nándor

E-számla igénylése három lépéssel!

beállítások a postafiók használatához

Többrétegű műszaki nyilvántartás. NETinv

Készítsen négy oldalas prezentációt egy vállalat bemutatására!

Minta programterv a 1. házi feladathoz

Dr. Kulcsár Gyula. Virtuális vállalat félév. Projektütemezés. Virtuális vállalat félév 5. gyakorlat Dr.

A C programozási nyelv VI. Parancssori argumentumok File kezelés

.NET Microsoft.Net Framework

Webes alkalmazások fejlesztése 12. fejezet. Szolgáltatás alapú kommunikáció (WCF) Giachetta Roberto. Eötvös Loránd Tudományegyetem Informatikai Kar

A WEB programozása - JSP1 dr.gál Tibor őszi félév

Fejlesztési tapasztalatok multifunkciós tananyagok előállításával kapcsolatban Nagy Sándor

a CDN szolgáltatók mögötti tiltott tartalmak szűrését, nyomkövetését és tiltását megvalósító rendszer fejlesztése (előzetes tájékoztató korrigendum)

Biztonság java web alkalmazásokban

DLookup függvény 1. (5)

Átírás:

Eötvös Loránd Tudományegyetem Informatikai Kar Webes alkalmazások fejlesztése 2. előadás Webfejlesztés MVC architektúrában (ASP.NET) 2016 Giachetta Roberto groberto@inf.elte.hu http://people.inf.elte.hu/groberto

Fejlesztés ASP.NET alapon A Microsoft ASP.NET az ASP (Active Server Pages) továbbfejlesztése.net programozás támogatással egy (szerver oldali) programozási felület dinamikus weblapok készítésére HTTP protokollon keresztül három programozási modellt kínál: Web Forms: az alkalmazás dinamikus részeit vezérlők és eseménykezelés segítségével valósítja meg Web Pages: egyszerű, jórészt statikus alkalmazások megvalósítása, amelyek támogatnak dinamikus funkciókat és adatkezelést MVC: összetett weblapok fejlesztésére szánt modell ELTE IK, Webes alkalmazások fejlesztése 2:2

Szoftver architektúrák A modell/nézet (MV) architektúra elválasztja a háttérben végzett tevékenységeket a felhasználói felülettől és interakciótól A modell/nézet/nézetmodell (MVVM) architektúra leválasztja a felhasználói interakció kezelését, valamint az adatmegjelenítést a felülettől a nézetmodell átalakítja az adatok a megfelelő megjelentéshez, tehát átjáróként (proxy) szolgál az utasítások nem eseménykezelők, hanem parancsok (command) formájában jelennek meg a vezérlés (control) külön programegységben történik ELTE IK, Webes alkalmazások fejlesztése 2:3

Szoftver architektúrák Asztali környezetben a felhasználó a nézettel teremt kapcsolatot, amely biztosítja a megfelelő utasítás végrehajtását (eseménykezelő, parancs) Webes környezetben a felhasználó az adott erőforrással teremt kapcsolatot, amit elsősorban az útvonala határoz meg vagyis a felhasználó közvetlenül a vezérlést veszi igénybe a vezérlésre az alkalmazásnak egy (új) nézettel kell válaszolnia, ami az adott erőforráshoz tartozik felhasználó nézet nézet vezérlés ELTE IK, Webes alkalmazások fejlesztése 2:4

Az MVC architektúra A modell/nézet/vezérlő (Model-View-Controller, MVC) architektúra egy többrétegű felépítést definiál, amely jól illeszkedik a webes környezethez a vezérlő a kérések kiszolgálója, amely biztosítja a nézetet a kérés eredménye alapján a nézet a felület (jórészt deklaratív) definíciója, nem tartalmaz háttérkódot, csupán az adatokat kéri a modelltől a modell a logikai funkciók végrehajtása (üzleti logika) a nézetmodell egy átjáró, amely az adatokat a nézet számára megfelelő módon prezentálja a perzisztencia felel az adatelérésért ELTE IK, Webes alkalmazások fejlesztése 2:5

Az MVC architektúra válasz nézet MVC architektúra nézetmodell kliens frissít modell perzisztencia kérés vezérlő végrehajt adatforrás ELTE IK, Webes alkalmazások fejlesztése 2:6

Az MVC architektúra Az MVC architektúra végrehajtási ciklusa: 1. a felhasználó egy kérést ad a szervernek 2. a vezérlő fogadja a kérést, majd a modellben végrehajtja a megfelelő akciót (action method) 3. a modellben végrehajtott akció állapotváltást okoz 4. a vezérlő begyűjti az akció eredményét (action result), majd létrehozza az új nézetet (push-based) egy másik megközelítés, hogy a nézet is lekérdezze a vezérlők eredményeit (pull-based) az adatok nézetmodell segítségével kerülnek a nézetbe 5. a felhasználó megkapja a választ (nézetet) ELTE IK, Webes alkalmazások fejlesztése 2:7

Az MVC architektúra kérés válasz kliens a vezérlő megkapja a kérést a vezérlő továbbítja a nézetet akció végrehajtása modell állapotfrissítése nézet létrehozása ELTE IK, Webes alkalmazások fejlesztése 2:8

MVC alkalmazások elemei Az ASP.NET MVC alkalmazások az MVC architektúrát valósítják meg dedikált komponensek segítségével a nézet egy olyan osztály (View), amelyet alkalmas leíró nyelv segítségével fogalmazunk meg (ASPX, Razor, ) a nézetben a modell tartalmára hivatkozhatunk (adatkötéssel), illetve használhatunk HTML kódot a vezérlő (Controller) a tevékenységeket tartalmazó osztály, amiben akciókat (metódusokat) definiálunk az akció eredménye (ActionResult), amely általában egy nézet a modell és a perzisztencia tetszőleges lehet ELTE IK, Webes alkalmazások fejlesztése 2:9

MVC alkalmazások elemei Pl. (vezérlő több akcióval): public class MyController : Controller { // vezérlő public ActionResult Index() { // akció return View("Welcome to the website!"); // az eredmény egy nézet lesz, benne a // szöveg, ez lesz a nézetmodell } public ActionResult List(){ // adatok elkérése a modellből return View(list); } public ActionResult Details(String id){ } ELTE IK, Webes alkalmazások fejlesztése 2:10

MVC alkalmazások elemei Pl. (Razor nézet): @model String @* a modell típusa szöveg lesz *@ @{ } @* kód blokk *@ <!DOCTYPE html> <html> <head> </head> @* statikus tartalom *@ <body> <div> @Model @* elhelyezzük a nézetmodellt az oldalban *@ </div> </body> </html> ELTE IK, Webes alkalmazások fejlesztése 2:11

Alkalmazás életciklus A webes alkalmazások életciklusa eltér az asztali és mobil alkalmazásokétól az alkalmazás csak a kérésekre tud reagálni, a kérések függetlenek egymástól, és tetszőleges időpontban ér kezdhetnek az alkalmazás ezért két kérés között nem őrzi meg az állapotot kérés hatására indul, és példányosítja az objektumokat a kérés kiszolgálásával törli az objektumokat bizonyos adatok egy ideig a memóriában maradnak a perzisztencia réteg biztosítja az adatok megőrzését ELTE IK, Webes alkalmazások fejlesztése 2:12

Alkalmazás életciklus kérés válasz kliens vezérlő objektum példányosítása nézet előállítása modell objektum példányosítása tevékenységek végrehajtása nézet objektum példányosítása nézet, modell és vezérlő megsemmisítése ELTE IK, Webes alkalmazások fejlesztése 2:13

Weblapok hierarchiája Az MVC alkalmazás könyvtárfelépítése tükrözi a moduláris felépítést a View, Controllers és Models könyvtárak a megfelelő tartalmat hordozzák az App_Data könyvtár tárolja az esetleges adattartalmat (pl. adatbázis fájlok) az App_Start könyvtár az indítási tevékenységeket (pl. RouteConfig) a gyökérben található a konfiguráció (web.config), valamint az alkalmazásszintű vezérlés (Global.asax) MVC alkalmazáshoz szükséges a NuGet csomagkezelő ELTE IK, Webes alkalmazások fejlesztése 2:14

Elérési útvonalak kezelése Az MVC architektúrában a felhasználó a vezérlővel létesít kapcsolatot, és annak akcióit futtatja (paraméterekkel) az elérés és paraméterezés útvonalak segítségével adott, amelyek egy útvonalkezelő (routing engine) felügyel az elérés testre szabható (RouteConfig), alapértelmezetten a <domain>/<vezérlő>/<akció>/<paraméterek> formában biztosított vezérlő megadása nélkül az alapértelmezett HomeController vezérlőt tölti be akció megadása nélkül az Index akciót futtatja a paraméterek feloldása sorrendben, vagy név alapján történhet ELTE IK, Webes alkalmazások fejlesztése 2:15

Elérési útvonalak kezelése pl. Útvonal http://mypage/ http://mypage/hello /Hello/List /Hello/Details/1 /Hello/Details?id=1 Tevékenység a HomeController vezérlő Index metódusa fut a HelloController vezérlő Index művelete fut a HelloController vezérlő List művelete fut a HelloController vezérlő Details művelete fut id=1 paraméterrel ELTE IK, Webes alkalmazások fejlesztése 2:16

Vezérlők A vezérlők a Controller osztály leszármazottai, amelyek az akciókat publikus műveletek segítségével valósítják meg a tevékenység egy eredményt ad vissza (ActionResult), amely lehet nézet (ViewResult, PartialViewResult) hibajelzés (HttpNotFoundResult, HttpUnathorizedResult, HttpStatusCodeResult) átirányítás (RedirectResult) fájl (FileResult), szkript (JavaScriptResult), egyéb tartalom (ContentResult) üres (EmptyResult) ELTE IK, Webes alkalmazások fejlesztése 2:17

Vezérlők pl.: public class MyController : Controller { public ActionResult LoadImage(String id){ Byte[] image = // adat betöltése if (image == null) // rossz az azonosító return RedirectToAction("NotFound"); // átirányítunk egy másik akcióhoz return File(image, "image/png"); // visszaadjuk fájlként a tartalmat } public HttpNotFoundResult NotFound() { return HttpNotFound("Content not found."); } // hibajelzés ELTE IK, Webes alkalmazások fejlesztése 2:18

Vezérlők az eredménytípusokhoz tartozik egy művelet a Controller osztályban, amely azt előállítja, pl.: return View( ); // eredmény ViewResult lesz a nézethez általában megadjuk a nézetmodellt, amely a modell leszűkítése és transzformációja a nézetre pl.: Object viewmodel = // létrehozzuk a nézetmodellt return View("Index", viewmodel); // megadjuk a nézet nevét és a // nézetmodellt a nézetmodell tetszőleges típusú lehet, akár primitív is, és lehet teljesen független az eredeti modelltől ELTE IK, Webes alkalmazások fejlesztése 2:19

Nézetek A nézet több leíró nyelvet is támogat, ezek közül a Razor rendelkezik a legegyszerűbb szintaxissal a nézet lehet erősen típusos, ekkor megadjuk a nézetmodell típusát, pl. @model MyProject.Model.ItemModel a dinamikus elemeket a @ előtaggal jelöljük a @{ } blokkban tetszőleges háttérkódot helyezhetünk a @* *@ blokk jelöli a kommentet használhatunk elágazásokat (@if) és ciklusokat (@for, @foreach) megadhatunk névtérhasználatot a @using elemmel (ellenkezdő esetben a teljes elérési útvonalat használjuk) ELTE IK, Webes alkalmazások fejlesztése 2:20

Nézetek a nézetmodellre a Model elemmel hivatkozhatunk speciális HTML tartalmat a Html elemmel érhetünk el, pl.: hivatkozások akciókra (ActionLink), amelyben megadjuk az akciót, (a vezérlőt) és az argumentumokat (egy anonim objektumban), pl.: Html.ActionLink("LoadImage", new { id = 1 }); // fordítás után LoadImage?id=1 link lesz űrlapok (BeginForm, EndForm) megjelenítő és beolvasó elemek (LabelFor, TextBoxFor, PasswordFor), ellenőrzések (ValidationMessageFor) űrlapok számára nem kódolt tartalom elhelyezése (Raw) ELTE IK, Webes alkalmazások fejlesztése 2:21

Nézetek lekérdezhetjük a kérés típusát (IsPost) speciálisabb elérési útvonalakat az Url elemmel kezelhetjük, pl.: Url.Content("~/style.css") beágyazhatunk szkripteket a Scripts elemmel, stílusokat a Styles elemmel, pl.: Scripts.Render("~/bundles/jqueryval") a nézetnek megadhatunk elrendezéseket (Layout), illetve különböző profilokhoz igazíthatjuk őket (pl. asztali/mobil környezet) A nézet egy olyan objektum, amely megvalósítja az IView interfészt, a nézet leíró nyelve (motorja) pedig az IViewEngine interfészt, így lehet saját motorokat és nézeteket megvalósítani ELTE IK, Webes alkalmazások fejlesztése 2:22

Nézetek Amennyiben nem szeretnénk külön nézetmodellt használni, lehetőségünk külön a nézet számára információkat és akár tevékenységeket is átadni a ViewBag tulajdonságon keresztül a vezérlőben egy dinamikusan kezelt, ExpandoObject objektum, azaz tetszőleges tulajdonsággal, illetve metódussal ruházható fel így bármilyen értéket tud fogadni, pl.: ViewBag.Message = "Hello"; // létrehozzuk a Message tulajdonságot, és // értéket adunk neki a tartalmat a nézet elérheti és felhasználhatja, pl.: <div>@viewbag.message</div> ELTE IK, Webes alkalmazások fejlesztése 2:23

Nézetek pl.: public class MyController : Controller { public ActionResult List(){ ViewBag.Title = "List of names"; // beállítjuk az oldal címét String[] itemnames = ; return View("ListPage", itemnames); // visszaadunk egy tömböt a List // nézetnek } public ActionResult Details(String name){ return View("DetailsPage", ); } ELTE IK, Webes alkalmazások fejlesztése 2:24

Nézetek pl. (ListPage.cshtml): @model IEnumerable<String> @* erősen típusos oldal *@ @{ Layout = null; // nincs elrendezés } <!DOCTYPE html> <html> <head> <title>@viewbag.title</title> </head> @* a címet a vezérlő adja meg *@ <body> ELTE IK, Webes alkalmazások fejlesztése 2:25

Nézetek @if (Model!= null){ // elágazás <div> @foreach (String name in Model){ <span><b>@name</b> @Html.ActionLink("See details", "Details", name); @* link a Details akcióra *@ </span> } </div> } else { <div>no items found!</div> } </body></html> ELTE IK, Webes alkalmazások fejlesztése 2:26

Weblapok kihelyezése A weblapokat a fejlesztést követően ki kell helyezni (deploy) egy webszerverre a konfigurációnak (web.config) megadható egy nyomkövetési (debug) és egy kiadási (release) változata a weblap alapból nyomkövetésre van konfigurálva, ezt érdemes kikapcsolni a compilation elemben biztonsági okokból a kivételek jelzését csak lokálisan engedélyezzük a customerrors beállításával a nézetek csak a futtatás során fordulnak le, ezért külön oda kell figyelni a hibaellenőrzésre (ez felüldefiniálható a projektfájlban) ELTE IK, Webes alkalmazások fejlesztése 2:27