11.886 messaggi dal 09 febbraio 2002
Contributi

se potrei adottare un ORM con il minimo impatto possibile sul codice

Beh, non conoscendo la tua applicazione non saprei dire quale impegno richiederebbe usare un ORM adesso. Sicuramente non sarebbe indolore perché non tutte le query Linq to Objects possono essere usate così come sono in Linq to Entities. Il provider LINQ non è sempre in grado di tradurre un'espressione C# nella sua controparte SQL.
Inoltre, mentre con Linq to Objects hai tutte le entità caricate in memoria, con Linq to Entites alcune entità correlate non vengono caricate subito ma solo secondo necessità (cioè quando vai a leggerle e questa diversità potrebbe produrre degli effetti collaterali).

Penso che dovresti valutare l'uso di un ORM per il prossimo progetto ma devi essere tu a prendere la decisione. Se pensi che l'attuale soluzione basata su cache in memoria sia ok e non ti dà grossi grattacapi nella manutenzione, puoi mantenerla così com'è.
Se si tratta di un'applicazione che prevedi di vendere a molti clienti e che potenzialmente potrebbe dover gestire centinaia di migliaia (o milioni) di entità, allora forse è il caso di valutare se riprogettare lo strato di accesso ai dati per evitare che qualcuno possa lamentarsi quando ormai sta usando l'applicazione in maniera assidua.

Ricorda che ogni redesign di un'applicazione (così come qualsiasi altra scelta architetturale) va presa in base al valore che fornisce sia all'utente che allo sviluppatore, rapportato alla complessità e al costo che richiede per essere implementata.

ciao,
Moreno
Modificato da BrightSoul il 09 settembre 2016 22.28 -

Enjoy learning and just keep making
66 messaggi dal 03 ottobre 2009
Ok grazie ancora dei suggerimenti, nel frattempo ho implementato con successo HangFire e devo dire che mi ha risolto il problema, ora riesco a far precaricare in "background" i dati senza che la webApp si blocchi potendo così informare l'utente in caso venga fatta una richiesta al sito durante appunto il processo di precaricamento.
Grazie!!!
Ovviamente l'intenzione è quella di impostare il riavvio del del pool di IIS secondo tempistiche ben definite, e ovviamente in orari notturni, anche se poi si tratta di qualche minuto.
In questo modo se per qualsiasi eventualità si dovesse riavviare IIS in orari lavorativi almeno non blocca la richiesta al sito.
Se poi il progetto "prenderà il volo" sicuramente mi preoccuperò di utilizzare un ORM quale EF o Nhibernate anche se non so ancora tra i due... forse EF perchè lo immagino un prodotto meglio integrato vista la sua natura, e comunque è quasi d'obbligo un ORM, pensa che mi sono scritto a mano qualsiasi iterazione col DB ovviamente tramite ADOnet.
Il fatto è che così riesco ad intervenire in qualsiasi punto del codice, non so se riuscirei a fare altrettanto con un un ORM, c'è anche da dire però che non è buona pratica progettare un applicazione di media complessità in questo modo, non è molto "funzionale".
Oltre a questo lavorerò anche sul fronte dell'ottimizzazione LINQ-to-Object perchè il rallentamento non è dato tanto dalla lettura dei dati e relative conversioni in liste di oggetti ma dalle query LINQ integrate dentro gli oggetti che vengono risolte durante la loro inzializzazione.
Ho letto al volo qualche cosa in merito all'ottimizzazione delle performance di LINQ ma non ho capito molto, dovrò approfondire la questione.

Andrea Restucci - Web Developer

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.