InfoPath 2007 Performance: DropDownList e Browser
Negli ultimi mesi sono stato impegnato (tra le altre cose :-)) su un progetto piuttosto articolato basato su SharePoint 2007, che per la maggior parte ha comportato l'utilizzo piuttosto massiccio di InfoPath 2007 e Forms Services.
E' sempre interessante utilizzare un prodotto in scenari complessi, magari dovendolo spremere o dovendo aggirare qualche limitazione. E questo è a maggior ragione fondamentale quando il discorso verte sulle "performance".
A questo proposito vi segnalo questo interessante articolo su MSDN, che prende in esame i diversi aspetti critici e propone linee guida e soluzioni per ridurre il decadimento prestazionale all'aumentare della complessità della soluzione.
Vi porto un caso reale in cui la criticità è saltata fuori in modo dirompente ed è stata risolta ... beh ... by design :-)
InfoPath non ama svisceratamente una vista con 20 DropDownList piene zeppe di elementi.
Non voglio discutere sull'usabilità di una soluzione del genere, la pongo semplicemente come postulato: 20 ddl piene di item.
Il rallentamento in alcuni casi è più che visibile, diciamo piuttosto drammatico. Se vogliamo, supera quella soglia sottile che sta fra il "è un po' lento, ma si sopravvive" e il "è troppo lento, non va bene".
In questo caso, parte della pesantezza è determinata dal rendering che il browser effettua per i controlli html SELECT.
Uovo di colombo ? Cambiamo browser !!
Prima di sparare sul pianista (ehm ... sull'autore) vi dico che, passando da IE6 a IE7, i tempi si sono ridotti del 300% circa.
Perchè ?
In IE7 il tag SELECT è renderizzato (per default, l'impostazione può essere modificata a livello di registry) come controllo intrinseco del browser, piuttosto che come wrapper alla ComboBox dei Common Controls di Windows. Con un bel boost di performance, oltre ad altri miglioramenti in questo caso non rilevanti (qui un post sul blog di IETeam).
Ovviamente la cosa risulta applicabile nel momento in cui l'utilizzo della soluzione in questione è limitato ad una intranet, in cui si ha il controllo del browser installato sui client (e l'upgrade a IE7 va ovviamente fatto a prescindere da questo).