Giornataccia quest'oggi. Nulla di male, bel tempo, un bel po' di lavoro, e non fosse altro che le attese ferie natalizie sono sfumate, si potrebbe dire che la giornata è nata bene. Però stamane credo di aver sfiorato e superato i limiti della programmazione Object Oriented.

Sto realizzando un sistema per l'editing di referti medici, con la creazione on-the-fly di un numero spropositato di controlli, che mappano una mole esagerata di dati, gestendo regole di tipizzazione dei dati (numerici, testuali, enumeratori), formule di calcolo cross-field, e addirittura i matching delle tipologie di pazienti per gestire i possibili valori normali.

Il problema è che, realizzato in pura logica object oriented, mappando i dati su oggetti, semplicemente questo sistema barcolla. La mole di dati da gestire è tale che usando un ORM mi trovo nela condizione di effettuare decine di chiamate al database, che in una logica di accesso concorrente (sono previsti picchi di 50 utenti contemporanei), rischiano di abbattere le performances.

La soluzione alla fine è stata quella di ricondurre il tutto a un DataSet che descrive la struttura dei dati e ad un paio di DataTable caricati in un secondo momento che contengono i dati veri e propri, abbattendo notevolmente la durata e la quantità di accessi al database, nella speranza di lasciarlo respirare.

Questo però mi inquieta. Che l'adozione di logiche fortemente orientate agli oggetti avesse un impatto sulle performances è risaputo, ma che questo impedisse ad una applicazione di funzionare correttamente non lo avrei mai immaginato. Però è da un po' che ci penso. L'adozione dell'OOP, nella logica applicativa,da sempre è stata una carta vincente, per flessibilità e manutenibilità, ma spostandoci ai dati gestiti da una applicazione, spesso mi sono trovato a chiedermi se il gioco valga la candela.

So che con queste poche righe scatenerò i puristi della programmazione, ma ritengo di dovermi assumere questo rischio perchè due sono le cose, o c'è qualcosa di veramente sbagliato e dobbiamo discuterne, oppure, più probabilmente c'è qualcosa che non ho capito, e allora è il caso che ci sbatta il naso, se non altro per migliorare in futuro.

A voi l'accetta. Colpite duro!

powered by IMHO