Sdílet prostřednictvím


Odkazy na objekty

Ukázka ObjectReferences ukazuje, jak předávat objekty odkazy mezi serverem a klientem. Ukázka používá simulované sociální sítě. Sociální síť se skládá ze Person třídy, která obsahuje seznam přátel, ve kterých je každý přítel instancí Person třídy, s vlastním seznamem přátel. Tím se vytvoří graf objektů. Služba zveřejňuje operace v těchto sociálních sítích.

V této ukázce je služba hostována na Internetových informačních službách (IIS) a klient je konzolová aplikace (.exe).

Poznámka:

Postup nastavení a pokyny k sestavení pro tuto ukázku najdete na konci tohoto tématu.

Služba

Třída Person má použitý atribut DataContractAttribute s polem IsReference nastaveným na true pro deklaraci jako referenční typ. Všechny vlastnosti mají přiřazený atribut 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; }
    }
…
}

Tato GetPeopleInNetwork operace přebírá parametr typu Person a vrací všechny lidi v síti. To znamená, že všichni lidé v friends seznamu, přátelé přítele atd. bez duplicit.

public List<Person> GetPeopleInNetwork(Person p)
{
    List<Person> people = new List<Person>();
    ListPeopleInNetwork(p, people);
    return people;

}

Operace GetMutualFriends přebírá parametr typu Person a vrátí všechny přátele v seznamu, kteří mají také tuto osobu v friends seznamu.

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;
}

Operace GetCommonFriends přebírá seznam typu Person. Očekává se, že seznam bude obsahovat dva Person objekty. Operace vrátí seznam Person objektů, které jsou v friends seznamech obou Person objektů ve vstupním seznamu.

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;
}

Klient

Proxy klienta se vytvoří pomocí funkce Přidat odkaz na službu sady Visual Studio.

Vytvoří se sociální síť, která se skládá z pěti Person objektů. Klient volá každou ze tří metod ve službě.

Jak nastavit, sestavit a spustit ukázku

  1. Ujistěte se, že jste provedli instalační proceduru One-Time pro ukázky Windows Communication Foundation.

  2. Pokud chcete sestavit verzi C# nebo Visual Basic .NET řešení, postupujte podle pokynů v Sestavení ukázek Windows Communication Foundation.

  3. Pokud chcete spustit ukázku v konfiguraci pro jeden počítač nebo pro více počítačů, postupujte podle pokynů v Spuštění ukázek Windows Communication Foundation.

Viz také