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 hostovaná službou Internetová informační služba (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 PersonDataContractAttribute použitý atribut s IsReference polem nastaveným tak, aby true ho deklaroval jako typ odkazu. Všechny vlastnosti mají DataMemberAttribute použitý atribut.

[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á všechny tři metody ve službě.

Nastavení, sestavení a spuštění ukázky

  1. Ujistěte se, že jste pro ukázky windows Communication Foundation provedli jednorázovou instalační proceduru.

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

  3. Pokud chcete spustit ukázku v konfiguraci s jedním nebo více počítači, postupujte podle pokynů v části Spuštění ukázek windows Communication Foundation.

Viz také