Mise en œuvre de la communication entre Web Parts dans ASP.NET

L'échange de données entre composants Web Part repose sur un modèle de type "Fournisseur-Consommateur". Prenons l'exemple d'un système où un premier composant permet de saisir un identifiant d'employé (le Fournisseur) et un second affiche l'historique des transactions liées (le Consommateur). Ce mécanisme repose sur cinq piliers techniques essentiels au sein du framework ASP.NET.

1. Définition du contrat de communication

La première étape consiste à établir une interface qui servira de contrat entre les deux composants. Cette interface définit les données qui seront transmises. Pour un échange simple portant sur un identifiant numérique, une propriété unique suffit.

public interface IStaffContract
{
    int StaffId { get; set; }
}

2. Implémentation de l'interface par le Fournisseur

Le Web Part agissant comme source de données doit hériter de la classe de base WebPart et implémenter l'interface définie précédemment. C'est ici que la valeur interne est stockée et exposée.

public class StaffSourcePart : WebPart, IStaffContract
{
    private int _currentId = 0;

    public int StaffId
    {
        get { return _currentId; }
        set { _currentId = value; }
    }
}

3. Exposition du point de connexion (Provider)

Pour que le WebPartManager identifie la source de données, il faut marquer une méthode spécifique avec l'attribut [ConnectionProvider]. Cette méthode doit retourenr une instance de l'interface de communication.

[ConnectionProvider("Staff Provider", "StaffProviderID")]
public IStaffContract ExportStaffData()
{
    return this;
}

4. Réception des données par le Consommateur (Consumer)

Le composant de destination doit posséder une méthode décorée de l'attribut [ConnectionConsumer]. Cette méthode reçoit l'interface en paramètre, permettant ainsi d'extraire les données envoyées par le fournisseur pour les traiter localement.

[ConnectionConsumer("Staff Consumer", "StaffConsumerID")]
public void ReceiveStaffData(IStaffContract contract)
{
    if (contract != null)
    {
        int idToProcess = contract.StaffId;
        // Logique de récupération des données métier ici
    }
    else
    {
        throw new InvalidOperationException("Connexion impossible au fournisseur.");
    }
}

5. Configuration de la liaison via le WebPartManager

Pour établir une connexion statique permanante entre les deux composants, la configuration s'effectue dans le balisage ASPX via l'élément <StaticConnections>. On y précise les identifiants des composants et de leurs points de connexion respectifs.

<asp:WebPartManager ID="WPManager" runat="server">
    <StaticConnections>
        <asp:WebPartConnection 
            ID="StaffLink" 
            ProviderID="StaffSourcePart1" 
            ProviderConnectionPointID="StaffProviderID" 
            ConsumerID="OrderDisplayPart1" 
            ConsumerConnectionPointID="StaffConsumerID" />
    </StaticConnections>
</asp:WebPartManager>

Dans les cas où l'utilisateur doit pouvoir configurer lui-même ses liaisons dynamiquement à l'exécution, l'utilisation du contrôle ConnectionsZone est privilégiée pour offrir une interface visuelle de gestion des connexions.

Étiquettes: ASP.NET WebParts C# WebPartManager Interface-Programming

Publié le 12 octobre à 02h31