Objectverwijzingen
In het voorbeeld ObjectReferences ziet u hoe u objecten doorgeeft aan verwijzingen tussen server en client. In het voorbeeld worden gesimuleerde sociale netwerken gebruikt. Een sociaal netwerk bestaat uit een Person
klas die een lijst met vrienden bevat waarin elke vriend een instantie van de Person
klas is, met een eigen lijst met vrienden. Hiermee maakt u een grafiek met objecten. De service maakt bewerkingen beschikbaar op deze sociale netwerken.
In dit voorbeeld wordt de service gehost door Internet Information Services (IIS) en is de client een consoletoepassing (.exe).
Notitie
De installatieprocedure en build-instructies voor dit voorbeeld bevinden zich aan het einde van dit onderwerp.
Service
De Person
klasse heeft het DataContractAttribute kenmerk toegepast, waarbij het IsReference veld is ingesteld om het als referentietype te true
declareren. Alle eigenschappen hebben het DataMemberAttribute kenmerk toegepast.
[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; }
}
…
}
De GetPeopleInNetwork
bewerking heeft een parameter van het type Person
en retourneert alle personen in het netwerk, dat wil gezegd, alle personen in de friends
lijst, de vrienden van de vriend, enzovoort, zonder duplicaten.
public List<Person> GetPeopleInNetwork(Person p)
{
List<Person> people = new List<Person>();
ListPeopleInNetwork(p, people);
return people;
}
De GetMutualFriends
bewerking heeft een parameter van het type Person
en retourneert alle vrienden in de lijst die deze persoon ook in hun friends
lijst hebben.
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;
}
De GetCommonFriends
bewerking heeft een lijst van het type Person
. De lijst bevat naar verwachting twee Person
objecten. De bewerking retourneert een lijst Person
met objecten die zich in de friends
lijsten met beide Person
objecten in de invoerlijst bevinden.
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;
}
Klant
De clientproxy wordt gemaakt met behulp van de functie Servicereferentie toevoegen van Visual Studio.
Er wordt een sociaal netwerk gemaakt dat uit vijf Person
objecten bestaat. De client roept elk van de drie methoden in de service aan.
Het voorbeeld instellen, compileren en uitvoeren
Zorg ervoor dat u de eenmalige installatieprocedure voor de Windows Communication Foundation-voorbeelden hebt uitgevoerd.
Als u de C# of Visual Basic .NET-editie van de oplossing wilt bouwen, volgt u de instructies in het bouwen van de Windows Communication Foundation-voorbeelden.
Als u het voorbeeld wilt uitvoeren in een configuratie met één of meerdere computers, volgt u de instructies in Het uitvoeren van de Windows Communication Foundation-voorbeelden.