Partager via


Vue d'ensemble des connexions des WebParts

Mise à jour : novembre 2007

Le jeu de contrôles WebPart vous permet de créer des connexions entre contrôles serveur, afin que la valeur et l'utilité globales des contrôles connectés dépassent celles de contrôles individuels et non connectés. Un jeu complet et intégré de composants de connexion est fourni, afin qu'avec un nombre minime d'étapes, quelques lignes de code, et nulle nécessité de gérer la complexité sous-jacente et la synchronisation des données, vous puissiez équiper les contrôles WebPart existants (serveur ou utilisateur) pour établir des connexions. Une fois les contrôles activés pour les connexions, vous pouvez créer des connexions dynamiques et programmatiques entre les contrôles au moment de l'exécution, aussi bien que des connexions statiques et prédéfinies déclarées dans le balisage d'une page Web. Vous pouvez également fournir aux utilisateurs une interface utilisateur qui leur permet de connecter ou de déconnecter les contrôles au moment de l'exécution, et de gérer les connexions existantes.

Les connexions offrent des avantages pour les utilisateurs et les développeurs. Avec les connexions, les utilisateurs peuvent rechercher de nouvelles façons de consulter leurs données de manière significative. Imaginons que vous génériez une application dans laquelle un contrôle serveur contacte un service Web, retourne l'historique des températures quotidiennes moyennes pour un état et affiche les données sous forme de tableau. Si un utilisateur souhaite disposer de souplesse pour consulter ces données de différentes façons, le contrôle serveur peut être connecté à un contrôle graphique à même d'exploiter les données d'un tableau et de les afficher sous forme de différents graphiques. Le choix peut même être proposé à l'utilisateur d'afficher les données dans un tableau ou de connecter les données sur les températures au contrôle graphique. Avec ces nouvelles vues des données, les utilisateurs peuvent remarquer de nouvelles tendances et relations dans les températures, qui étaient plus dures à détecter avec les données disposées sous forme de tableau.

En utilisant les connexions, les développeurs peuvent découvrir de nouvelles possibilités de réutilisation du code et d'association de fonctionnalités de contrôles isolés. Imaginons qu'un développeur crée un contrôle qui enregistre les informations sur l'adresse de l'utilisateur, code postal inclus, et que celles-ci sont toujours disponibles pour remplir le formulaire de l'adresse de livraison quand l'utilisateur passe une commande. Puis, le développeur ajoute d'autres contrôles qui dépendent d'un code postal spécifique, comme les contrôles permettant d'afficher les informations météo et les titres des nouvelles dans la zone de l'utilisateur, aussi bien qu'un contrôle qui recherche les entreprises par catégorie en fonction d'un code postal donné. Au lieu de concevoir chaque nouveau contrôle avec la même fonctionnalité d'enregistrement du code postal, le développeur peut concevoir chaque contrôle de façon à demander la saisie d'un code postal. Puis, le développeur peut simplement connecter le contrôle qui enregistre déjà le code postal aux contrôles qui affichent la météo, les nouvelles et les entreprises et qui prennent un code postal comme entrée. Chaque connexion étend l'utilité du contrôle d'origine et élimine la redondance dans le code des nouveaux contrôles.

Concepts de connexions

Une connexion WebPart représente un lien ou une association entre deux contrôles serveur qui leur permettent de partager des données. Une connexion nécessite toujours deux contrôles : l'un est le fournisseur de données, et l'autre est le consommateur des données du fournisseur. Un contrôle peut être à la fois consommateur et fournisseur, et tout type de contrôle serveur, qu'il s'agisse d'un contrôle WebPart, d'un contrôle personnalisé ou d'un contrôle utilisateur, peut être conçu pour prendre part aux connexions. Par défaut, un contrôle fournisseur peut établir des connexions simultanées avec plusieurs consommateurs (comme dans l'exemple précédent où le contrôle fournit le code postal au contrôle des informations météo, au contrôle des titres de l'actualité et au contrôle d'affichage des entreprises). Par défaut, un contrôle consommateur ne peut se connecter qu'à un seul fournisseur à la fois.

Les connexions ont toujours lieu dans le contexte d'une application WebPart, ce qui signifie qu'au minimum, outre les deux contrôles serveur participant à la connexion, la page Web requiert deux contrôles supplémentaires. L'un d'eux est le contrôle WebPartManager, qui est présent sur chaque page contenant des contrôles WebPart. La seconde contrôle obligatoire est une zone qui hérite de la classe WebPartZoneBase, comme le contrôle WebPartZone. Les deux contrôles serveur, pour former une connexion, doivent résider dans un type de zone WebPartZoneBase.

Dans une relation de connexion, le consommateur et le fournisseur possèdent chacun au moins un objet associé, appelé point de connexion. Selon la classe ConnectionPoint, un point de connexion contient les détails nécessaires pour qu'un contrôle serveur se connecte à un autre contrôle, comme le type du contrôle lui-même, le type de données que le contrôle reconnaît, un ID pour l'objet de point de connexion et l'information selon laquelle le contrôle peut former plusieurs connexions. Un contrôle serveur peut avoir plusieurs points de connexion. Les points de connexion d'un fournisseur sont définis par les instances de la classe ProviderConnectionPoint, et ceux du consommateur par les instances de la classe ConsumerConnectionPoint.

Pour former une connexion, le consommateur et fournisseur doivent tous deux reconnaître le même type des données, lequel dans les connexions WebPart est transmis au moyen d'une instance d'interface. Le type des données qu'un contrôle reconnaît est spécifié dans le point de connexion associé du contrôle, dans la propriété InterfaceType. Si le fournisseur et le consommateur reconnaissent le même type de données, ils sont compatibles. Si un fournisseur et un consommateur sont incompatibles, un développeur doit utiliser un objet Transformer spécial pour traduire les données du fournisseur dans un formulaire que le consommateur peut utiliser. Cet objet Transformer hérite de la classe WebPartTransformer de base, et un développeur peut hériter de la classe de base pour développer un Transformer personnalisé ou utiliser l'un des objets Transformer fournis (RowToFieldTransformer ou RowToParametersTransformer).

Après qu'une connexion a été créée, elle est contenue dans un objet WebPartConnection. L'objet de connexion encapsule tous les détails à propos d'une connexion, y compris les références à ses objets consommateur et fournisseur, les ID du consommateur et fournisseur, les références à tous les points de connexion et à leurs ID, les références à tous les objets Transformer associés à la connexion, et les informations détaillées sur l'état de la connexion (si elle est active ou non, par exemple, ou si elle est statique ou dynamique).

Vous pouvez fournir aux utilisateurs le moyen de créer et de gérer les connexions à l'aide du contrôle ConnectionsZone. Vous pouvez déclarer un élément <asp:connectionszone> sur une page Web, qui fournit une interface utilisateur à l'exécution leur permettant de connecter ou de déconnecter des contrôles, et de configurer certains détails de la connexion.

Fonctionnement des connexions

Les connexions de WebParts sont basées sur un modèle « d'extraction » de connectivité, dans lequel le consommateur obtient des données du fournisseur. Pour créer une connexion, un contrôle faisant office de fournisseur de données définit un contrat de communication qui spécifie les données qu'il peut fournir. Un autre contrôle, qui joue le rôle de consommateur et qui a pris connaissance du contrat de communication, récupère ces données.

Le mécanisme pour établir une connexion est une méthode de rappel spéciale : un chez le consommateur et un chez le fournisseur. Toutefois, le jeu de contrôles WebPart gérant la totalité des détails de rappel et de communication, les étapes requises pour les développeurs sont minimes. En tant que développeur, si vous souhaitez utiliser l'approche la plus simple, tout ce que vous avez à faire est de sélectionner chez le fournisseur une méthode à utiliser comme méthode de rappel et de la marquer dans le code source avec un attribut ConnectionProvider. Puis, dans cette méthode, retournez l'instance d'interface qui contient les données à passer au consommateur. L'instance d'interface peut être très simple (par exemple, une seule propriété contenant une valeur de chaîne comme un code postal). Un fournisseur peut implémenter l'une des interfaces fournies (IWebPartField, IWebPartRow ou IWebPartTable), mais, dans la plupart des cas, il est préférable de créer une simple interface personnalisée avec une ou plusieurs propriétés ou méthodes contenant les données que vous souhaitez partager avec un consommateur, et d'implémenter cette interface dans le fournisseur. La méthode de rappel du consommateur récupère l'instance de l'interface du fournisseur. Encore une fois, le développeur doit simplement identifier la méthode du consommateur (à l'aide d'un attribut ConnectionConsumer) qui va récupérer l'instance d'interface et l'assigner à une variable interne à des fins de traitement et de restitution. Notez que les données du fournisseur étant passées pendant la phase de pré-rendu de la page et de contrôle de cycle, vous devez prévoir de traiter les données et de mettre à jour la logique du consommateur, une fois le pré-rendu terminé.

Remarque :

Comme mentionné précédemment, le consommateur et le fournisseur doivent être compatibles quant au type d'interface, ou autrement, ils doivent utiliser un objet WebPartTransformer pour établir la connexion.

Les pipelines à travers lesquels les données sont échangées sont les points de connexion du consommateur et du fournisseur. Vous pouvez créer le point de connexion d'un contrôle de plusieurs façons. Comme mentionné dans le paragraphe précédent, vous pouvez utiliser les classes ConnectionConsumerAttribute ou ConnectionProviderAttribute, chacune créant automatiquement un point de connexion. Dans cette approche, vous pouvez ajouter un attribut ConnectionConsumer à la méthode de rappel du consommateur dans le code source, et de la même façon ajouter un attribut ConnectionProvider à la méthode de rappel du fournisseur. Cela identifie les méthodes de rappel respectives et vous permet de spécifier certains détails sur le point de connexion, comme l'ID et le nom complet (lequel apparaît dans l'interface utilisateur pour que les utilisateurs puissent former des connexions). Une autre solution consiste à créer un point de connexion personnalisé en héritant de ConnectionPoint, ou à utiliser ou à hériter des classes ConsumerConnectionPoint ou ProviderConnectionPoint. Comme noté précédemment, un contrôle agissant comme consommateur ou comme fournisseur peut avoir plusieurs points de connexion.

Une connexion entre contrôles peut être statique ou dynamique. Les connexions statiques sont codées de façon déclarative dans la page d'hébergement et sont créées pendant la phase de pré-restitution de la page. Cela garantit que la connexion est active lorsqu'un utilisateur consulte la page. Pour obtenir un exemple, consultez Comment : déclarer une connexion statique entre deux contrôles WebPart. Les connexions dynamiques peuvent être créées par programme dans le code du contrôle ou de façon déclarative sur la page d'hébergement. Si vous déclarez deux contrôles serveur compatibles dans une zone WebPartZoneBase d'une page Web, et déclarez une instance du contrôle ConnectionsZone sur la page, les utilisateurs peuvent créer et configurer une connexion dynamique entre les contrôles au moment de l'exécution.

Connexions de WebParts et autres fonctionnalités ASP.NET

Les connexions contrastent de plusieurs façons avec les autres techniques ASP.NET de transfert d'informations entre des contrôles dans une application Web :

  • Les connexions sont une fonctionnalité de WebParts. Vous pouvez uniquement vous connecter aux contrôles conçus pour les connexions WebPart et qui résident dans une zone WebPartZoneBase.

    Remarque :

    Comme noté précédemment, tout contrôle serveur ASP.NET, contrôle personnalisé ou contrôle utilisateur peut être utilisé comme contrôle WebPart pour tirer parti des connexions.

  • Les connexions sont différentes de la liaison de données. Les connexions entre des contrôles dans une zone WebPart utilisent une interface pour créer un contrat entre les contrôles. La liaison de données représente une connexion entre un contrôle et un périphérique de stockage ou une base de données principale. Les connexions WebPart ne déplacent les données qu'entre les contrôles d'une page.

  • Les connexions peuvent être personnalisées. Les paramètres de connexion qui indiquent quels contrôles sont connectés peuvent être stockés sans risque avec les autres données de personnalisation. Pour plus d'informations sur la personnalisation, consultez Vue d'ensemble de la personnalisation des WebParts.

Classes de connexions essentielles

Le tableau suivant présente trois composants dans le jeu de contrôles WebPart qui sont essentiels aux connexions et que vous utilisez directement ou indirectement lorsque vous utilisez des connexions.

Contrôle WebPart

Description

WebPartManager

Gère toutes les connexions entre des contrôles dans la zone WebPart d'une page. Un (et un seul) contrôle WebPartManager est requis pour chaque page WebPart.

WebPartZoneBase

WebPartZone

La classe de base WebPartZoneBase fournit le contexte requis dans lequel les contrôles serveur peuvent se connecter et échanger des données. Vous pouvez hériter de la classe de base pour créer une zone personnalisée ou utiliser le contrôle WebPartZone comme zone réelle pour contenir les contrôles serveur impliqués dans une connexion.

WebPartConnection

Représente une connexion, avec les références au fournisseur et au consommateur, et tous les autres composants requis d'une connexion.

ConnectionPoint

ProviderConnectionPoint

ConsumerConnectionPoint

La classe de base ConnectionPoint définit un objet qui est associé à un consommateur ou à un fournisseur et contient les détails nécessaires pour échanger des données. L'objet ProviderConnectionPoint est associé au fournisseur, et l'objet ConsumerConnectionPoint au consommateur.

ConnectionsZone

Fournit une interface utilisateur qui permet aux utilisateurs de créer lors de l'exécution des connexions dynamiques entre des contrôles serveur.

Voir aussi

Tâches

Comment : déclarer une connexion statique entre deux contrôles WebPart

Concepts

Vue d'ensemble des WebParts ASP.NET

Référence

WebPartConnection

ConnectionPoint

Vue d'ensemble de jeu de composants WebPart