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!

2 Comments
Advanced technology day 5 logo

Svečano objavljujem, najavljujem i obavještavam svekolikom Microsoft tehnologiji naklonjenom pučanstvu (bogu mili, a niti vragu nisu mrski), da će se 1.12 u Zagrebu održati Advanced Technology Day konferencija na kojoj će biti prezentirane umotvorine gomile štrebera zatvorene u prostorije sa gomilom kompjutera. Da ne spominjem nemali iznosi tekućih racuna tih istih štrebera, koji su ne samo dobro plaćeni, nego im još i titraju na radnom mjestu sa bespatnim kavama, jeftinim jelika iz 57 svjetskih kuhinja, izvrsnim zdravstvenim, i još par sitnica. To je kao da plaćate crnogorca da spava (figurativno rečeno, bez nacinalnih konotacija molim!). Taj višegodišnji proces, ili eksperiment, je rezultirao sa nekoliko izvrsnih softwareskih alata i frameworka koji će biti prezentirani od strane stručnjaka iz Microsofta i par renomiranih domaćih tvrtki.
Izdvojio bi neke naslone redom:

  • ASP.NET 4: nakon godina zanovjetanja puritanaca konačno će stranice prolaziti W3C validaciju. To znači mogučnost potpunog isključivanja ViewState input taga, kontrole nad ID-evima serverskih kontrola. itd. Ali to je samo manji dio novosti!
  • Entity Framework 4- skok sa verzije 1 u .net 3.5 na verziju 4 u .net 4. Uvođenje POCO, Lazy loading i još mnogo toga. Dali će nHibernate konačno dobiti dostojnu konkurenciju?
  • Silverlight 3 – RIA platforma postala još bolja: 3D perspektiva, validacija podataka, nove mogučnosti streaminga,…
  • .NET 4 – dynamic objekti - statički c# dobiva dinamičke tipove, asinkrono izvršavanje, poboljšanje Garbage Collectora za višejezgrene sustave
  • MVC 2 – probajte pogoditi tko će prezentirati novu verziju MVC-a? Tako je, autor ovog bloga, glavom i brkovima! Od bitnih novosti u trenutnoj beta 2 verziji: Area, predlošci, klijent/server validacija podataka. Nešto su mi malo vremena dali, valjda ih nisam naljutio necim? Svejedno, nadam se da ću zaintrigirati barem nekolicinu koja nebude spavala, i spasiti pokoju dušu izgubljenu u WebForms moru isprepletene logike i nepreglednog code-behindea
  • Windows 7 – što donosi novoga za developere
  • Web platform installer – zgodni programčić za instalaciju drugih programa, od CMSova preko SDKova do IDEa
  • IE8 – razvoj pluginova, predpostavljam

Na službenim stranicama možete pronaći prijavu. Nadam se da se vidimo!