Spesso, leggendo i newsgroups vedo che c'è una diffusa
confusione sull'argomento UserControls e WebControls, non tanto in merito alla
creazione dell'uno o dell'altro, ma soprattutto nell'utilizzo che hanno le due
tipologie di controlli.
E' mia abitudine considerare in modo sostanzialmente diverso
gli UserControl dai WebControl, e nel distinguerli ho adottato la seguente
logica:
1) Lo UserControl è alla stessa stregua di una pagina. Questo
non implica esclusivamente che vada "editato" in modo analogo, ma che esso possa
fare accessi al database "diretti", ovvero senza dover esporre una proprietà
datasource e acquisire i dati da visualizzare dalla pagina che lo contiene. Per
questioni di prestazioni poi uso esporre nella pagina un oggetto
"ConnectionManager" che mi consente di condividere la medesima connessione tra
la pagina e lo UserControl contenuto.
2) Il WebControl, invece è una porzione di codice
"completamente riutilizzabile". In soldoni, mentre la "riutilizzabilità" di uno
UserControl ha uno scope di Applicazione, quello di un WebControl ha uno
scope che esula dal dominio di una singola applicazione e non può
essere diversamente perchè il riutilizzo in un'altra applicazione di uno
UserControl ne comporta la duplicazione. Quindi i WebControls che sfrutto
per mostrare dati adottano il consueto meccanismo di DataSource
e DataBind().
Con questo criterio di lavoro mi sono sempre trovato bene e
diventa immediatamente chiaro cosa si deve usare quando ci si trova
nell'impasse. Si tratta di una mia assunzione e pertanto potrebbe essere
soggetta a critiche, ma spero ceh qualcuno ne possa trovare
beneficio.