Partager via


Références d'objet

L’exemple ObjectReferences montre comment transmettre des objets par référence entre le serveur et un client. Il utilise des réseaux sociaux simulés. Un réseau social se compose d'une classe Person qui contient une liste d'amis dans laquelle chaque ami est une instance de la classe Person, contenant sa propre liste d'amis. Tous ces éléments constituent un graphique d'objets. Le service expose les opérations sur ces réseaux sociaux.

Dans cet exemple, le client est une application de console (.exe) et le service est hébergé par les services IIS (Internet Information Services).

Notes

La procédure d'installation ainsi que les instructions de génération relatives à cet exemple figurent à la fin de cette rubrique.

Service

L'attribut Person est appliqué à la classe DataContractAttribute et la valeur IsReference est affectée au champ true pour le déclarer en tant que type de référence. L'attribut DataMemberAttribute. est appliqué à toutes les propriétés.

[DataContract(IsReference=true)]
public class Person
{
    string name;
    string location;
    string gender;
    int age;
    List<Person> friends;
    [DataMember()]
    public string Name
    {
        get { return name; }
        set { name = value; }
    }
    [DataMember()]
    public string Location
    {
        get { return location; }
        set { location = value; }
    }
    [DataMember()]
    public string Gender
    {
        get { return gender; }
        set { gender = value; }
    }
…
}

L'opération GetPeopleInNetwork prend un paramètre du type Person et retourne toutes les personnes du réseau, c'est-à-dire toutes les personnes de la liste friends, les amis des amis, etc., sans doublons.

public List<Person> GetPeopleInNetwork(Person p)
{
    List<Person> people = new List<Person>();
    ListPeopleInNetwork(p, people);
    return people;

}

L'opération GetMutualFriends prend un paramètre du type Person et retourne tous les amis de la liste qui comportent également cette personne dans leur liste friends.

public List<Person> GetMutualFriends(Person p)
{
    List<Person> mutual = new List<Person>();
    foreach (Person friend in p.Friends)
    {
        if (friend.Friends.Contains(p))
            mutual.Add(friend);
    }
    return mutual;
}

L'opération GetCommonFriends prend une liste du type Person. Cette liste doit normalement contenir deux objets Person. L'opération retourne la liste des objets Person qui se trouvent dans les listes friends des deux objets Person de la liste d'entrée.

public List<Person> GetCommonFriends(List<Person> people)
{
    List<Person> common = new List<Person>();
    foreach (Person friend in people[0].Friends)
        if (people[1].Friends.Contains(friend))
            common.Add(friend);
    return common;
}

Client

Le proxy client est créé à l’aide de la fonctionnalité Ajouter une référence de service de Visual Studio.

Un réseau social qui se compose de cinq objets Person est créé. Le client appelle chacune des trois méthodes dans le service.

Pour configurer, générer et exécuter l'exemple

  1. Assurez-vous d’avoir effectué la Procédure d’installation unique pour les exemples Windows Communication Foundation.

  2. Pour générer l’édition C# ou Visual Basic .NET de la solution, conformez-vous aux instructions figurant dans Building the Windows Communication Foundation Samples.

  3. Pour exécuter l’exemple dans une configuration à un ou plusieurs ordinateurs, conformez-vous aux instructions figurant dans la rubrique Exécution des exemples Windows Communication Foundation.

Voir aussi