Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
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
Ujistěte se, že jste provedli instalační proceduru One-Time pro ukázky Windows Communication Foundation.
Pokud chcete sestavit verzi C# nebo Visual Basic .NET řešení, postupujte podle pokynů v Sestavení ukázek Windows Communication Foundation.
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.