Ciao Maurizio,
in release odierna ho rilasciato questa correzione che, però, ha avuto
una portata molto più ampia di quanto avessi previsto inizialmente (in
patch).
La spiegazione breve è che ho dovuto estendere il modello delle
dipendenze a TUTTI i controlli.
Quindi questa release ha bisogno di essere testata in sviluppo.
Adesso la spiegazione lunga e vi darò del "voi", perché spero che tutti
i partecipanti a questo gruppo vogliano leggerla con attenzione.
Come vi ho detto ho dovuto estendere il concetto delle dipendenze a
tutti i controlli, questo è stato necessario per poter gestire i
container, come i multipage e i flowbox.
Vi faccio un esempio banale: se un multipage contiene un campo, diciamo
un edit, che ha visibilità condizionata da A, allora anche il multipage
deve avere un sistema di dipendenze ed A deve essere fra le sue
dipendenze, altrimenti al variare di A, i figli del multipage non
verrebbero aggiornati.
Questa stessa logica vale per qualunque tipo di controllo, perché, ad
esempio, il container potrebbe contenere semplicemente un separatore
(line) con visibilità condizionata ad un certo campo.
Quindi ho dovuto estendere la logica delle dipendenze a tutti i tipi di
controllo.
Questa nuova logica darà sicuramente risultati prestazionali
vantaggiosi: però non sono in grado di stimare questo vantaggio, perché
dipende da troppe variabili, nei singoli casi.
Fondamentalmente si basa sul rapporto fra codice inviato in response e
complessità dell'interfaccia da valutare, quindi confido che il
vantaggio sarà tanto maggiore quanto più complessa sarà l'interfaccia da
gestire.
Un'evidenza che emerge dal codice è che lo sforzo server-side (per
gestire le dipendenze) è ampiamente proporzionato al vantaggio in
response e ormai sappiamo bene che ogni vantaggio in response, per
quanto piccolo, vale bene uno sforzo server-side.
Comunque qui lo sforzo server-side non implica query o risorse esterne,
ma equivale solo ad un minimo aumento della sessione in RAM
dell'app-server ed è scalato sulla complessità del programma.
Ho messo in salvaguardia tre controlli: html-area, document e grid.
I primi due perché possono dipendere da risorse esterne alla logica
Janox, che (al momento) non possono essere gestite come dipendenze
interne.
Il terzo, la grid, perché storicamente ha un suo "ambiente" di gestione
delle dipendenze, a parte di quello generalizzato, perché preesistente e
molto complesso.
Anche per questi controlli, o almeno per la grid, sarebbe davvero
auspicabile poter ricondurre la loro gestione delle dipendenze a quella
generalizzata, ma questo intervento avrebbe avuto una portata, in
termini di destabilizzazione, che non mi sono sentito di affrontare e
non sono sicuro che sarà mai affrontabile.
Un'attenzione particolare la riserverei a due controlli: la progress-bar
e il navigator.
Sulla progress-bar credo di aver fatto tutte le possibili verifiche,
nelle varie situazioni (autonoma, in grid, da job, ecc...), o almeno
tutte quelle che mi permettevano i miei strumenti di test.
Sul navigator, invece, le mie situazioni di test non saranno mai
all'altezza delle vostre pratiche quotidiane.
Quindi direi: occhio al comportamento di tutto, ma in particolare al
comportamento dei navigator, specialmente se fuori da grid.
Concludo:
Queste classi, internamente, le definirei epocali, ma capisco che
dall'esterno sia difficile percepirlo: anzi, se non lo percepirete
affatto sarà un ottimo risultato, perché vorrà dire che non avrò "rotto"
nulla.
Quindi, però, queste classi avranno bisogno di una buona quarantena in
sviluppo.
Se si dimostreranno stabili e non emergeranno problemi direi di passare
da un consolidamento, perché il mio timore è che si faccia troppo ampio
il divario fra ciò che avete in sviluppo e ciò che, effettivamente,
usate in produzione.
Credo che alcuni di voi abbiano ancora in produzione la 2.9 e credo che
questo gap vada recuperato quanto prima.