1 Comments

Jedan od alata koji zaslužuje puno više pažnje nego što dobiva je sigurno Webmatrix: lagani, besplatni editor za više programskih jezika i tehnologija. Ovaj alat nema neke veze sa VisualStudiom, ali namjena mu je da pojednostavi razvoj aplikacija u određenim scenarijima gdje je čak i VisualStudio Express prevelik i kompliciran. Iz toga se da zaključiti da mu namjena sigurno nije za razvoj enterprise poslovnih aplikacija, nego prije za učenje ili male i jednostavne projekte, ali sa mogućnošću kasnije migracije na puni VisualStudio.

Kada sam ga prvi put pokrenuo i otvorio sample aplikacije (isporučuje ih se nekoliko u paketu) odmah sam se sjetio Classic ASP dana, ali i VisualStudio 2003/2005 Web Site projekta – programski kod se nalazi unutar HTML-a, baš kao i kod starog ASP-a, iako se ovdje naravno radi o c# sintaksi. Naime, upotrjebljen je Razor view engine i nekoliko novih DLLova koji uključuju razne pomoćne klase za lakši razvoj web aplikacija. Funkcije je moguće pisati i u zasebnim fajlovima unutar App_Code foldera (kao kod “starih” Web Site projekata/aplikacija iz VS2003/5), čime one postaju dostupne unutar bilo koje stranice. [more]

Rad sa bazom

Webmatrix sadrži skup pomoćnih klasa (namjerno neću to nazvati frameworkom) koji olakšava rad sa bazom. Upiti se pišu u SQL jeziku, a rezultati se dobivaju u obliku kolekcija dinamičkih objekata, čime se postiže na brzini razvoja, ali i gubi intellisense predlaganje naredbi. Upotreba je naravno opcionalna, a svatko može uključiti ORM alat po želji (Dapper, Simple.Data, Massive, …).
Da bi povukli podatke iz baze ili dodali nove u bazu, potrebno je samo na vrhu .cshtml stranice napisati sljedeće:

Defaulta baza koja se koristi je SQL CE 4 (embedded baza, nije potrebno imati instalirani SQL server). Putem Webmatrixa moguće je kreirati i mijenjati bazu.

Za dodavanje novih frameworka najjednostavnije je koristiti ugrađenu podršku za Nuget pakete.

Autentikacija

Kao i nova verzija ASP.NET MVC, WebMatrix koristi DotnetOpenauth da bi omogućio prijavu putem Facebooka, Twitter ili Googla. Primjer upotrebe se može vidjeti u Starter Site sample aplikaciji koja dolazi unutar instalacije Webmatrixa.

Podrška za ostale jezike

Možda najzanimljivije svojstvo je puna podrška za pisanje PHP i Node.JS aplikacija. Ne morate se brinuti za potrebne servere, Webmatrix će ponuditi instalaciju svih potrebnih dodataka da bi mogli PHP i NodeJS aplikacije pokretati lokalno!

Postoji solidna podrška za intellisense unutar Node.JSa i PHPa. Od ostalih tehnologija, Webmatrix zna raditi sa Jade i EJS template-ovima,  LESS i SASS css preprocesorima, Coffeescriptom.

Steven Sanderson je objavio nekoliko odličnih video tutoriala o radu sa Nodeom i Expressom:
http://blog.stevensanderson.com/2012/07/09/node-js-development-with-webmatrix-2-and-express/

Primjena ovog alata može biti široka, od učenja programiranja i izrade web aplikacija, do brze izrade prototipa i izmjena postojećih aplikacija. Osobno mi se vrlo dopala lakoća instalacije i podešavanja Wordpressa: kod kreiranja novog projekta odabere se Worpress, Webmatrix pita dali smije instalirati potrebne alate (PHP za IIS, MySQL), i kroz nekoliko trenutaka pojavi se početna Wordpress stranica, spremna za koristiti! Slično vrijedi i za ostale aplikacije koje se nude putem ugrađenih predložaka (Joomla, Kentico, N2, Orchard, …).

Mobilni pregled

Korisna ekstenzija za WebMatrix je svakako iPhone i iPad simulator, koja se može dodati putem “Extensions Gallery” ikone u ribbonu:

Simulator omogućava pregled stranice kako bi izgledala na iPhone i iPad uređajima, a nudi još i funkcionalnosti poput horizontalnog/vertikalnog pregleda, simulacije dodira, Javascript informacija, podešavanja GPS koordinata. Implementacija je vrlo slična onoj u ASP.NET MVC frameworku: mobilna verzija stranice sadrži “.mobile.cshtml” u imenu datoteke, što znači da stranicu koja će biti prikazana na desktopu moramo nazvati “stranica.cshtml”, a njenu mobilnu verziju “stranica.mobile.cshtml”, a Razor se brine o detekciji preglednika i odabiru stranice. Naravno, ovime dolazimo do potrebe za odvajanjem programske logike u zasebne datoteke (npr unutat App_Code foldera), ali to je već  tema za neki drugi post Smiješak s namigivanjem

Za kraj nekoliko korisnih linkova sa dodatnim informacijama:

0 Comments

sqlmigrationJedna od čestih tehnika rada sa bazom, obavezna u ozbiljnijim firmama sa programerskim timovima, ali i popularizirana u Ruby on Railsu, je izrada migracijskih skripti. Radi se o kontinuiranoj izradi skripti koje upravljaju sa shemom baze. Drugim riječima, ne smije direktno mijenjati baza, jer se time izgube informacije tko je, kada i što promijenio, nego se rade kratke skripte, i svaka se nazove ili notira datumom (timestamp-om). Da bi se baza kreirala, dovoljno je pokrenuti sve skripte.

Jedan način izrade migracijskih skripti je pisanje SQL-a unutar običnih textualnih (.sql) fajlova, koje je moguće izvršiti u SQL Management Studio, ili nekom drugom alatu. Da bi automatizirali to, pratili u kojoj je “verziji” naša baza (koja je zadnja skripta izvršena), trebati će nam neki alat. U .NET svijetu ih ima nekoliko. Svi oni rade na slični princip, stoga opisana procedura ovdje vrijedi i za ostale alate. Pokazati ću rad sa FluentMigratorom, kojega ja upotrebljavam u svojim web projektima.

Ovaj alat je C# apstrakcija nad generiranjem SQL skripti i baze podataka, što znači da se koristi fluent API za kreiranje skripti, i željeni database provider ovisno o bazi (MS SQL, MySQL, SQLite, Jet, Oracle, Postgres). Sastoji se od DLL biblioteke koja sadrži fluent API klase, i runnera, .EXE izvršne datoteke koja pokreće skripte. Runner se može pokrenuti po želji, i on će izvršiti samo skripte koje nedostaju, odnosno od zadnjeg pokretanja, jer u bazi postoji podatak o trenutnoj verziji. Također, runner je pogodan za pokretanje u sklopu build procesa.[more]

Strukturiranje projekta

Da bi runner izvršio migracijske skripte, mora mu se dati DLL koji sadrži migracije. Možda najjednostavnije je kreirati jedan class library, i u njemu držati sve migracije. Projektu je potrebni postaviti referencu na FluentMigrator.

Kreiranje migracijskih skripti

Migracija skripta je obična klasa, koja nasljeđuje Migration klasu i ima atribut sa parametrom rednog broja skripte. Primjer:

Metoda Up se pokreće kod izvršavanja i postavljanja baze na posljednju verziju, a Down se ako želimo vratiti na određeno stanje u prošlosti i poništiti promijene.

Fluent API sadrži sve potrebne metode za CREATE, DELETE, ALTER tablica, ali i dodavanje podataka u bazi i izvršavanje vanjskih skripti (dodavanje Stored procedura, …). Moguće je kreirati i indexe:

Izvršavanje skripti

Skripte se izvršavaju nad bazom pokretanjem migrate.exe datoteke, uz potrebne parametre. Spisak svih parametra je dostupan na službenim stranicama. Primjer komande:

migrate.exe /conn "Data Source=App.Web\App_Data\db.sqlite;Version=3" /db sqlite /target "App.Migrations\bin\debug\App.Migrations.dll"

U svojim projektima sam tek nedavno počeo koristiti migracijske skripte, te iako nemam neku potrebu vračanja stanja baze u stariju verziju i slično, ne moram tražiti management alat za upravljanje bazom (za SQLite u ovom slučaju), promjene su jasno vidljive iz koda, lakše je kreiranje raznih ključeva i indexa, jer svaki management alat ima specifičnosti, i rad sa bazom je ugodniji i lakši. U kompleksnijim okruženjima, testing i deployment fazama, izvršavanje migracijskih skripti je sigurno lakše od backup/restore procedure.