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?