quick thoughts »

[29 srp 2009 | 0 Comments]

architectureZadnjih par godina sve više proučavam DDD (Domain driven development) način “razmišljanja” o razvoju aplikacija. Pristup problemu sa stajališta business eksperta i strukturiranje klasa i namespaceova, kao i upotreba različitih objektnih design patterna, tako da budu razumljivi vanjskom konzultantu i stručnjaku iz poslovne domene a ne samo programeru, mi zvuči logičnim i pravilnim. Moglo bi se reći da mi je standardno strukturiranje aplikacije na Sučelje (Interface) – poslovna logika (BLL) – pristup podacima (DAL), te isto takvo nazivlje varijabli i objekata počelo smetati (u nedostatku boljeg objašnjenja; nešto tu smrdi a nije moj overclockirani procesor). Više...

quick thoughts »

[28 srp 2009 | 3 Comments]

Neko vrijeme razmišljam napraviti jednostavni Asp.net MVC web site čiju izradu bi mogao pokriti u nekoliko blog postova, ali najveći problem je osmisliti temu i ideju. Surfanjem uz jutarnju kavu naišao sam na  zanimljiv site UserVoice.com, i pomislio da bi bilo baš zgodno postaviti jedan account za našu polu-propalu vladu; neka ljudi glasaju za pitanja/probleme, i vlada jednostavno uzima one s najviše glasova i rješava ih! Naravno, to je čista utopija, ali i dobra podloga za spomenutu demo aplikaciju u MVC frameworku. Ne samo da je demo aplikacija za upoznavanje s MVC frameworkom, nego je korisna za cijelo društvo :)! Dovoljno jednostavna da se ne zapletem u poslovnu logiku i infrastrukturu, ali pokriva dovoljno featura frameworka da se povremeni developer može upoznati s njegovim mogućnostima. Više...

Web Dev »

[27 srp 2009 | 1 Comments]

Naime radi se o ovome; kako adresu: http://www.somesite.com/Proizvod.aspx?id=41
pretvoriti u ovako nešto: http://www.somesite.com/Engines/WarpCore-TDI/

url rewrite Već duže vrijeme gledam PHP site-ove koji imaju lijepo napisane URLove, i neprestano se čudim zašto malo koji web site napravljen u ASP.NETu slijedi tu praksu. Apache i PHP imaju .htaccess, koji im je tamo pred nosom, i uz malo Regex znanja svi ga koriste. Ali .net developeri nemaju takvu datoteku, ili im nije pred nosom, pa valjda malo tko zna kako u samom .net Frameworku postoji solidna podrška za prepisivanje URLova i nekoliko open source frameworka koji to isto rade bez potrebe pisanja linije koda.
Scott Guthrie je već na svojem blogu pokazao nekoliko načina za prepisivanje URL adresa. Ima ih nekoliko, ali svi se oslanjaju na metodu unutar HttpContext-a:
HttpContext.Current.RewritePath();
kojoj se može pristupiti preko BeginRequest eventa unutar Global.asax datoteke, ili izradom HttpModula koji se kasnije može reusati.

Ja neću pisati svoj url rewriter, niti pokazivati kako se radi sa spomenutom metodom, jer smatram da je za ovakve “infrastrukturne” potrebe pametnije iskoristiti neki gotov framework (osim ako se radi o učenju frameworka!). Pokazati ću kako se može iskoristiti UrlRewritingNet framework za dobiti pravilne Url adrese, te koji su trikovi, mane i prednosti upotrebe istog. Više...

Web Dev »

[23 srp 2009 | 0 Comments]

Kopam ja tako po ekstenzijama za Blogengine.net (njih čak 20-tak! Ako vam je do šale, pogledajte koliko ekstenzija ima WordPress!) i naiđem na dodatak koji ispisuje vrijeme potrebno za učitavanje/iscrtavanje stranice. Kako mi je jako važno da se stranica brzo učitava, da ne bi ovih 5 posjetioca dnevno (tjedno) čekali koju sekundu previše i otišli sa stranice, valja imati precizna vremena učitavanja!

Dodam ga na blog, oduševljeno gledam vremena ispod 0,1 sekunde i divim se kako je ASP.NET brz! Potom promijenim nešto u kodu, napravim refresh stranice, čekam 5-10 sekundi da se dinamička kompilacija izvrši, kada ono u footeru opet piše: “Page loaded in 0.00569874 seconds”. Znači, nešto ne valja. Ja sam čekao barem 50-tak puta više od prikazanog vremena. Više...

quick thoughts »

[22 srp 2009 | 0 Comments]

Modificirajući ovaj blog engine (maštovitog imena blogengine.net), primijetio sam da nema ugrađen nikakav caching layer. Da slučajno 10-tak posjetioca bloga dnevno ne bi morali čekati učitavanje, morao sam pod hitno složiti jednostavnu klasu koju mogu upotrijebiti po potrebi bilo gdje u projektu.

Tako je nastalo ovo:

.net framework 2.0 verzija (blogengine.net je u .net 2):

public class CacheService<T> where T:class
{
    public delegate T CallbackHandler();

    public T Get(string key, CallbackHandler callback,DateTime? expiration)  
    {
        T item = HttpContext.Current.Cache[key] as T;
        if (item == null)
        {
            item = callback() as T;
            if(expiration==null)
                HttpContext.Current.Cache.Insert(key,item, null, DateTime.Now.AddMinutes(30), Cache.NoSlidingExpiration);
            else
                HttpContext.Current.Cache.Insert(key, item, null, expiration.Value, Cache.NoSlidingExpiration);
        }
        return item;
    }
}

ili .net 3/3.5 verzija Više...