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.

powered by IMHO 1.2