Uvod u novi OSS projekt
- Posted in:
- Web dev
- Quick thoughts
Nedavno sam dobio upit da napravim jednostavnu aplikaciju za potrebe jedne udruge. Radi se o aplikaciji za praćenje zahtjeva, koja vodi evidenciju tko je predao zahtjev, tko ga provodi, evidentiraju se zabilješke, i na kraju se zahtjev zatvori. Uz to, bitno je da aplikacija prilikom otvaranja novog zahtjeva pokuša pronaći u bazi dali je slični zahtjev bio već riješen, te ponudi njegovo rješenje. Aplikacija mora imati i različite izvještaje.
Sve u svemu, radi se o spoju CRMa i Issue Trackera, a specifičnost bi bila jednostavnost korištenja i izrade, "pametni" sustav traženja postojećeg rješenja i izrada izvještaja.
Da stvar bude zanimljivija, odlučio sam aplikaciju raditi kao Open Source projekt, i putem opisivati kako sam neke stvari realizirao, zašto i slično. Tehnologije koje planiram koristiti isto nisu nešto što koristim u svakodnevnom radu, te je ovo prilika za proširenje znanja.
Za sada sam se odlučio za tehnologije:
- | Silverligh 4 |
- | ASP.NET i WCF web servisi |
- | RavenDb baza podataka (SQL Server sa EF Code First je backup rješenje, ako se RavenDb iz nekog razloga naljuti na mene i odbije poslušnost!) |
Cilj je također koristiti tehnike i alate:
1. | planiranje, projektiranje i izrada document baze. Imam iskustva samo sa relacijskim modelom podataka, i ovo će biti odlična prilika za uhvatiti se u koštac sa NoSQL problematikom! Koliko me ovo veseli, toliko me i plaši (Key/Value store, Map/Reduce funkcije, kreiranje indexa, ...)! |
2. | Caliburn.Micro za MVVM framework. Do sada sam koristio MVVMLight, koji odlično služi svrsi, ali opinioned pristup sa mnoštvo ugrađenih konvencija me jako privlači |
3. | CQS pattern: kao u predhodnom postu, htio bi: - enkapsulirati upite, da ih mogu ponovno upotrebljavati - slati one-way commande koje izvršavaju zapisivanje i/ili poslovnu logiku |
Do sada sam koristio CQS pattern isključivo u MVC web aplikacijama, te još nisam 100% siguran kako ovo izvesti u Silverligh klijent/server modelu, i to zbog: - dali upite izvršavati u Silverlightu, preko RavenDb REST sučelja, ili ih slati na server i tamo izvršavati? Nikako ne želim imati standardne RPC SOAP web servise, nego više nešto nalik RESTu. - dali komande izvršavati na serveru ili klijentu? - kako serijalizirati querye i komande prilikom slanja preko WCFa, ako se uopće šalju? Inspirirano prezentacijom “Dr. CQRS or: How I Learned to Stop CRUDing and Love the Domain Model” sa NDC 2011 konferencije. | |
4. | reporting u Silverlight, još trebam odlučiti kako. Savjeti? |
5. | Aplikacija se mora pokretati na shared hosting okruženju, u Full Trust načinu rada |
Sljedeće je plan izrade User Storya, i popisa funkcionalnosti koje aplikacija mora implementirati. Izvorni kod će biti objavljen na BitBucketu kroz tjedan-dva, čim postavim projekte i solution.
Kako je ovo jedan proces učenja novih tehnologija, očekujem puno primjedbi, komentara i sugestija! Zaželite mi puno sreće u mojem prvom Open Source projektu!