オブジェクト参照
ObjectReferences のサンプルでは、サーバーとクライアント間でオブジェクトを参照渡しする方法を示します。 このサンプルでは、シミュレートされた "ソーシャル ネットワーク" を使用します。 ソーシャル ネットワークは、友人のリストを含んでいる Person
クラスで構成され、このリストの各友人は、それぞれ独自の友人のリストを持つ Person
クラスのインスタンスです。 これにより、オブジェクトのグラフが作成されます。 このようなソーシャル ネットワークに対する操作は、サービスによって公開されます。
この例では、サービスはインターネット インフォメーション サービス (IIS) によってホストされています。クライアントはコンソール アプリケーション (.exe) です。
Note
このサンプルのセットアップ手順とビルド手順については、このトピックの最後を参照してください。
サービス
Person
クラスに DataContractAttribute 属性が適用され、参照型であることを宣言するため IsReference フィールドが true
に設定されます。 すべてのプロパティに 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; }
}
…
}
GetPeopleInNetwork
操作では、Person
型のパラメータを受け取り、ネットワーク内のすべてのユーザー (friends
リストに含まれるすべてのユーザー、友人の友人など) を重複することなく返します。
public List<Person> GetPeopleInNetwork(Person p)
{
List<Person> people = new List<Person>();
ListPeopleInNetwork(p, people);
return people;
}
GetMutualFriends
操作では、Person
型のパラメータを受け取り、自分の friends
リストにこの人物も存在するリスト内のすべての友人を返します。
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;
}
GetCommonFriends
操作では、Person
型のリストを受け取ります。 このリストには、2 つの Person
オブジェクトが存在します。 この操作では、入力リストの両方の Person
オブジェクトの friends
リスト内にある Person
オブジェクトのリストを返します。
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;
}
Client
クライアント プロキシは、Visual Studio のサービス参照の追加機能を使用して作成されます。
5 つの Person
オブジェクトで構成されるソーシャル ネットワークが作成されます。 クライアントは、サービスの 3 つのメソッドをそれぞれ呼び出します。
サンプルをセットアップ、ビルド、および実行するには
Windows Communication Foundation サンプルの 1 回限りのセットアップの手順を実行したことを確認します。
ソリューションの C# 版または Visual Basic .NET 版をビルドするには、「 Building the Windows Communication Foundation Samples」の手順に従います。
単一または複数コンピューター構成でサンプルを実行するには、「Windows Communication Foundation サンプルの実行」の手順に従います。