Bagikan melalui


Referensi Objek

Sampel ObjectReferences menunjukkan cara meneruskan objek berdasarkan referensi antara server dan klien. Sampel menggunakan jejaring sosial yang disimulasikan. Jejaring sosial terdiri dari kelas Person yang berisi daftar teman di mana setiap teman adalah instans kelas Person, dengan daftar temannya sendiri. Ini membuat grafik objek. Layanan ini mengekspos operasi di jejaring sosial ini.

Dalam sampel ini, layanan dihosting oleh Layanan Informasi Internet (IIS) dan klien adalah aplikasi konsol (.exe).

Catatan

Prosedur penyiapan dan petunjuk pembuatan untuk sampel ini terdapat di akhir topik ini.

Layanan

Kelas Person memiliki atribut DataContractAttribute yang diterapkan, dengan bidang IsReference diatur ke true untuk mendeklarasikannya sebagai jenis referensi. Semua properti memiliki atribut DataMemberAttribute yang diterapkan.

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

Operasi GetPeopleInNetwork ini mengambil parameter jenis Person dan mengembalikan semua orang dalam jaringan; yaitu, semua orang dalam daftar friends, teman dari teman, dan sebagainya, tanpa duplikat.

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

}

Operasi GetMutualFriends ini mengambil parameter jenis Person dan mengembalikan semua teman dalam daftar yang juga memiliki orang ini dalam daftar friends mereka.

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

Operasi GetCommonFriends ini mengambil daftar jenis Person. Daftar ini diharapkan memiliki dua objek Person di dalamnya. Operasi mengembalikan daftar objek Person yang ada dalam daftar friends kedua objek Person dalam daftar input.

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

Klien

Proksi klien dibuat menggunakan fitur Tambahkan Referensi Layanan Visual Studio.

Jejaring sosial yang terdiri dari lima objek Person dibuat. Klien memanggil masing-masing dari tiga metode dalam layanan.

Untuk menyiapkan, membangun, dan menjalankan sampel

  1. Pastikan Anda telah melakukan Prosedur Penyiapan Satu Kali untuk Sampel Windows Communication Foundation.

  2. Untuk membangun solusi edisi C# atau Visual Basic .NET, ikuti petunjuknya di Membangun Sampel WCF.

  3. Untuk menjalankan sampel dalam konfigurasi satu atau lintas komputer, ikuti instruksi pada Menjalankan Sampel WCF.

Lihat juga