Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Das ObjectReferences-Beispiel veranschaulicht, wie Objekte per Referenz zwischen Server und Client übergeben werden können. Im Beispiel werden simulierte soziale Netzwerke verwendet. Ein soziales Netzwerk besteht aus einem Person
Kurs, der eine Liste von Freunden enthält, in denen jeder Freund eine Instanz des Person
Kurses mit einer eigenen Liste von Freunden ist. Dadurch wird ein Diagramm von Objekten erstellt. Der Dienst macht Vorgänge in diesen sozialen Netzwerken verfügbar.
In diesem Beispiel wird der Dienst von Internetinformationsdienste (INTERNET Information Services, IIS) gehostet, und der Client ist eine Konsolenanwendung (.exe).
Hinweis
Die Einrichtungsverfahren und Build-Anweisungen für dieses Beispiel befinden sich am Ende dieses Themas.
Dienstleistung
Die Person
Klasse hat das DataContractAttribute Attribut angewendet, wobei das IsReference Feld auf true
gesetzt ist, um es als Verweistyp zu deklarieren. Alle Eigenschaften haben das DataMemberAttribute Attribut angewendet.
[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; }
}
…
}
Der GetPeopleInNetwork
Vorgang verwendet einen Parameter vom Typ Person
und gibt alle Personen im Netzwerk zurück, d. h. alle Personen in der friends
Liste, die Freunde des Freundes usw. ohne Duplikate.
public List<Person> GetPeopleInNetwork(Person p)
{
List<Person> people = new List<Person>();
ListPeopleInNetwork(p, people);
return people;
}
Der GetMutualFriends
Vorgang verwendet einen Parameter vom Typ Person
und gibt alle Freunde in der Liste zurück, die diese Person ebenfalls in ihrer friends
Liste haben.
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;
}
Der GetCommonFriends
Vorgang verwendet eine Liste vom Typ Person
. Es wird erwartet, dass die Liste zwei Person
Objekte enthält. Der Vorgang gibt eine Liste von Person
Objekten zurück, die sich in den friends
Listen beider Person
Objekte in der Eingabeliste befinden.
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;
}
Kunde
Der Clientproxy wird mithilfe des Features " Dienstreferenz hinzufügen " von Visual Studio erstellt.
Ein soziales Netzwerk, das aus fünf Person
Objekten besteht, wird erstellt. Der Client ruft jede der drei Methoden im Dienst auf.
So können Sie das Beispiel einrichten, erstellen und ausführen
Stellen Sie sicher, dass Sie das One-Time Setup-Verfahren für die Windows Communication Foundation-Beispieleausgeführt haben.
Um die C#- oder Visual Basic .NET-Edition der Lösung zu erstellen, befolgen Sie die Anweisungen in Building the Windows Communication Foundation Samples.
Wenn Sie das Beispiel in einer Konfiguration mit einem Computer oder über Computer hinweg ausführen möchten, folgen Sie den Anweisungen unter Durchführen der Windows Communication Foundation-Beispiele.