Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
L’exemple ObjectReferences montre comment passer des objets par références entre le serveur et le client. L’exemple utilise des réseaux sociaux simulés. Un réseau social se compose d’une Person classe qui contient une liste d’amis dans laquelle chaque ami est une instance de la Person classe, avec sa propre liste d’amis. Cela crée un graphique d’objets. Le service expose les opérations sur ces réseaux sociaux.
Dans cet exemple, le service est hébergé par Internet Information Services (IIS) et le client est une application console (.exe).
Remarque
La procédure d’installation et les instructions de génération de cet exemple se trouvent à la fin de cette rubrique.
Service
La classe Person a l'attribut DataContractAttribute appliqué, avec le champ IsReference défini à true pour le déclarer comme type de référence. Toutes les propriétés ont l’attribut DataMemberAttribute appliqué.
[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 de type Person et retourne toutes les personnes du réseau ; autrement dit, toutes les personnes de la friends liste, les amis de l’ami, et ainsi de suite, 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 de type Person et retourne tous les amis de la liste qui ont également cette personne dans leur friends liste.
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 de type Person. La liste doit contenir deux Person objets. L’opération retourne une liste d’objets Person qui se trouvent dans les friends listes des deux Person objets 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 constitué de cinq Person objets est créé. Le client appelle chacune des trois méthodes du service.
Pour configurer, générer et exécuter l’exemple
Assurez-vous d’avoir effectué la Procédure d’installation unique pour les exemples Windows Communication Foundation.
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.
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.