220 likes | 349 Views
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
E N D
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 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
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
MVC execution life cycle (EPiServer) EPiServer EPiServer Template Resolver
MVC execution life cycle (EPiServer) EPiServer EPiServer Template Resolver
MVC in EPiServer 7 CMS • 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 {lang}{ node }{ partial } {action}
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!!!
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