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.



Hasonló dokumentumok
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 2. előadás. Webfejlesztés MVC architektúrában (ASP.NET Core) Cserép Máté

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

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

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

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

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

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

JAVA webes alkalmazások

Webes alkalmazások fejlesztése Bevezetés. Célkitűzés, tematika, követelmények. A.NET Core keretrendszer

Webes alkalmazások fejlesztése Bevezetés. Célkitűzés, tematika, követelmények. A.NET Core keretrendszer

Webes alkalmazások fejlesztése 10. előadás. Webszolgáltatások tesztelése (ASP.NET Core) Cserép Máté

Java Programozás 11. Ea: MVC modell

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

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

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

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

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

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

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

Webes alkalmazások fejlesztése 1. előadás. Webes alkalmazások és biztonságuk

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

AWK programozás, minták, vezérlési szerkezetek

Eseményvezérelt alkalmazások fejlesztése I 11. előadás. Szoftverek tesztelése

A JavaServer Pages (JSP)

Java Server Pages - JSP. Web Technológiák. Java Server Pages - JSP. JSP lapok életciklusa

Már megismert fogalmak áttekintése

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

Grafikus keretrendszer komponensalapú webalkalmazások fejlesztéséhez

AWK programozás, minták, vezérlési szerkezetek

Webshop készítése ASP.NET 3.5 ben I.

ESEMÉNY VEZÉRELT ALKALMAZÁSOK FEJLESZTÉSE I. Bevezetés. Készítette: Gregorics Tibor

Java Programozás 4. Gy: Java GUI. Tipper, MVC kalkulátor

George Shepherd. 1. A webes alkalmazások alapjai 1

PHP. Adatbázisok gyakorlat

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

Az iskolai rendszerű képzésben az összefüggő szakmai gyakorlat időtartama. 10. évfolyam Adatbázis- és szoftverfejlesztés gyakorlat 50 óra

WEBFEJLESZTÉS 2. ADATBÁZIS-KEZELÉS, OSZTÁLYOK

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

Magic xpi 4.0 vadonatúj Architektúrája Gigaspaces alapokon

Interfészek. PPT 2007/2008 tavasz.

MVC. Model View Controller

A függvény kód szekvenciáját kapcsos zárójelek közt definiáljuk, a { } -ek közti részt a Bash héj kód blokknak (code block) nevezi.

A JavaScript főbb tulajdonságai

A JavaServer Pages (JSP)

AWK programozás Bevezetés

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

Grafikus felhasználói felületek. Dr. Szendrei Rudolf Informatikai Kar Eötvös Loránd Tudományegyetem. Programozási technológia I. Dr.

Eseménykezelés. Szoftvertervezés és -fejlesztés II. előadás. Szénási Sándor.

Az alábbi kód egy JSON objektumot definiál, amiből az adtokat JavaScript segítségével a weboldal tartalmába ágyazzuk.

A Java EE 5 plattform

Tudásalapú információ-kereső rendszerek elemzése és kifejlesztése

Web-fejlesztés NGM_IN002_1

Webes alkalmazások fejlesztése

JavaServer Pages (JSP) (folytatás)

A webhelyhez kötődő szoftverek architektúrája

ASP.NET CORE MVC Model réteg bevezetése Model Binding Repository tervezési minta Dependency Injection Transient és Singleton Custom Binding AutoMapper

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

A J2EE fejlesztési si platform (application. model) 1.4 platform. Ficsor Lajos Általános Informatikai Tanszék Miskolci Egyetem

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

Széchenyi István Egyetem. Programozás III. Varjasi Norbert

Programozási technológia

Enterprise JavaBeans. Ficsor Lajos Általános Informatikai Tanszék Miskolci Egyetem. Az Enterprise JavaBeans

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

API tervezése mobil környezetbe. gyakorlat

Készítette: Enisz Krisztián, Lugossy Balázs, Speiser Ferenc, Ughy Gergely

Szkriptnyelvek. 1. UNIX shell

Webes alkalmazások fejlesztése 10. előadás. Szolgáltatás alapú rendszerek megvalósítása (ASP.NET WebAPI) Cserép Máté

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

Két csomag elemeiből lehet a felületet elkészíteni: awt: heavy weight komponensek; swing: light weight komponensek (időben később).

Bevezető. Servlet alapgondolatok

C programozási nyelv Pointerek, tömbök, pointer aritmetika

Internet programozása. 1. előadás

Országos Területrendezési Terv térképi mel ékleteinek WMS szolgáltatással történő elérése, Quantum GIS program alkalmazásával Útmutató 2010.

BASH script programozás II. Vezérlési szerkezetek

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

PHP. Telepítése: Indítás/újraindítás/leállítás: Beállítások: A PHP nyelv

Webes alkalmazások fejlesztése 1. előadás. Webes alkalmazások és biztonságuk. Cserép Máté

1. fejezet Bevezetés a web programozásába (Balássy György munkája) Az internet működése... 11

Web programoz as

ALKALMAZÁS KERETRENDSZER

Szoftvertechnológia alapjai Java előadások

A JavaServer Pages (JSP)

PHP alapjai, bevezetés. Vincze Dávid Miskolci Egyetem, IIT

Programozási nyelvek Java

Előszó A Windows alkalmazásfejlesztés rövid története A Windows életútja A Windows 8 paradigmaváltása... 16

Ficsor Lajos Általános Informatikai Tanszék Miskolci Egyetem

A gyakorlat során az alábbi ábrán látható négy entitáshoz kapcsolódó adatbevitelt fogjuk megoldani.

1. ábra Fájl feltöltése 2. ábra Megtekintés

Kérdés Kép Válasz HIBAS Válasz HELYES Válasz HIBAS Válasz HIBAS Kérdés Kép Válasz HIBAS Válasz HELYES Válasz HIBAS Válasz HIBAS Kérdés Kép Válasz

Enterprise JavaBeans 1.4 platform (EJB 2.0)

Kompozit alkalmazások fejlesztése. IBM WebSphere Portal Server

Unit Teszt. Tóth Zsolt. Miskolci Egyetem. Tóth Zsolt (Miskolci Egyetem) Unit Teszt / 22

Oracle Containers for Java - j2ee alkalmazás szerver funkciók. Molnár Balázs Oracle Hungary

Adatbányászat és Perszonalizáció architektúra

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

Google App Engine az Oktatásban 1.0. ügyvezető MattaKis Consulting

Automatikus infrastruktúra menedzsment és alkalmazástelepítés

JavaScript Web AppBuilder használata

Á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) 2015 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 hozzáférést biztosít a teljes.net keretrendszerhez, és bármely CLR alapú bővítményéhez, így bármely.net nyelvvel programozható (alapértelmezett a C# és a VB.NET) támogatja a hatékony adatkezelést, a többrétegű alkalmazásfejlesztést jól skálázható, bővíthető ELTE IK, Webes alkalmazások fejlesztése 6:2 Fejlesztés ASP.NET alapon Az ASP.NET 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 az első webes modell, elsősorban azoknak, akik korábban grafikus felületű alkalmazásokat készítettek Web Pages: egyszerű, jórészt statikus alkalmazások megvalósítása, amelyek támogatnak dinamikus funkciókat és adatkezelést a dinamikus funkciók beépülnek a felületbe, azaz az alkalmazás egy rétegű, nincs architektúra MVC: összetett weblapok fejlesztésére szánt modell Szoftver architektúrák A modell/ (MV) architektúra eltja a háttérben végzett tevékenységeket a felhasználói felülettől és interakciótól A modell//modell (MVVM) architektúra letja a felhasználói interakció kezelését, valamint az adatmegjelenítést a felülettől a modell á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 6:3 ELTE IK, Webes alkalmazások fejlesztése 6:4 Szoftver architektúrák Asztali környezetben a felhasználó a tel 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) tel kell olnia, ami az adott erőforráshoz tartozik felhasználó vezérlés A modell//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 ek kiszolgálója, amely biztosítja a et a eredménye alapján a 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 modell egy átjáró, amely az adatokat a számára megfelelő módon prezentálja a perzisztencia felel az adatelérésért ELTE IK, Webes alkalmazások fejlesztése 6:5 ELTE IK, Webes alkalmazások fejlesztése 6:6 1

MVC architektúra modell frissít modell perzisztencia vezérlő végrehajt adatforrás végrehajtási ciklusa: 1. a felhasználó egy t ad a szervernek 2. a vezérlő fogadja a t, 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 et (push-based) egy másik megközelítés, hogy a is lekérdezze a vezérlők eredményeit (pull-based) az adatok modell segítségével kerülnek a be 5. a felhasználó megkapja a t (et) ELTE IK, Webes alkalmazások fejlesztése 6:7 ELTE IK, Webes alkalmazások fejlesztése 6:8 a vezérlő megkapja a t a vezérlő továbbítja a et akció végrehajtása modell állapotfrissítése létrehozása Az ASP.NET MVC alkalmazások az MVC architektúrát valósítják meg dedikált komponensek segítségével a egy olyan osztály (View), amelyet alkalmas leíró nyelv segítségével fogalmazunk meg (ASPX, Razor, ) a ben 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 a modell és a perzisztencia tetszőleges lehet ELTE IK, Webes alkalmazások fejlesztése 6:9 ELTE IK, Webes alkalmazások fejlesztése 6:10 Pl. (vezérlő több akcióval): // vezérlő public ActionResult Index() { // akció return View("Welcome to the website!"); // az eredmény egy lesz, benne a // szöveg, ez lesz a modell public ActionResult List(){ // adatok ele a modellből return View(list); public ActionResult Details(String id){ Pl. (Razor ): @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 modellt az oldalban *@ </div> </body> </html> ELTE IK, Webes alkalmazások fejlesztése 6:11 ELTE IK, Webes alkalmazások fejlesztése 6:12 2

Alkalmazás életciklus Alkalmazás életciklus A webes alkalmazások életciklusa eltér az asztali és mobil alkalmazásokétól az alkalmazás csak a ekre tud reagálni, a ek függetlenek egymástól, és tetszőleges időpontban ér kezdhetnek az alkalmazás ezért két között nem őrzi meg az állapotot hatására indul, és példányosítja az objektumokat a 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 vezérlő objektum előállítása, modell és vezérlő megsemmisítése modell objektum tevékenységek végrehajtása objektum ELTE IK, Webes alkalmazások fejlesztése 6:13 ELTE IK, Webes alkalmazások fejlesztése 6:14 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 6:15 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 6:16 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 Index művelete fut List művelete fut Details művelete fut id=1 paraméterrel 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 (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 6:17 ELTE IK, Webes alkalmazások fejlesztése 6:18 3

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 6:19 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 hez általában megadjuk a modellt, amely a modell leszűkítése és transzformációja a re Object viewmodel = // létrehozzuk a modellt return View("Index", viewmodel); // megadjuk a nevét és a // modellt a modell 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 6:20 A több leíró nyelvet is támogat, ezek közül a Razor rendelkezik a legegyszerűbb szintaxissal a lehet erősen típusos, ekkor megadjuk a modell 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) a modellre 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 6:21 ELTE IK, Webes alkalmazások fejlesztése 6:22 lekérdezhetjük a 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 nek megadhatunk elrendezéseket (Layout), illetve különböző profilokhoz igazíthatjuk őket (pl. asztali/mobil környezet) A egy olyan objektum, amely megvalósítja az IView interfészt, a leíró nyelve (motorja) pedig az IViewEngine interfészt, így lehet saját motorokat és eket megvalósítani Amennyiben nem szeretnénk külön modellt használni, lehetőségünk külön a 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 elérheti és felhasználhatja, pl.: <div>@viewbag.message</div> ELTE IK, Webes alkalmazások fejlesztése 6:23 ELTE IK, Webes alkalmazások fejlesztése 6:24 4

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 // nek public ActionResult Details(String name){ return View("DetailsPage", ); 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 6:25 ELTE IK, Webes alkalmazások fejlesztése 6:26 @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> 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 ek 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 6:27 ELTE IK, Webes alkalmazások fejlesztése 6:28 5