9 Comments

I konačno, prvi windaysi na kojima ći prisustvovati u cijelosti (ne ono: evo ti ulaznica na 2 sata, poslje mi vrati jer te zamjenjuje kolega), i to u velikome stilu; sa druge strane šanka! Odnosno speaker pulta ili kako se već to zove. Naime, pred par mjeseci sam prijavio nekoliko tema za prezentaciju, uglavnom vezanih za ASP.NET MVC i Silverlight, nakon čega je programski odbor konferencije slučajno izabrao jednu predloženu prezentaciju: Silverligh RIA Services!

Mali uvod u Silverlight RIA Services, počevši od uvoda u ADO.NET Astoriu, kasnije nazvanu ADO.NET Data Services, pa opet preimenovanu u WCF Data Services (marketing odjel si svašta dopušta izgleda). U osnovi, radi se o izlaganju REST sučelja, čime se omoguće pretraživanje podataka kreiranjem posebnog URLa, te operacija nad podacima upotrebom Http metoda Get, Post, Put i Delete.

Za razliku od "standardnog" web servis upita nad određenom metodom ili procedurom (RPC-nalik upiti), u RESTu nema izloženih metoda koje se mogu pozvati, nego se upiti provode nad (hijerarhiskim) modelom podataka. Kako to izgleda u praksi:

1. kreiramo bazu, postavimo relacije
2. mapiramo bazu na objekte pomoću nekog ORM alata (EF, nHibernate, ...)
3. REST frameworku (WCF data services / RIA Services) kažemo da želimo izložiti taj model podataka
4. Upitom "http://domena.com/wcfdataservis.svc/Categories/121/Products?filter=Price gt 100" dobijemo spisak proizvoda u kategoriji sa ID-om 121 koji imaju cijenu veću od 100. Svega nekoliko klikova i par linija koda konfiguracije izmjenjeno, vrlo jednostavno! Primjetite da URL sadrzi sam upit, odnosno “adresu” podataka koji zelimo, zajedno sa dodatnim filtrom. [more]

Kako sada Silverlight ulazi u tu priču? Naime, u Silverlightu možemo raditi upite (koji su uvjek asinkroni) nad web servisima, i Visual Studio se brine da kreira proxy klase koje obavljanju serijalizaciju/deserijalizaciju i omogućavaju stronly-type način rada. To je onaj “obični” način rada, old-school ;)

Pomoću RIA Services izlažemo metode koje vraćaju podatke, a iz Silverlighta možemo raditi LINQ upite nad tim podacima. LINQ upiti se serijaliziraju, enkodiraju u onaj REST URI upit, koji se na serveru potom ponovo deserijalizira u LINQ i izvršava nad podacima koje tražena metoda vraća. Uz to, RIA services se brine oko asinkronog dohvata apstrahirajući sam proces asinkronog pozivanja web servisa i podizanja evenata.

Plan za Windays prezentaciju je da napravim jednu relativno jednostavnu aplikaciju koja koristi RIA Services, poslovnu logiku drži na serveru, validacija je definirana nad entitetima domene, a Silverlight je isključivo prezentacijski klijent. Aplikacija će biti dostupa za slobodan download, a nadam se da ću neke njezine zanimljive dijelove obraditi i u par blog postova, kao naprimjer:

  • custom autorizacija i autentifikacija
  • izlaganje podataka preko RIA Data Services
  • MVVM pattern i RIA Services
  • validacija
  • navigacija unutar Silverlight aplikacije
  • pub/sub pattern za komunikaciju unutar Silverlight aplikacije (već opisano na ovom blogu)

Aplikacija će služiti za kreiranje putnih naloga. Proces kreiranja putnih naloga:

  • zaposlenik kreira zahtjev za odobrenjem naloga. Nalog sadrži osnovne podatke o destinaciji putovanja, relacijama, vremenu, vozilu
  • voditelj odobrava nalog ili ga vraća zaposleniku uz poruku
  • nakon povratka sa putovanja zaposlenik unosi troškove (prijeđene relacije, dane, dodatne troškove tunela, parkinga,…)
  • djelatnik računovodstva računa dnevnice i isplate prema unesenim podacima
  • printanje izvještaja
  • tablica raspoloživosti voznog parka

Vjerojatno veći dio ovih funkcionalnosti neće biti u potpunosti implementiran do Windaysa (u trenutku pisanja to je za 11 dana), ali nadam se s vremenom da će aplikacija doći do verzije 1!

8 Comments

Prije koji dan sam bio pozvan na ATD5 konferenciju da kažem nekoliko riječi o MVC v2. Prezentacija je trajala punih 25min, minus 5 minuta zbog tehničkih poteškoća spajanja sve te prezentacijske opreme, ali na kraju je 20 minuta bilo dovoljno da ispričam baš sve, od '79 do '09, od nastanka patterna do implementacije u naš dragi framework i sve to demonstriram kroz par demo aplikacija. Uz to, trebalo je i spomenuti novosti u verziji 2, kao da ljudi već aktivno rade i razvijaju u verziji 1! Ne moram niti napisati, ali na kraju su me svi gledali u čudu, i pitali se od kuda je ovaj došao i što to on priča uopće. Već sam bio pomislio da su mi sve lađe potonule, kad ono evo trojica sudionika konferencije sa pitanjima glede te čudne tehnologije! To mi je bilo dovoljno da ne počinim ritualni harakiri, i slobodno odputujem doma mirne savjesti da sam uspio (možda) spasiti barem jednu ili dvije izgubljene duše u moru proceduralnog špageti ala bolonjez ASP.NET koda. Što bi tek bilo da sam počeo pričati o Uncle Bobovim SOLID principima, proglasili bi me mesijom!? Malo si umišljam, oprostiti će te mi?
Pred kraj konferencije, dokle sam sjedio u foajeu hotela i pućkao lulu (ili da ne lažem: jeo pizza cut i pio colu, ipak sam ja white&nerdy:), prišao mi je Domagoj Pavlešić, tvorac Bugovog portala i Foruma (da, Bug odnosno Domagoj je sam isprogramirao svoj forum engine sa ASP.NET, to mi je baš kul), i zamolio me da održim punu prezentaciju MVC frameworka na novoj user grupi! Moja prezentacija je tu nebitna, puno važnija je vijest osnivanja nove microsoft user grupe koja će se baviti isključivo webom i razvojem web stranica i aplikacija. Izuzetno mi je drago što je Domagoj prepoznao potrebu okupljanja .NET web developera preuzeo inicijativu osnivanja grupe, svaka mu pohvala za to. Prvi sastanak je 15.12.2009, za daljnje aktivnosti su već najavljene na službenom webu.

Nedugo potom konferencije, dobio sam jedan email koji me jako obradovao. Ne samo zbog pošiljatelja koji ima MVP status (da, jedan MVP je MENE kontaktirao!), nego i zbog sadržaja maila, gdje me poziva na suradnju oko novog web portala za ASP.NET MVC zajednicu Hrvatske, Bosne, Srbije  i Slovenije! Ne samo da imamo MS Community grupu, nego smo dobili i web portal za MVC! Stoga, sljedeću godinu proglašavam godinu renesanse ASP.NETa; šire prihvačanje MVCa, osnivanje web user grupe i portala će svakako učiniti 2010 zanimljivom za ASP.NET developere. Dali bi tražio previše kada bi od Djeda Mraza/Božićnjaka/Svetog Nikole zaželio i da se malo više okreneo i Silverlightu? Neka, mora nešto ostati i za kasnije.
Sve koji žele sudjelovati u djelovanju portala i user grupe, pozivam da im se obrate jer iza stoje jako dobri ljudi i veliki stručnjaci:)