Tag Archives: MVC

Áttérés MVC 3-ra

Ahogy már korábban írtam róla, 10 napja megjelent az ASP.NET MVC 3 végleges változata. Az új verzió nagyon sok újdonságot tartalmaz, ezért nem is meglepő, hogy az előző verzióról történő átállás sem két kattintásos varázslós feladat. Szerencsére van néhány külső eszköz, amely segíthet ezt egyszerűbbé tenni.

Az egyik az ASP.NET MVC 3 Project Upgrade Tool, amellyel egy MVC 2 solution fájlt nyithatunk meg és migrálhatunk gyorsan MVC 3-ra. Az eszközt az ASP.NET csapat készítette, a működéséről részletesen Marcin Dobosz blogjában olvashatunk. Ugyanitt találunk útmutatót MVC 1 projektek frissítésére is.

Az egyik legnagyobb újdonság az MVC 3-ban (és egyébként az ASP.NET WebPages-ben is) a Razor view engine. Ám sajnos aki erre át akar állni, annak karakterről karakterre át kell írnia az ASPX oldalait, ami nem éppen szívderítő feladat. Ezen próbál segíteni Li Chen ASPX to Razor Converter projektje, amely a CodePlexen érhető el. Ez nem Microsoftos produktum, hobbiból készül, viszont a készítője előszeretettel használja is a saját projektjeiben, és saját bevallása szerint eddig elég jó eredményeket ért el. Egy próbát biztosan megér.

Aki mégis úgy dönt, hogy nem bízik a kitt-katt eszközökben és marad a kézi munkánál, annak mindenképpen célszerű elolvasnia az MVC 3 Release Notes-ban található Upgrading an ASP.NET MVC 2 Project to ASP.NET MVC 3 c. fejezetet, ahol pontosan leírják az áttérés lépéseit.

Technorati-címkék: ,

WebMatrix: Enter the Web

A mai nap különös jelentőségű a Microsoft platformon dolgozó webfejlesztők számára: ma ismerte be a Microsoft, hogy az ASP.NET nem egy bárki által hipp-hopp elsajátítható tákoló környezet, hanem egy bizony elég komplex platform, amibe beletanulni komoly erőfeszítéseket igényel. Szerencsére nem pusztán a tények beismeréséről van szó, hanem megoldást is kapunk a problémákra.

Most kezdődik az online is streaming adás formájában követhető Enter the Web esemény, ahol a Microsoft számos új technológiát jelent be, melyek jelentősen meg fogják változtatni az ASP.NET fejlesztők életét. Ma lesz elérhető az ASP.NET MVC 3, az IIS Express, az SQL Compact 4.0 és a WebMatrix, na meg a Web Platform Installer 3.0, ami mindezeket és a rakás külső gyártó által készített bővítményeket összefogja és teszi egyszerűen telepíthetővé.

Ez a számos remek termék egy nagyon hosszú fejlesztési folyamat eredménye (először több, mint 1,5 éve hallottam róluk), aminek a nulladik lépése az volt, hogy Redmondban végre felfogták, hogy a Microsoftos web platformra fejleszteni egyszerűen túl bonyolult. Önmagában minden technológia nagyon szép és nagyon érett, de ha valaki ezeket egyszerre és hatékonyan akarja használni, akkor nagyon sok alapismeretre van szüksége. Ezek a problémák sajnos nem csak a kezdőket (Microsoftos terminológiában “hobbistákat”) érinti, hanem konkrétan a profi fejlesztőket is. Ma elmondhatjuk, hogy a legfájóbb pontokra kapunk megoldást:

A fejlesztői keretrendszer

Az ASP.NET WebForms a megjelenésekor azzal tudott hódítani, hogy a webes fejlesztést közel hozta a desktop fejlesztéshez, méghozzá két nagyon fontos tulajdonságával: a vezérlők (controls) használatával és az eseményvezérelt programozás bevezetésével. Az üzenet az volt, hogy úgy lehet webalkalmazást készíteni, hogy szinte azt sem kell tudnod, mi az a HTTP, és ez gyakorlatilag igaz is. Azóta azonban nagyon sokat változott a világ, előtérbe kerültek olyan szempontok, amik a generált HTML kód teljes kézbentarthatóságát igénylik. Ha ASP.NET WebForms környezetben teljesen szabályozni szeretnénk a generált kódot, akkor ahhoz nagyon kell ismerni a WebForms technológia részleteit. Ezt a problémát akarta megoldani az ASP.NET MVC azzal, hogy a kimenet teljes vezérlését a programozó kezébe adta (és persze ezek mellett még sok egyebet is).

Az ASP.NET MVC egy kiválóan működő és gyorsan bővülő technológia, azonban van egy közös tulajdonsága a WebForms-szal: az MVC is meglehetősen bonyolult, ráadásul több szinten:

1. Bonyolult az MVC koncepció

Az MVC (és a WebForms) elvei bonyolultak, hosszú időbe telik, míg az ember megtanulja őket. Persze utána nagyon szép, strukturált, tesztelhető és karbantartható kódot írhatunk vele, de valóban szükség van erre a szofisztikáltságra minden szinten? A sarki kisállatkereskedés honlapjához tényleg kell modell, view és controller? Nyilvánvalóan nem. Megvan a helye tehát a kevésbé strukturált felépítésnek is, mert bizonyos esetekben az lesz az egyszerűbb. Ezt a megközelítést pedig úgy hívják, hogy ASP.NET WebPages.

2. Bonyolult a markup

A fejlesztőnek végeredményül egyfajta markup kódot kell írnia, ami azonban tele lesz olyan értékekkel, amik szerver oldalon generálódnak. Lássuk be, az ASP.NET WebForms és az MVC markupja valójában éppúgy spagetti kód, mint anno az ASP kód volt. Sőt, ugyanúgy spagetti kód, mint a PHP kód. A PHP sikere azonban bebizonyította, hogy ez a kevert kód nem is olyan rossz, mert nagyon gyorsan meg lehet tanulni és utána nagyon gyorsan el lehet készíteni. Ez tehát a jó irány, amit még azzal lehetne megfejelni, hogy az írandó kódot egyszerűbbé, rövidebbé, átláthatóbbá tesszük. Erre megoldás az ASP.NET MVC-vel és a WebPages-zel használható új Razor szintaktika.

3. Bonyolult a fejlesztőeszköz

A Visual Studio egy kiváló fejlesztőeszköz, tud mindent, amire egy .NET-es fejlesztőnek szüksége lehet. Azonban annak, aki először látja, hihetetlenül bonyolult. Sőt, aki már használja egy ideje, az is simán találhat minden héten egy új menüpontot, amire korábban még nem figyelt fel. Nem megoldás a Visual Studio Web Developer Express sem, mert bár kevesebbet tud, még mindig nagyon komplex fejlesztőeszköz. Kellene valami sokkal, úgy értem sokkal egyszerűbb, ami illeszkedik az előző gyors-és-egyszerű koncepcióhoz. Itt jön a képbe a ma megjelenő WebMatrix, aminek az elsajátítását ráadásul egy rövid és könnyen követhető, az alapoktól induló gyakorlatsorozat is segíti.

A webszerver

Az Internet Information Services mint webszerver, nagyon jól megállja a helyét a szervereken, sajnos azonban a fejlesztőknek napi problémákat tud okozni. A legnagyobb gond, hogy a Visual Studioba épített fejlesztői webszerver (Cassini) nem azonos az IIS-sel, sokkal kevesebbet tud. A másik nagy probléma, hogy a nagy IIS konfigurálásához admin jogok kellenek és ismerni kell hozzá az IIS gazdag funkciókészletét. Ez inkább üzemeltetői ismereteket és gyakorlatot igényel, ami a fejlesztőknek egyszerűen nincs meg és lássuk be, nem is nagyon vágynak rá. A megoldás az IIS Express, ami felváltja a Cassinit egy olyan webszerverrel, ami teljesen kompatibilis az IIS-sel, tudja futtatni az IIS modulokat, tudja az SSL-t, sőt még admin jog sem kell hozzá. Ez gyakorlatilag egy mini IIS motor, ami leveszi a fejlesztő válláról az IIS konfigurálásának nehézségeit és lehetővé teszi, hogy a fejlesztőkörnyezet közel 100%-osan kompatibilis legyen az éles futtatókörnyezettel.

Az adatbázisszerver

A TechEden beszélgettem egy open source CMS vezető fejlesztőjével, aki azt mondta, hogy a support kérdéseik 80%-a az SQL Server komplexitására vezethető vissza. Egyáltalán nem triviális a telepítése, aminél már csak a megfelelő jogosultságok beállítása nagyobb kihívás. Nem véletlen, hogy egy csomó webhosting környezetben egyáltalán nincs SQL Server, hiszen nem csak a telepítése, hanem az alkalmazások elszigetelése is nagyon komoly feladat. Helyette sok helyen még mindig az Access dívik, mert ott még az adatbázist sem kell telepíteni. A most elérhetővé vált SQL Server Compact Edition 4.0 ezeket a fejlesztői és üzemeltetői problémákat oldja meg azzal, hogy az SQL Server legfontosabb funkcióit telepítés nélkül is elérhetővé teszi. Az SQL Compact mindössze pár DLL, amit elég bemásolnunk az alkalmazásunk bin könyvtárába és máris működik. Ugyanígy az adatbázist is elég csak felmásolnunk a szerverre. Nincs telepítés, nincs adatbázis attach-olás, de tud SQL-ül, sőt még megy vele a LINQ to SQL és az Entity Framework is. Az SQL Compact korábbi verzióit nem lehetett többszálú környezetben használni, mostanra azonban ezt is megoldották, így tökéletes relációs adatbázis motorrá vált ASP.NET alkalmazások alá.

Újrafelhasználás

A komponens alapú fejlesztés egyik alapelve az elkészült modulok, komponensek újrafelhasználása. Ez egy ASP.NET projektnél tipikusan eddig azt jelentette, hogy a gyártó oldaláról le kell töltenünk egy csomagot, amiből a DLL-eket és a markup fájlokat be kell másolnunk a megfelelő könyvtárakba, majd módosítanunk kell a web.config megfelelő részeit. Sajnos ez minden egyes bővítmény esetén garantálhatóan teljesen máshogy történik, és általában több idő kideríteni, hogy mit kell csinálni, mint elvégezni ezt a néhány apró módosítást a forráskódunkon. Ezen az összevisszaságon az új NuGet Package Manager fog segíteni, ami egy PowerShell alapú, jól szkriptelhető motor a bővítmények kezelésére. Természetesen nem kell mindenképpen parancssorból kezelnünk a csomagokat, a NuGet beépül a WebMatrixba és a Visual Studioba is. Kell némi Facebook funkció a weboldaladra? Van hozzá NuGet package. Vagy PayPal? Ahhoz is van helper, sőt még nagyon sok mindenhez, elég csak körülnézni a most épp 376 csomagot tartalmazó galériában, merthogy persze van egy közös gyűjtemény ezekből a bővítményekből.

Indulás nem nulláról

Akik nem szenvednek not invented here szindrómában, azok már rég belátták, hogy az open source világban nagyon komoly eredmények vannak. Már egyáltalán nem ciki fogni egy nyílt forráskódú alkalmazást és annak a kódjából kiindulva, némi testreszabással elkészíteni a saját megoldásunkat. A WebMatrix, az új Web Platform Installer 3.0 és a hozzá kapcsolódó Web Application Gallery ezt nagyon komolyan támogatja. Alig néhány kattintással le tudunk tölteni és be tudunk üzemelni a saját gépünkön egy nyílt forráskódú CMS, blog vagy galéria webhelyet az összes függőségével együtt! Ez utóbbi nagyon nagy szó ám, gondoljunk csak az adatbázis szerver és az adatbázis séma telepítésének és konfigurálásának kínjaira! Sőt, maga a Microsoft is belépett a nyílt forráskódú CMS alkalmazások “piacára” az Orchard projekttel.

Hoszting

Mi lesz az elkészült alkalmazások sorsa, hol tudjuk hosztolni? Sajnos Windowsos hoszterből messze nincs annyi, mint PHP-sból, tehát az egyik probléma, hogy nem egyszerű megfelelőt találni. Azután ha sikerült választani, akkor még mindig adott a fejlesztőkörnyezet és a futtatókörnyezet konfigurálásának feladata. A fejlesztőnek tudnia kell a szerver paramétereit, az üzemeltetőnek pedig ismernie kell az alkalmazás tulajdonságait és az egyedi telepítési igényeket. Ne felejtsük el, hogy a fejlesztők és az üzemeltetők teljesen más világban élnek, más nyelvet beszélnek, itt viszont könyörtelenül egymásra vannak utalva. Itt lép be a képbe a Web Deployment Tool 2.0, és az új Web Hosting Gallery, ami ezt a folyamatot nagyban tudja egyszerűsíteni és automatizálni.

A fenti felsorolásból egyértelműen látszik, hogy ma egy új világba léptünk a Microsoft web platform területén, a fenti eszközök és technológiák már letölthetőek az új Web Platform Installer 3.0-val. A Microsoft az alapoktól újragondolta a platform minden egyes részét és kiegészítette ott, ahol a legkomolyabb nehézségekkel találkoztak a profi fejlesztők és a platformmal most ismerkedők. Az új jelszó az egyszerűség, mert ahogy Leonardo da Vinci mondta, “az egyszerűség a kifinomultság csúcsa”.

ps. A teljes képhez még egyetlen apróság hiányzik, ez pedig a VS IDE támogatás az IIS Expresshez és az SQL CE-hez, de az sincs már messze, a most épp bétában lévő VS 2010 SP1 hozza el őket hamarosan.

Tetszenek az újdonságok, mit gondoltok, jó ez az egyszerűség irány?

VS 2010 SP1 vs ASP.NET MVC 3 RC

Jason Zanders blogjában megjelent az első hír a Visual Studio 2010 Service Pack 1 bétájáról, amit az MSDN előfizetők már le is tölthetnek, a nyilvános letöltés pedig csütörtöktől lesz elérhető.

Aki használja az ASP.NET MVC 3 Release Candidate változatát, annak nem célszerű telepítenie a fejlesztőkörnyezet javítócsomagjának ezt a béta verzióját, mert a két termék félkész változatai ugyan vígan feltelepülnek egymásra, azonban csöndesen kivégzik egymás funkcióit (pl. IntelliSense). Aki tehát már MVC 3-mal dolgozik, annak egyelőre célszerű várni az SP1 telepítésével, na szerencsére nem sokáig, pár napon belül jön egy újabb előzetes az MVC-ből, ami már kompatibilis lesz az SP1-gyel.

ui. Igazi kocka címet sikerült adni ennek a posztnak Mosolygó arc

Technorati-címkék: ,

ASP.NET Routing IIS 7-en

Bevallom, hogy eleinte vonakodtam az ASP.NET Routingtól, mert nem tetszett, hogy a routing szabályok ennyire bedrótozódnak az alkalmazásba, de amikor rájöttem, hogy az URL-ek megépítésére is van benne beépített támogatás, akkor elkezdett jobban tetszeni, mint az IIS UrlRewrite modulja. Persze ezzel is sikerült olyan problémába belefutni, ami csak az éles környezetbe történő telepítéskor jött elő, fejlesztői szerveren nem (bár az ASP.NET Routing legalább megy a fejlesztői webszerveren is, nem úgy, mint az UrlRewrite, amihez legalább IIS Express kell).

A jelenség nagyon egyszerű: nem működnek a barátságos URL-ek IIS 7 vagy 7.5 alatt. Ez előjöhet ASP.NET WebForms, MVC vagy WebMatrixos alkalmazással is, ha a Routingot használja. A magyarázat is nagyon egyszerű: az IIS nem kapja el a kiterjesztés nélküli URL-ekre érkező kéréseket.

Két lehetséges megoldás van:

  1. Lehet telepíteni a KB980368-ban leírt frissítést. Ez akkor járható út, ha ismerjük a szerveren futó összes alkalmazást és van jogunk frissítést telepíteni.
  2. Ha csak a saját alkalmazásunkat szeretnénk működésre bírni, akkor az is elég, ha ezt beírjuk a saját web.config fájlunkba:
    <system.webServer>
      <modules runAllManagedModulesForAllRequests="true"/>
    </system.webServer>

Razor Syntax Highlighter

Aki elkezdte már nézegetni az ASP.NET MVC 3 bétáit, biztosan találkozott már az új view engine-nel a Razor-ral. A tervezésekor a fő szempont az egyszerűség volt, éppen ezért esett erre a választás, amikor eldöntötték, hogy a WebMatrix és az ASP.NET Web Pages milyen szintaktikát kövessen. Mindenképp érdemes megismerkedni vele, mert az MVC következő verziójában hangsúlyosabb szerepet fog kapni. A WebMatrix oldalain található egy bevezető a Razor szintaktikájába, bár a hamarosan megjelenő következő bétában ez egy kicsit változni fog (a szintaktika és az API is).

Bár az MVC béta telepítése után a Razor már választható a Visual Studio Add View dialógus ablakában, sajnos egyelőre nincs syntax highlighting. Aki már most beleásná magát az új szintaktikába és nem akar addig várni, amíg kijön a hivatalos bővítmény, annak praktikus feltelepíteni a Ben által készített ingyenes Razor Syntax Highlighter kiegészítést a Visual Studio 2010-hez. Az ő blogjában számos további hasznos tipp található a Razor használatával kapcsolatban, illetve aki rákattant a témára, annak tudom ajánlani még Andrew Nurse írásait is.

ASP.NET MVC csővezeték

asp_net_mvc_poster_thumbnail Steven Sanderson Pro ASP.NET MVC Framework c. könyvében (Apress) van egy ábra, amin jól végig lehet követni, hogy ASP.NET MVC környezetben hogyan történik a bejövő kérések feldolgozása. Nem csak az szerepel az ábrán, hogy melyik komponens után melyik jön, hanem az is, hogy az egyes szereplők miért vannak a feldolgozási csővezetékben. A RedGate oldaláról ingyenesen letölthető a poszter.

Technorati-címkék: ,