Really simple IoC/DI container implementation

I’m sure you know (or at least have heard of) Inversion of Control/Dependency Injection principle. It’s a very handy principle that leads to plugable application design, simplifies unit-testing and so I can recommend its using.
I wanted to use some really simple IoC/DI container with small footprint. Unity or PicoContainer.NET are propagated as „lightweight IoC/DI containers“ so I wanted to use one of them. Before I had looked into source code of Unity. And…what the hell? Lightweight? There are dozens of classes and interfaces! I’m sure that Unity is really good piece of software but I needed something less sophisticated and more fast. Despite IoC/DI is very strong principle it’s very simple to implement – so I decided to write my own really lightweight IoC/DI container. Just because I love programming 😉
Celý příspěvek

Cassandra očima .NET programátora

V poslední době je v módě termín NOSQL (Not Only Sql) a tak se i já o něm zmíním. Není to proto, že bych potřeboval být nutně cool, ale byl jsem nucen se na NOSQL podívat, protože nabízí efektivní řešení některých specifických úkolů, u kterých klasické relační databáze ztrácí dech. Je trošku zavádějící mluvit o NOSQL databázích (přestože to jsou báze dat), proto upřednostňuji termín NOSQL úložiště. NOSQL úložišť existuje mnoho typů, já se ale zaměřím jen na úložiště typu BigTable, konkrétně na Cassandru. Co zde popíšu ale do jisté míry platí i pro HBase.
Celý příspěvek

Architektura Modelu

V moderních aplikacích na platformě .NET se začínají prosazovat nejrůznější návrhové vzory, což jistě přispívá nejen k lepšímu návrhu aplikací, ale i ke snadnější komunikaci mezi vývojáři. Dosud jsem blogoval především o návrhovém vzoru, který se týkal pouze návrhu Prezentace – Model-View-Controller. Existují ale i jiné prezentační vzory, také Model-View-Presenter a jeho klony se těší velké popularitě (např. v ASP.NET WebForms a WPF/Silverlightu). Tyto návrhové vzory ale neřeší návrh celé aplikace, řeší jen Prezentaci. Zbytek aplikace je nazajímá – ten schovávají za písmenko MModel. Za Model se tedy v tomto případě považuje vše, co není Prezentace (front-end), tedy back-end. A právě návrhu Modelu (back-endu) bych se chtěl v tomto článku (a následujících) věnovat.

Celý příspěvek

IoC/DI v .NET

V poslední době se hodně mluví a píše o moderních programovacích technikách (TDD, DDD) a o s nimi souvisejících technologiích. Mezi ně patří i poněkud konstrbatá zkratka IoC/DI – Inversion of Control/Dependency Injection, na kterou se podíváme v tomto článku. Předem podotýkám, že je článek některé skutečnosti zjednodušuje a slouží především jako úvod do problematiky.
Celý příspěvek

JavaScript očima programátora v2

Najít na internetu článek nebo dokonce seriál, který by se systematicky zabýval JavaScriptem, není nic jednoduchého – převažují články, které ukáží, jak deklarovat proměnné, v lepším případě funkce, poví něco o datových typech a tím to většinou končí. Navíc většina článků je mířena na použití JavaScriptu v rámci prohlížeče. Zřejmě i takovýto nedostatek informací vedl k tomu, že se z JavaScriptu stal jazyk, jenž je obestřen mnoha mýty, legendami a polopravdami, a mezi skutečnými programátory je značně neoblíben a/nebo nepochopen. Proto jsem se rozhodl sepsat tento článek, který představuje JavaScript z pohledu programátora, který je odkojen klasickými programovacími jazyky jako Pascal, C, C++, C# nebo Java. Článek představuje JavaScript jako univerzální jazyk, bez jakéhokoliv zaměření na nějakou konkrétní oblast nasazení (např. prohlížeče). Proč? Dnešní internet je plný rich internet aplikací, jejichž výkonnost je často limitována rychlostí JavaScriptu a proto bylo v posledních letech vynaloženo mnoho úsilí na to, aby JavaScript běhal co nejrychleji. Proto lze očekávat nasazení JavaScriptu i v non-browser úlohách, např. se nabízí použití JavaScriptu na server-side záležitosti – pak by mohla být celá RIA napsána v jednom jediném jazyce. Např. použití JavaScriptu v NoSql databázi CouchDB na psaní MapReduce funkcí je již realitou.

Celý příspěvek

ASP.NET MVC 2

Microsoft před pár dny uvolnil další verzi ASP.NET MVC, verzi 2. V době psaní článku je dostupná verze pro Visual Studio 2008. Verze pro 2010 jakoby nebude, protože ASP.NET MVC 2 bude dodáváno přímo s Visual Studiem 2010.
Ve verzi 2 není myslím nic, co by každého, kdo trošku sleduje scénu, překvapilo. ASP.NET MVC se totiž vyvíjí pod open source licencí Ms-PL, zdrojové kódy jsou dostupné na Codeplexu a tým vždy před releasem udělá několik pracovních verzí, díky čemuž má velmi dobrý feedback od komunity a ven jde dobře otestovaná věc.
Protože ale ne každý má čas/náladu/whatever sledovat průběžně novinky v ASP.NET MVC, podíváme se v tomto článku na zoubek novinkám ve verzi 2 (vůči verzi 1).
Celý příspěvek

ASP.NET MVC – lokalizace url

Na dnešním internetu je důležité, aby url měly ten správný tvar, a díky tomu je do jisté míry můžeme považovat za součást prezentační vrstvy. Určitě ale nechceme, aby nějaké stringy z prezentační vrstvy ovlivňovaly to, jak se budou jmenovat naše třídy nebo metody v aplikaci. Ale právě přesně to se v ASP.NET MVC děje – adresa ve tvaru „/controllerName/actionName“ je typicky mapována na akční metodu s názvem „actionName“ ve třídě „controllerNameController“. No ale kdo by chtěl mít metodu s názvem „追加する“? A co na to lokalizace?
Celý příspěvek

Vytváření instancí předem neznámých tříd v C#

Pokud se snažíte v C# psát aplikace modulárně a genericky, tak můžete narazit na to, co je naznačeno v nadpisu – vytváření instancí tříd, jejichž typ není v době kompilace znám. Jak na to si ukážeme v tomto článku, včetně porovnání výkonu. Konkrétně se zaměřím na vytváření instancí pomocí bezparametrického konstruktoru a příliš nebudu řešit to, kolik zabere příprava té které metody instanciace – jde mi o vytváření velkého množství instancí malého počtu tříd.
Celý příspěvek