Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
L'esempio ObjectReferences illustra come passare oggetti in base ai riferimenti tra server e client. L'esempio usa reti sociali simulate. Un social network è costituito da una Person classe che contiene un elenco di amici in cui ogni amico è un'istanza della Person classe, con la propria lista di amici. In questo modo viene creato un grafico di oggetti . Il servizio espone le operazioni su questi social network.
In questo esempio il servizio è ospitato da Internet Information Services (IIS) e il client è un'applicazione console (.exe).
Annotazioni
La procedura di installazione e le istruzioni di compilazione per questo esempio si trovano alla fine di questo argomento.
Servizio
La Person classe ha l'attributo DataContractAttribute applicato, con il IsReference campo impostato su per true dichiararlo come tipo riferimento. A tutte le proprietà è applicato l'attributo DataMemberAttribute .
[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'operazione GetPeopleInNetwork accetta un parametro di tipo Person e restituisce tutte le persone della rete, ovvero tutte le persone nell'elenco friends , gli amici dell'amico e così via, senza duplicati.
public List<Person> GetPeopleInNetwork(Person p)
{
List<Person> people = new List<Person>();
ListPeopleInNetwork(p, people);
return people;
}
L'operazione GetMutualFriends accetta un parametro di tipo Person e restituisce tutti gli amici nell'elenco che hanno anche questa persona nell'elenco 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'operazione GetCommonFriends accetta un elenco di tipo Person. L'elenco dovrebbe contenere due Person oggetti. L'operazione restituisce un elenco di Person oggetti inclusi negli friends elenchi di entrambi gli oggetti Person nell'elenco di input.
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;
}
Cliente
Il proxy client viene creato usando la funzionalità Aggiungi riferimento al servizio di Visual Studio.
Viene creato un social network costituito da cinque Person oggetti. Il client chiama ognuno dei tre metodi nel servizio.
Per configurare, compilare ed eseguire l'esempio
Assicurati di aver eseguito la procedura di installazione di One-Time per gli esempi di Windows Communication Foundation.
Per compilare l'edizione C# o Visual Basic .NET della soluzione, seguire le istruzioni in Compilazione degli esempi di Windows Communication Foundation.
Per eseguire l'esempio in una configurazione con computer singolo o incrociato, seguire le istruzioni riportate in Esecuzione degli esempi di Windows Communication Foundation.