Aracılığıyla paylaş


Nesne Referansları

ObjectReferences örneği, sunucu ve istemci arasında nesneleri referanslarla nasıl ileteceğinizi gösterir. Örnek, sanal sosyal ağları kullanır. Sosyal ağ, her biri kendi arkadaş listesine sahip olan Person sınıfının bir örneği olan arkadaşlardan oluşan bir arkadaş listesi içeren Person sınıfından oluşur. Bu, nesnelerin grafiğini oluşturur. Hizmet, bu sosyal ağlardaki işlemleri kullanıma sunar.

Bu örnekte, hizmet Internet Information Services (IIS) tarafından barındırılır ve istemci bir konsol uygulamasıdır (.exe).

Uyarı

Bu örnek için kurulum yordamı ve derleme yönergeleri bu konunun sonunda yer alır.

Hizmet

Person sınıfına, başvuru türü olarak bildirmek için DataContractAttribute özniteliği uygulanmış ve IsReference olarak ayarlanan true alanı eklenmiştir. Tüm özelliklerde DataMemberAttribute özniteliği uygulanır.

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

İşlem, GetPeopleInNetwork türündeki bir Person parametresini alır ve ağdaki, yani friends listesindeki tüm kişileri, arkadaşların arkadaşlarını ve benzerlerini, yinelenenler olmadan döndürür.

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

}

İşlem GetMutualFriends türünde Person bir parametre alır ve listedeki bu kişiyi de listelerinde friends olan tüm arkadaşları döndürür.

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

İşlem GetCommonFriends, Person türünde bir liste alır. Listede iki Person nesne olması beklenir. İşlem, giriş listesindeki Person her iki friends nesnenin Person listesinde yer alan nesnelerin listesini döndürür.

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

Müşteri

İstemci proxy'si, Visual Studio'nun Hizmet Başvurusu Ekle özelliği kullanılarak oluşturulur.

Beş Person nesneden oluşan bir sosyal ağ oluşturulur. İstemci, hizmetteki üç yöntemin her birini çağırır.

Örneği ayarlamak, derlemek ve çalıştırmak için

  1. Windows Communication Foundation Örnekleri içinOne-Time Kurulum Yordamını yaptığınızdan emin olun.

  2. Çözümün C# veya Visual Basic .NET sürümünü oluşturmak için Windows Communication Foundation Örneklerioluşturma başlığındaki yönergeleri izleyin.

  3. Örneği tek bir makine veya makineler arası bir yapılandırmada çalıştırmak için, Windows Communication Foundation örneklerini çalıştırmayönergelerini izleyin.

Ayrıca bakınız