Business Connectivity Services クライアント キャッシュを設定する方法

最終更新日: 2009年11月2日

適用対象: SharePoint Server 2010

キャッシュでは、ID とインスタンス データはそれぞれ別の場所に格納されます。クライアントでユーザーに対してインストールされているすべてのサブスクリプションに属するすべてのエンティティ インスタンスの ID は、1 つの中央の場所に格納されます。ID、名前、住所など、サブスクリプションに含まれる各エンティティのエンティティ インスタンス データは、別の場所に格納されます。たとえば、顧客とアカウントという 2 つのサブスクリプションがあり、各サブスクリプションにはそれぞれ 10 個のエンティティ インスタンスがある場合、20 個すべての ID は、キャッシュ内の 1 つの中央の場所に格納されます。顧客サブスクリプションに属する ID、名前、住所などの顧客データは、別の場所に格納されます。アカウント データも、キャッシュ内の別の場所に格納されます。ユーザーがサブスクリプションを変更して、サブスクリプションの最初のクエリで使用される 10 個の顧客エンティティ インスタンスのうち 5 個を返すクエリを追加した場合、キャッシュは、そのエンティティ インスタンスのデータを再び複製しません。

キャッシュにサブスクリプションのデータを格納するために、BCS 同期プロセスでは外部アプリケーションに対して複数の呼び出しを行います。サブスクリプションに定義されているクエリごとに、外部アプリケーションに対して Finder 呼び出しを行います。Finder が完全なビューを返した場合、追加の呼び出しは行わず、各エンティティ インスタンスに関するデータをキャッシュに格納します。ただし、Finder が完全なビューを返さなかった場合、Finder から返された ID をキャッシュに格納します。いずれかの ID がキャッシュに既に存在する場合、その ID は複製されません。クエリによって返された ID ごとに、SpecificFinder 呼び出しを行ってクエリから返されるフィールドを取得します。

同期プロセスでは、サブスクリプションに指定されている明示的な ID の数と同じ数の SpecificFinder 呼び出しを行い、メソッド インスタンスから返されるエンティティ インスタンスをキャッシュに格納します。最後に、サブスクリプションに有効な関連付けがある場合は、関連付けられているエンティティ インスタンスをキャッシュに格納します。これを実行するために、このサブスクリプションのキャッシュに格納されているエンティティ インスタンスの数と同じ数の Associate メソッド インスタンスの呼び出しを行います。これにより、関連付けられているエンティティ インスタンスの ID が返されます。返された ID ごとに SpecificFinder を呼び出して、他のフィールドを取得します。

重要重要

サブスクリプションの関連付けを使用するのではなく、顧客用のサブスクリプションと注文用のサブスクリプションをそれぞれ 1 つずつ作成することを検討する必要があります。2 つのサブスクリプションを作成した場合、外部アプリケーションに対する呼び出しの数を少なくして、アプリケーションのスループットを向上できます。