Delen via


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

  1. Zorg ervoor dat u de eenmalige installatieprocedure voor de Windows Communication Foundation-voorbeelden hebt uitgevoerd.

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

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

Zie ook