december, 2008 havi archívum

Boldog Karácsonyot!

Posted: 2008. december 25. in Egyéb
Nagyon Boldog, Békés Karácsonyt kívánok minden Kedves blog Olvasónak!
 

18. screencast: WCF + DataGrid

Posted: 2008. december 19. in Silverlight

Ez a videó kicsit rendhagyóra sikeredett, ugyanis két témakört is feldolgozunk benne:
WCF-es adatelérés
DataGrid alapok
Jó szórakozást kívánok hozzá!

18. Adatelérés WCF-fel + Master-Details egymásba ágyazott DataGrid-ekkel

Videó
http://cid-8dcaf3b0da4fb828.skydrive.live.com/embedrowdetail.aspx/Silverlighttanfolyamanyagai/18|_WCF|_|0|_DataGrid.rar

Forráskód

http://cid-8dcaf3b0da4fb828.skydrive.live.com/embedrowdetail.aspx/Silverlighttanfolyamanyagai/SL|_Demos|_WCF|_|0|_DataGrid|_RC1.zip

Light up the WEB 🙂

Mai témáink:
Dinamikus nyelvek
ASP.NET jelen
Kövi rész témái:
ASP.NET jövő
Silverlight
Adatelérés
 
Dinamikus nyelvek

Kicsit szomorú vagyok, hogy senki se írt a múltkori blog bejegyzésemhez egyetlen kommentet se, pedig azt reméltem, hogy legalább lesz egy valaki, aki meg meri kérdezni, hogy hogy a francba lehet valami egyszerre static és dynamic is.  Na mind1, ez van…
Ettől függetlenül válaszolok erre a fel nem tett kérdésre, ugyanis szerintem eléggé érdekes a válasz.  Tehát a fenti képen látható kódrészlet C# 4.0-ás, amelyben már található némi dinamikus nyelvi feature. Szóval ez a kódsor: private static dynamic GetPythonObject() egy olyan függvény definíciója, amelynek a visszatérési értéke egy dynamic object! A dynamic egy új CLR típus, amelyre mondhatnánk akár azt is, hogy kicsit hasonlít az absztrakt ősosztályra, illetve egy kicsit a var-ra is.
Képzeljük el azt a szituációt, hogy van egy fájlunk, amiben van egy adott nyelven (mondjuk nem .NET-es nyelven) írt osztály, és ennek egy példányával szeretnénk visszatérni a függvényben. És tételezzük azt is fel, hogy van hozzá egy .NET-es értelmező segédosztályunk is. Nem egyszerű a feladat, hiszen nem tudjuk pontosan megmondani a C#-nak, hogy milyen típusú osztállyal térjen vissza. Azt se mondhatjuk, hogy majd fordítási időben kiderül úgy, mint a var-nál, vagy az absztrakt ősosztálynál! Csak futásidőben tudja meghatározni ezt az osztályt a .NET, amely persze dinamikusan változhat a program futása közben  Nem kicsit perverz…
Ez mind annak köszönhető, hogy a .NET 4.0 részét képezi majd a DLR (Dynamic Language Runtime), ezért innentől kezdve futásidőben készíthetünk akár olyan osztályokat/metódusokat is, amelyek alapból nem tartoznak a programunkhoz. És ez csak egyetlen egy feature a sok közül… elképesztően nagy erő lesz a dinamikus nyelvekben.
 

Jelenleg két különböző „típusú” DLR érhető el a neten keresztül! Van a Codeplex-en lévő, illetve van a VS2010CTP-ben található. A kettő nem teljesen azonos, de a jövőben egyre közelebb kerülnek majd egymáshoz! Az alábbi képen láthatjátok a különbségeket a két release között:
 

A dinamikus nyelveket mellesleg hivatalosan IronLanguages-nek hívják, és MS-éknél jelenleg két ilyen nyelv implementálásán fáradoznak: az IronPython-én, illetve az IronRuby-én.
Az IronPython kicsit előrébb tart már, mint a Ruby-s társa, ugyanis valamikor mostanság várható belőle egy végleges 2.0 release, illetve 2009 vége fele pedig már jön a 3.0-ás verzió. IronRuby egyelőre még csak 1.0 alfa állapotban van és a végleges verzió is leghamarabb jövő év második felében fog majd megjelenni valamikor. Mindkét nyelvhez emellett terveznek egy-egy Studio-t is (Visual Studio alapokon), amelyekben majd kényelmesen fejleszthetünk IronRuby, illetve IronPython nyelveken.
Ezek megjelenése kb. ugyanakkora várható, mint a nyelvek végleges release-i!

Ehhez a témához utolsó gondolatként még annyit tennék hozzá, hogy a dinamikus nyelvek már kb. egy év "köztünk élnek", mint alternatív nyelvek a Silverlight-hoz úgy, hogy akit érdekel a dolog, ajánlom nézegesse az alábbi oldalakat:
http://silverlight.net/learn/dynamiclanguages.aspx
http://www.codeplex.com/sdlsdk
http://www.codeplex.com/IronPython
http://rubyforge.org/projects/ironruby

 
ASP.NET 3.5 => 4.0
– ASP.NET jelen

A .NET Framework 3.5 SP1-be 4 új ASP.NET-es szolgáltatás/technológia/keretrendszer került bele:

 – ASP.NET Ajax History
 – ASP.NET Routing
 – ASP.NET Dynamic Data
 – ASP.NET MVC

 
  Az Ajax History segítségével lehetőségünk nyílik arra, hogy a kliensoldali aszinkron műveletek között tudjunk navigálni. Pl.: Ha az oldalunkon a keresés ajaxosítva van, akkor a böngésző prev page gombjával vissza tudjuk adni a felhasználónak az előző keresése eredményét!. Sajnos ehhez egy kicsit kódolunk is kell, de azt hiszem ennyit megér a dolog.
Hogy hogyan is kell ezt konkrétan használni, arról az alábbi oldalakon találhattok leírásokat, illetve videókat:
http://www.lostintangent.com/training-series/aspnet-ajax-history-training/
http://www.aspnetpro.com/newsletterarticle/2008/10/asp200810dk_l/asp200810dk_l.asp
http://weblogs.asp.net/scottgu/archive/2006/09/14/Tip_2F00_Trick_3A00_-Enabling-Back_2F00_Forward_2D00_Button-Support-for-ASP.NET-AJAX-UpdatePanel.aspx
http://www.bestechvideos.com/2008/06/10/introduction-to-asp-net-ajax-history
http://www.asp.net/Learn/3.5-SP1/video-242.aspx
 
  A Routing rendszer elsőre ránézésre olyan mintha csak egy szimpla IHttpHandler lenne, Url ReWriting-ra. Pedig nem, itt nem alakítjuk vissza a címet (pl.: Products/Widgets/ -ről /Products.aspx?id=4 -ra), mivel ki tudjuk szedni az URL-ből a számunkra szükséges információkat!
 

Azért, hogy ez az egész működhessen egy sémarendszert (patterns/routes) kell használnunk, amolyan helyőrzőszerűségeket (pl.: {reporttype}/{year}/{month}/{day} >> /sales/2008/12/8). Ezt a global.asax fájlban kell definiálnunk! Ha az url megfelel a sémánknak, akkor az alapján már egyértelműen meg lehet határozni, hogy mit is szeretne a felhasználó!
Ez a szolgáltatás önmagában is használható, de sok más technológia is épít erre, pl.: ASP.NET Dynamic Data; ASP.NET MVC, stb..
 
 
  A Dynamic Data szolgáltatás lényege, hogy rövidebb és átláthatóbb markup kóddal tudjunk dolgozni. A dolog alap 5lete az, hogy az aspx oldalunkba ne helyezzünk el feleslegesen olyan adatokat, amiket meg tudunk szerezni máshonnan is. Konkrétan miért írjuk bele az ASP.NET oldalunkba azt, hogy a GridView-unk 3. oszlopa az string és 40hosszú, ha ezt az információt (és ennél még jóval többet is!) meg tudunk szerezni az adatmodellünkből. Metaadatok segítségével akár még azt is meg tudjuk határozni az adatmodellen keresztül, hogy milyen validációt használjon a GridView akkor, amikor át vált Edit módba, és mit írjon ki akkor, ha a felhasználó invalid adatot ír be.
 

A Dynamic Data-nak emellett van egy olyan szolgáltatása (Scaffolding) is, amely képes arra, hogy egy teljes adatbázist megjelenítsen úgy, hogy az egyes adattáblákban az adatokat egyszerűen lehessen rendezni/módosítani/törölni stb., szinte zero sornyi kód írással.
 

Az egész rendszer alapja természetesen az ASP.NET Routing, illetve a template-k. Lehetőségünk van definiálni új mezősablonokat (például saját típusokhoz), vagy akár teljes oldalsablonokat is (például megszabhatjuk azt velük, hogy miként lehessen módosítani az egyes táblák adatait (grid-en belül, vagy egy külön DetailsView-ben, stb.)), ezáltal is egyedivé tudjuk szabni az auto-generált felületeket.
 

Dynamic Data témakörrel kapcsolatban az alábbi oldalakon találhattok hasznos információkat:
http://devportal.hu/groups/linq/blog/archive/2008/11/28/asp-net-dynamic-data-intro-1.aspx
http://devportal.hu/groups/linq/blog/archive/2008/12/01/ado-net-dynamic-data-intro-2.aspx
http://www.asp.net/dynamicdata/
http://msdn.microsoft.com/en-us/library/cc488545.aspx
http://www.codeplex.com/aspnet/Wiki/View.aspx?title=Dynamic%20Data&referringTitle=Home
http://weblogs.asp.net/scottgu/archive/2007/12/14/new-asp-net-dynamic-data-support.aspx
http://www.hanselman.com/blog/PuttingASPNETDynamicDataIntoContext.aspx
http://www.myvbprof.com/2007_Version/Dynamic_Data_Tutorial.aspx

 
  Az MVC Framework több szempontból is kilóg a többi közül. Egyrészt ez egy keretrendszer (egyesek a Dynamic Data-ra is azt mondják, hogy az egy framework… de én inkább szolgáltatásnak mondanám). Másrészt még csak béta állapotban van. (Volt előtte 5 preview kiadás is!). Harmadrészt pedig nem csak egy ASP.NET-es kiegészítésről van itt szó, hanem egy teljesen más programozási modellről. Ugyanis az MVC lényege az, hogy a standard WebForm-ok helyett, ahol a markupban mindféle adat található (ui, data access, business logic, event subscription, stb.), használjunk inkább valami kicsit jobban strukturált, jobban szétválasztható rendszert. Ezt úgy tudjuk megvalósítani, hogy az alkalmazásunkat az alábbi három részre bontjuk szét:
Modell – Logic – Üzleti logika
View – Presentation – Megjelenés
Controller – Input – Interakciók
(Ezt a felosztást a 70-es években a Smalltalk-nál „találták ki”)
 

A szétválasztásból az a nagy előnyünk származik, hogy általa sokkal egyszerűbben tesztelhető lesz az alkalmazásunk, illetve könnyebben át látható lesz a kódunk. (Utóbbi nem feltétlenül igaz, legalábbis nálam nem…)
Fontos: az MVC nem a WebForm-ok helyett lesz, hanem mellett, vagyis egy alternatíva lesz, nem pedig az új tendencia!
 
ASP.NET jövő
To Be continued
 

Tovább folytatjuk az adatkötéssel való ismerkedésünket, így a mai témánk az egyszerű, kétirányú adatkötés lesz. Jó szórakozást kivánok hozzá!

16. Adatkötés I. – Egyszerű, kétirányú

Videó
http://cid-8dcaf3b0da4fb828.skydrive.live.com/embedrowdetail.aspx/Silverlighttanfolyamanyagai/16|_DataBinding|_II.wmv

Forráskód
http://cid-8dcaf3b0da4fb828.skydrive.live.com/embedrowdetail.aspx/Silverlighttanfolyamanyagai/SL|_Demos|_DataBinding|_II|_RC1.zip

Demo in Live
http://silverlight.services.live.com/invoke/71923/DataBinding_II.Sample/iframe.html

 

Light up the WEB 🙂