EPiServer 7 ja MVC
description
Transcript of 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
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
MVC on suunnittelumalli
• Model - View - Controller• Malli - Näkymä – Käsittelijä/Ohjain/Kontrolleri• Malli erottelee vastuuut
‒ Datan‒ Ulkoasun ‒ Logiikan
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
ASP.NET Framework
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.
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
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ä.
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.
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
EPiServer
MVC execution life cycle (EPiServer)
EPiServer
EPiServer Template Resolver
MVC execution life cycle (EPiServer)
{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
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)
Razor & syntaksi
<%= foo %>
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!!!
Interweb: Web Forms vs 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ä.
Koodin pariin!DEMO
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.
Kiitos!
Lisää tietoa löytyy twitter.com/huilaaja
Kysymyksiä voi lähettää #EPi7Fin tai @huilaaja