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