neděle 7. listopadu 2004

Více konfigurátorem než programátorem

Pokud jste se dostali do křížku s nějakou novou technologií, byli jste s velkou pravděpodobností vystaveni nějaké formě konfigurace. Nikoho asi nepřekvapí, že pro konfiguraci se široce zakořenilo XML. XML má pro tento účel plno výhod, z těch základních namátkou, kontrola validity, snadná editace, lidsky čitelná forma.

Většina javovských produktů si vzala výhody xml konfigurace k srdci a tak málokdy narazíte na jinou formu. V tomto směru existují tři váhové kategorie co do rozsahu konfigurace. Do první kategorie, kterou označuji za muší váha, patří rádoby jednoduché utilitky s konfigurací do 30 řádků např. Log4J (framework pro logování) nebo Proxool (database connection pool).

Druhou kategorii, střední váha, tvoří konfigurace do 250 řádků. Mezi klasické zástupce patří servlet konfigurace resp. konfigurace webové aplikace. Do této rodiny patří i konfigurace, v uvozovkách jednodušších nástrojů, jako je Tomcat nebo Jetty (HTTP server a Servlet kontejner).

Třetí kategorii, bez váhové omezení, tvoří takové nástroje, kde konfigurace musí být rozdělena do více souboru, aby byla vůbec nějakým rozumným způsobem udržitelná. Jedná se například o Model-View-Controller frameworky (Struts), IoC kontejnery (Spring, Pico) apod.

Určitě si každý dokáže dosadit do těchto třech kategorií dosadit i produkty, které konfiguroval na vlastní kůži. Samozřejmě ne vždy mnou uvedení zástupci spadají do té či oné kategorie, mohu se pohybovat oběma směry,záleží na rozsahu projektu.

Dalším důležitým faktorem je kumulace jednotlivých konfigurací. Pro webovou aplikace budete potřebovat minimálně servlet a pak MVC konfiguraci. Vaše webová aplikace potřebuje logovat a protože spolupracuje s databází potřebuje i connection pool. Suma sumárum minimálně čtyři konfigurační soubory.

Absolutní extrém tvoří například IoC kontejner Spring, kde konfigurací spojujete jednotlivé vrstvy aplikace. Mezi ty další bych zařadil například konfiguraci deploy adresáře J2EE serveru JBoss, ostatně EJB je v tomto taktéž extrémem. Když to přeženu, jeden aby se ze všech těch konfigurací zbláznil, angličtina má pro to výstižný výraz Metadata hell.

XML konfigurace má z aplikačního hlediska obrovskou výhodu v tom, že vás nenutí svazovat, pěkně česky zadrátovat, jednotlivé komponenty systému na úrovni kódu. Dnes existuje velké množství nástrojů jako Ant či XDoclet, které mohou být velice nápomocny a konfigurační práci usnadnit.

Pokud zvážím všechna pro a proti, tak z mého pohledu se jeví výhodnější přístup pomocí XML konfigurací a to i za cenu, že jsem někdy více konfigurátorem než programátorem.