Freigeben über


Objektverweise

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

  1. Stellen Sie sicher, dass Sie das One-Time Setup-Verfahren für die Windows Communication Foundation-Beispieleausgeführt haben.

  2. Um die C#- oder Visual Basic .NET-Edition der Lösung zu erstellen, befolgen Sie die Anweisungen in Building the Windows Communication Foundation Samples.

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

Siehe auch