26 Comments

imageSlegla se prašina oko posljednje Microsoft konferencije Build, i prema reakcijama blogera još se broje mrtvi i ranjeni. Bujica novosti je zapljusnula cijelu IT zajednicu, ali čini mi se nekako da imam više pitanja nego prije te konferencije .

Za one koji su živjeli ispod staklenog zvona i nisu upoznati sa glavnim novostima, ukratko: predstavljen jeWindows 8 Technology Preview, i koncept programiranja aplikacija za njega. U novim Windowsima su sada dva operativna sustava: jedan namijenjen prvenstveno za tablet (slate) računala, zvan Metro, i drugi za standardno (classic kako to sada MS zove) desktop okruženje - uredsko okruženje, power desktop korisnici, i uglavnom desktop/laptop računala. Za touchscreen uređaje, Metro koncept UIa je već poznat sa WP7 uređaja, i sada taj koncept seli i na "pune" Windowse.

Tehnički gledano, radi se o dva poprilično odvojena okruženja za izvršavanje aplikacija:

Desktop App (classic): tu se priča ne mijenja puno (ako uopće?) u odnosu na trenutni model razvoja na Windows 7 sa .NET-om, Win32 API i dr. Aplikacije se ne vrte u Metro okruženju, ne koriste novi WinRT. 

Metro Apps: korisničko sučelje predstavljeno tile-ovima, inspirirano znakovima po kolodvorima (od tuda i naziv Metro, jelte), čime se naglašava informacija i funkcionalnost bez skretanja pažnje raznim nepotrebnim uljepšanjima (gradijenti, sjene, 3D efekti gumba, prozori, ...). imageAplikacija je prikazana jednim tile-om, ili nakon pokretanja fullscreen načinom (zanimljivo, ovime se gubi i windows iz Windowsa), ne postoji pogled gdje imamo n prozora na ekranu, znači nešto nalik radu na iPadu ili smartphoneima. Izvršava se u svom sandboxu, ne može prtljat po OSu, nema modal popup prozora, ima ograničenu funkcionalnost u odnosu na classic aplikacije, koja je definirana WinRT API-jem.
Programira se u jednom od ova dva okruženja:

- HTML5/JS: trend rasta Javascripta u "ozbiljnim" web aplikacijama zahvaljujući JS kompajlerima i buka oko HTML-a 5 ipak nije bila za ignorirati, i zašto ne pokušat privući te developere?

- c#/VB/f#/c++ + XAML: puno bliže Silverlight i WP7 runtime-u nego WPFu, Metro aplikacije mogu jednostavno razvijati i postojeći Silverlight/WPF programeri.

WinRT je nastao spajanjem Windows i Developer divizije unutar Microsofta (pola XAML tima je razmješteno u Windows diviziju, a pola je otišlo za Windows Phone. Ako netko zna tko će sada razvijati WPF neka mi šapne). Osim što implementira novi Metro UI, možda zanimljivo za spomenuti je poklapanje sa novostima koje donosi .NET, odnosno C# 5, asinkroni model rada. Naprimjer, Microsoft želi da sve operacije koje traju duže od 50ms bude odrađeno asinkrono da bi se dobila potrebna brzina i fluidnost sučelja. Nove c# naredbe async i await upravo to i omogućuju i olakšavaju, a dobiva se uredan i čitak kod (za razliku od Node.JSa gdje se asinkroni algoritam mora organizirati closuerima, gomilom funkcija unutar funkcija).[more] clip_image001

Osim navedenog, razvoj Metro aplikacija je demonstriran na Visual Studio 2011 (uskoro 2012) i .NETu 4.5 koji su dostupni za download u trenutnoj preview verziji, sa ugrađenim projekt predlošcima za Metro aplikacije. Prikazan je i rad u novom TFSu preko weba sučelja.

Sveukupno, rad Metro aplikacija na Win8 izgleda vrlo nalik onome što već neko vrijeme gledamo i koristimo na raznim iUređajima, pingvin-telefonima i tabletima, odnedavno i WP7 telefonima: aplikacije se kupuju na marketplaceu, izvršavaju u full screenu, imaju ogranićen pristup OS-u.

imageKao developer, uglavnom sam popratio Win8 i VS2011 prezentacije, ali Windows Server nNext dobiva jako zanimljiva poboljšanja. Pogotovo kada kažu da nije bilo ambicioznije verzije Windowsa Server još od Server 2000 i predstavljanja Active Directorya! Naglasak je dan na upravljanje više-korisničke (multi-tenant) Cloud infrastrukture, skalabilnost, virtualizaciju, clusterting i pohranu podataka. U biti, izdaju Windows Server verziju koju su i samo koristili za izgradnju Azure-a. Osim par UI poboljšanja u obliku Metro zamjene za MMC, PowerShell ulazi na velika vrata. Windows sistemaši će od naredne verzije provoditi puno više vremena pred konzolnim prozorom. Više o Serveru pročitajte ovdje.

Ovaj zaokret u strategiji me je malo i iznenadio, iako pratim razne objave i zbivanja vezana za razvoj na MS platformi, i moglo se naslutiti smjer u kojem se ide. Razočaran Microsoftom zbog neimanja dugoročne vizije i plana za Silverlight platformu, nisam siguran dali oni žele samo uhvatiti korak za tržišnim prilikama, ili imaju viziju i plan gdje i kako biti za 5-8 godina. Kako Microsoft živi od Windowsa, čiji je tim neusporedivo veći od onoga koji je stvorio Silverlight, vjerujem da neki pametni ljudi tamo u Redmondu znaju šta rade.

Cijeli ovaj WinRT me izrazito podsjeća na WinFX koji je trebao doći davno na Visti, ali se projekt srušio kao kula od karata. Konačno su se različiti odijeli u Microsoftu uspjeli dogovoriti i ubaciti .NET u OS, nakon samo 10-tak godina postojanja istog, i totalnog ignoriranja od strane Windows divizije.

Tendencija smanjivanja i ogoljivanja .NET-a i Windows kernela je u Win8 uzela maha, a u budućnosti možda možemo očekivati neki unificirani kernel koji će pokretati i telefone i desktop računala, ali sa različitim dodanim "modulima" (linux priča, ali vjerojatno vezano za mini-win projekt iz MS laboratorija). Glasine na ulici spominju da bi to mogao biti Windows Phone 8 (kodno ime Apolo), koji bi preuzeo okljaštreni Win8 kernel.

imageJavascript je jezik u kojemu provodim pola radnog dana, i to kao ASP.NET C# programer, tako da mi je drago da ću postojeće i buduće znanje moći iskoristiti za Metro aplikacije (i u par klika ih objaviti na marketplacu, tamo negdje 2020 kada dodaju i podršku za našu zemlju, jadnalinammajka). Ali ima kvaka u ovoj prići - istina da se koristi "industrijski standard" HTML5 i JS, ali sa dodatnim Microsoftovim JS bibliotekama funkcija, što znači da je ta moja "standardna" HTML5/JS aplikacija usko vezana za Windows JS API, i ne može se copy/paste na web server i pokretati na bilo kojem Chrome/Firefoxu na Linuxu ili Macu! Programer je vezan za Microsoft platformu, iako koristi ne-Microsoftove open-standard tehnologije JavaScript i HTML5. Dali su nam time ruke vezane ili ne, prosudite sami.

Ostaje jedna nerazriješena enigma: do sada je preporučena platforma za pisanje igara bila XNA. Za Win8 sve izgleda kao da je za igre namijenjen c++, XNA uopće nema i nije spomenut na Buildu. To još ostaje za vidjeti.

Mali rezime i zaključak vezan za Silverlight razvojnu platformu: usprkos komentarima, Silverlight nije mrtav, ali nije više niti strateški važan proizvod. Upotreba je ograničena na interne Line of Business (LOB) i Rich Media (A/V) aplikacije, a za sve ostalo gurati će se HTML5/JS. Međutim, to je još toliko daleka budućnost da se ne moramo nimalo brinuti velikim i naglim promjenama, ali je evidentno u kojem smjeru se ide. Zato, za sljedeći projekt, kada budete išli u File/New Project u Visual Studiu 2010/2012, pazite da odaberete ASP.NET MVC 3 (4), i uhvatite se u koštac sa jQuery i HTML5 điđama!

Nekoliko zanimljivih linkova:

http://codeclimber.net.nz/archive/2011/09/15/Microsoft-dev-stack-vNext-from-Build.aspx
http://mikehadlow.blogspot.com/2011/09/thoughts-on-windows-8-part-2.html
http://tirania.org/blog/archive/2011/Sep-15.html

0 Comments
kulendayz2010_small

Od 3. do 5. rujna se u Belom Manastiru kraj Osijeka održava godišnja konferencija u organizaciji MS Community Osijeka. Osim stručnih i zanimljivih predavanja podijeljenih u nekoliko trackova, prilično visoke tehničke razine (level 300, 400, za programere, sistemaše i db admine), glavninu konferencije čini druženje sudionika, od zajedničkih većeri, zabava, do izleta u Kopački rit i mogućih rekreakcijskih aktivnosti.
Jako me veseli moje ovogodišnje prvo sudjelovanje na ovoj konferenciji, prvenstveno zbog druženja sa poznatim njuškama u domaćnoj .NET zajednici i susreta sa prijateljima, te nadam da stjecanju novih znanja (planiram izvući iz predavaća sve informacije o projektima na kojim rade i sa kojom tehnologijom i kako, kada budu pijani, ali nemojte im to reći!)
I da, konferencija je besplatna, samo se pobrinete da dođete do tamo, i sredite si smještaj!

http://kulendayz.mscommunity.net/

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!