Quelle est la différence entre UserControl, WebControl, RenderedControl et CompositeControl?

Quelle est la différence, quels sont les termes officiels, des termes obsolètes dans ASP.NET 3.5?

UserControl : Un contrôle personnalisé, se terminant par .ascx, composé d’autres contrôles Web. C’est presque comme une petite version d’une page Web aspx. Il se compose d’une interface utilisateur (le ascx) et d’un codebehind. Ne peut pas être réutilisé dans d’autres projets en référençant une DLL.

WebControl : Un contrôle hébergé sur une page Web ou dans un UserControl. Il consiste en une ou plusieurs classes, fonctionnant en tandem, et est hébergé sur une page aspx ou dans un UserControl. Les WebControls n’ont pas de “page” d’interface utilisateur et doivent rendre leur contenu directement. Ils peuvent être réutilisés dans d’autres applications en référençant leurs DLL.

RenderedControl : n’existe pas. Peut être synonyme de WebControl. Cela peut indiquer que le contrôle est écrit directement dans HttpResponse plutôt que dans une page aspx.

CompositeControl : Entre UserControls et WebControls. Ils codent comme UserControls, car ils sont composés d’autres contrôles. Il n’y a aucune interface graphique pour le contrôle de la composition, et la prise en charge de l’édition d’interface utilisateur de CompositeControls doit être codée par le concepteur du contrôle. La composition est effectuée dans le codebehind. CompositeControls peut être réutilisé dans d’autres projets comme WebControls.

Vous avez oublié le ServerControl.

Dans ma compréhension, c’est comme ça:

  • Il n’y a que deux types de contrôles différents: UserControl et ServerControl
  • CompositeControls sont en quelque sorte des UserControls “avancés”. Trouvez plus d’informations sur le blog de Scott Guthries .
  • Tous sont des WebControls (car ils sont tous dérivés de System.Web.UI.Control)
  • Ils sont tous rendus de quelque manière que ce soit, donc je voudrais les voir tous comme des contrôles rendus.

De MSDN:

Contrôle utilisateur

Dans ASP.NET: un contrôle serveur créé de manière déclarative à l’aide de la même syntaxe qu’une page ASP.NET et enregistré en tant que fichier texte avec une extension .ascx. Les contrôles utilisateur permettent de partitionner et de réutiliser les fonctionnalités de la page. Lors de la première demande, la structure de page parsing un contrôle utilisateur dans une classe dérivée de System.Web.UI.UserControl et comstack cette classe dans un assembly, qu’il réutilise sur les requêtes suivantes. Les contrôles utilisateur sont faciles à développer en raison de la création et du déploiement de leur style de page sans compilation préalable.

Contrôle du serveur

Un composant côté serveur qui encapsule l’interface utilisateur et les fonctionnalités associées. Un contrôle serveur ASP.NET dérive directement ou indirectement de la classe System.Web.UI.Control. Le sur-ensemble de contrôles serveur ASP.NET inclut les contrôles serveur Web, les contrôles serveur HTML et les contrôles mobiles ASP.NET. La syntaxe de page d’un contrôle serveur ASP.NET inclut un atsortingbut runat = “server” sur la balise du contrôle. Voir aussi: Contrôle du serveur HTML, contrôles du serveur de validation, contrôle du serveur Web.

Comme les formulaires Web, les contrôles utilisateur peuvent être créés dans le concepteur visuel ou peuvent être écrits avec du code distinct du code HTML. Ils peuvent également supporter des événements d’exécution. Cependant, les contrôles utilisateur Web étant compilés dynamicment au moment de l’exécution, ils ne peuvent pas être ajoutés à la boîte à outils et sont représentés par un espace réservé simple lorsqu’ils sont ajoutés à une page.

Cela rend les contrôles utilisateur Web plus difficiles à utiliser si vous êtes habitué à la prise en charge complète de la conception de Visual Studio .NET, y compris la fenêtre Propriétés et les prévisualisations en mode Création. La seule façon de partager le contrôle utilisateur entre les applications consiste à placer une copie distincte dans chaque application, ce qui nécessite plus de maintenance si vous apportez des modifications au contrôle.

Les contrôles personnalisés Web sont des codes compilés, ce qui les rend plus faciles à utiliser mais plus difficiles à créer. Les contrôles personnalisés Web doivent être créés dans le code. Une fois que vous avez créé le contrôle, vous pouvez l’append à la boîte à outils et l’afficher dans un concepteur visuel avec prise en charge complète de la fenêtre Propriétés et toutes les autres fonctionnalités de conception des contrôles serveur ASP.NET. En outre, vous pouvez installer une seule copie du contrôle personnalisé Web dans le cache de l’assembly global et la partager entre les applications, ce qui facilite la maintenance.

Contrairement à la réponse de Will, il est possible de réutiliser les UserControls dans d’autres projets en référençant un projet de déploiement Web .

Comme je n’ai pas encore assez de réputation pour commenter, j’appendai ceci comme réponse, mais cela fait référence à la réponse de Will ci-dessus.

A partir du lien que vous avez inclus:

Les contrôles composites sont l’outil idéal pour concevoir des composants complexes dans lesquels plusieurs contrôles enfants sont agrégés et interagissent entre eux et avec le monde extérieur. Les contrôles rendus sont parfaits pour l’agrégation en lecture seule des contrôles dans lesquels la sortie n’inclut pas d’éléments interactifs tels que des zones de liste déroulante ou des zones de texte.

Je crois que la documentation fait référence aux UserControls qui ont été créés en remplaçant la méthode Render par des contrôles rendus. Ainsi, ce n’est pas un type distinct, comme l’implique la question, mais un moyen d’implémenter un UserControl; un motif.