EPiServer 7 ja MVC

22
Mikko Huilaja, Ohjelmistoarkkite hti 01.11.2012 EPiServer 7 ja MVC ”EPiServer tarjoaa kehittäjälle kaksi vaihtoehtoa sivupohjien rakentamisessa – valitse Web Forms tai MVC projektin vaatimuksien ja kehittäjän osaamisalueen mukaan.” #EPi7Fin

description

EPiServer 7 ja MVC. ”EPiServer tarjoaa kehittäjälle kaksi vaihtoehtoa sivupohjien rakentamisessa – valitse Web Forms tai MVC projektin vaatimuksien ja kehittäjän osaamisalueen mukaan .” #EPi7Fin. Mikko Huilaja, Ohjelmistoarkkitehti 01.11.2012. Agenda. Mitä on MVC ja ASP.NET MVC - PowerPoint PPT Presentation

Transcript of EPiServer 7 ja MVC

Page 1: EPiServer 7 ja MVC

Mikko Huilaja, Ohjelmistoarkkitehti

01.11.2012

EPiServer 7 ja MVC”EPiServer tarjoaa kehittäjälle kaksi vaihtoehtoa sivupohjien rakentamisessa – valitse Web Forms tai MVC projektin vaatimuksien ja kehittäjän osaamisalueen mukaan.”

#EPi7Fin

Page 2: EPiServer 7 ja MVC

Agenda

• Mitä on MVC ja ASP.NET MVC• Miksi MVC:llä on merkitystä• Web Forms vs MVC• MVC EPiServer 7 ympäristössä• Miltä MVC projekti näyttää Visual Studiossa

Page 3: EPiServer 7 ja MVC

MVC on suunnittelumalli

• Model - View - Controller• Malli - Näkymä – Käsittelijä/Ohjain/Kontrolleri• Malli erottelee vastuuut

‒ Datan‒ Ulkoasun ‒ Logiikan

Page 4: EPiServer 7 ja MVC
Page 5: EPiServer 7 ja MVC

ASP.NET MVC versiot

• ASP.NET MVC v1.0 julkaistiin 2009• ASP.NET MVC v2.0 julkaistiin 2010• ASP.NET MVC v3.0 julkaistiin 2011• ASP.NET MVC v4.0 julkaistiin 2012

• EPiServer 6.0 käyttää MVC 1.0• EPiServer 6 R2 käyttää MVC 2.0• EPiServer 7 käyttää MVC 4.0

Page 6: EPiServer 7 ja MVC

ASP.NET Framework

Page 7: EPiServer 7 ja MVC

Mitä hyötyä MVC:stä on?

• Parantaa osien uudelleenkäytettävyyttä.• Helpottaa kehittäjien roolijakoa.• Selkeyttää projektin rakennetta.• Ohjaa tilattomien sovellusten tekoon.• Helpottaa projektien ulkoasun toteutusta.

Page 8: EPiServer 7 ja MVC

MVC ohjaa kehittäjiä tekemään tilattomia sovelluksia

• Ei mahdollista ViewState:n käyttöä• Näkymät eivät voi kutsua enää kontrolleria• Näkymään välitetään vain Model, joka

suunnitellaan ulkoasun tarpeisiin• Kontrollereihin on helppo tehdä

erityyppisiä Action metodeja. • ModelBinderit automatisoivat kutsujen

konvertoinnin takas Modeleiksi

Page 9: EPiServer 7 ja MVC

ViewState tilakoneen poistuminen muuttaa kehitystä monella tapaa

• Button Click pitää toteuttaa esim. POST kutsuna, joka sisältää halutut parametrit.

• Pitää olla entistä tarkempi ettei käyttäjä pysty sivua uudestaan lataamalla (F5) syöttämään samaa riviä uudestaan.

• Ei ole olemassa DataTable:ja jotka helpottavat sivutuksia ja sorttauksia.

• Kutsujen kesken ei voi välittää tietoa ellei käytä sessioita tai keksejä.

Page 10: EPiServer 7 ja MVC

Miksi tilattomia sovelluksia (RESTful)

• Selaimen URL-osoitte todella vastaa sisältöä.• Selaimen back ja forvard napit toimivat kuten

käyttäjät ovat tottuneet.• Hakukoneet löytävät sisällön ja linkit koska ne

eivät vaadi javascriptiä (ViewState:a).• Testaus ja virheiden selvitys helpottuu, kun

sivujen tilaa virheen sattuessa ei tarvi huomioida.

Page 11: EPiServer 7 ja MVC

EPiServer 7 ja MVC

• EPiServer 7 CMS on puhdas ASP.NET MVC projekti, jota EPiServer on laajentanut.

• Tukee samanaikaisesti sekä Web Forms:ia ja MVC:tä.

• Laajennukset:‒ Route Handler‒ EPiServer Template Resolver‒ Filters‒ HtmlHelperts

Page 12: EPiServer 7 ja MVC

EPiServer

MVC execution life cycle (EPiServer)

Page 13: EPiServer 7 ja MVC

EPiServer

EPiServer Template Resolver

MVC execution life cycle (EPiServer)

Page 14: EPiServer 7 ja MVC

{lang}{ node }{ partial } {action}

• CMS registers a few default routes, {lang}/{node}/{partial}/{action} is the most important

• {lang} is optional, allows you to specify the desired language.

• {node} is ’greedy’, will match as much of your page tree as possible.

• {partial} only applies if the leaf content node’s type is registered to have an EPiServer.Web.IPartialRouter.

• {action} is optional, but if specified corresponds to a method name in the Controller.

• en/Products/Alloy Meet/Holographic/Projector-2000/Details

• When the leaf Content node has been found, the ContentType’s handler is determined: WebForms .aspx-page, or MVC-style Controller

MVC in EPiServer 7 CMS

Page 15: EPiServer 7 ja MVC

MVC helpers in EPiServer CMS 7

• In Web Forms, you would use the Property WebControl to output a property

<EPiServer:Property PropertyName=”MainBody” runat=”server” />

• In MVC Razor...

@Html.PropertyFor(m => m.MainBody)

Page 16: EPiServer 7 ja MVC

Razor & syntaksi

<%= foo %>

Page 17: EPiServer 7 ja MVC

Web Forms ei mahdollista

• Model, View, Controller vastuihin jakoa• Tilattomien sovellusten tekoa• Vahvasti tyypitettyjä näkymiä• Sivutyyppien uudelleenkäyttöä• Blockkien käyttöä

Sama on mahdollista tehdä myös WebFormilla!!!

Page 18: EPiServer 7 ja MVC

Interweb: Web Forms vs MVC!

Page 19: EPiServer 7 ja MVC

MVC ja Web Forms hybridiprojekti

MVC ja Web Forms:ia voi käyttää rinnakkain, mutta on hyvä ottaa huomioon:

• Eri ViewEngineillä tehtyjä sivuja voidaan käyttää ristiin.

• Blockkien ristiinkäyttö vaatii omat implementaatiot MVC:lle ja Web Forms:ille.

• MasterPages ja Razor Layout tiedostot täytyvät elää rinnakkain.

• Pidemmän päälle koodi alkaa duplikoitumaan.• Projektin rakenne on haastavaa pitää selkeänä.

Page 20: EPiServer 7 ja MVC

Koodin pariin!DEMO

Page 21: EPiServer 7 ja MVC

Tiivistelmä

• EPiServer on menossa kohti MVC:tä.• Web Forms on edelleen hyvin tuettuna

EPiServerissä.• Olemassa olevien projektien konvertointi MVC:lle

ei välttämättä tapahdu hetkessä.• Kehittäjien kannalta MVC tuo paljon muutoksia.• MVC soveltuu pääsääntöisesti paremminkuin Web

Forms ulkoasultaan rikkaisiin verkkopalveluihin.• EPiServer 7 ja MVC ovat loistava pohja projektille.

Page 22: EPiServer 7 ja MVC

Kiitos!

Lisää tietoa löytyy twitter.com/huilaaja

Kysymyksiä voi lähettää #EPi7Fin tai @huilaaja