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
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.