Share via


BDC アーキテクチャ

最終更新日: 2010年4月15日

適用対象: SharePoint Server 2010

この記事の内容
BDC モデルと BDC Metadata Store
ランタイム オブジェクト モデル
Administration オブジェクト モデル
インフラストラクチャ コンポーネント
BDC コネクタとコネクタ フレームワーク
Secure Store Service と SharePoint のセキュリティ インフラストラクチャ
メタデータ キャッシュ

Business Data Connectivity (BDC) service は、Microsoft Office SharePoint Server 2007 で提供されていたビジネス データ カタログの後継機能です。このリリースでは、BDC は Microsoft SharePoint Foundation 2010 で提供されます。BDC を使用すれば、宣言的に外部システムをモデル化して、SharePoint 2010 (および Business Connectivity Services のリッチ クライアント拡張機能を使用して Microsoft Office アプリケーション) で外部データを表示できます。BDC は、さまざまな外部システムからの重要なデータを、新しい外部リスト機能と外部データ列経由で SharePoint リスト、Web パーツ、検索、ユーザー プロファイル、およびカスタム アプリケーションに取り込めるようにすることによって、SharePoint サイトと外部システムをつなぎます。

BDC は、Microsoft SharePoint Foundation 2010 の共有サービスとして実装されていて、サーバーの全体管理者によって有効にできます。BDC の中心機能は、次の種類の外部システムへの接続を提供することです。

  • データベース

  • Windows Communication Foundation (WCF) エンドポイント

  • .NET Connectivity Assembly

  • カスタム データ ソース (BDC には、BDC を経由して新しい種類の外部システムにアクセスできるようにするための、新しい種類の外部システム用のコネクタを開発者がプラグインできるフレームワークが用意されています。)

BDC の主な設計目標は、最小のコーディングで、さまざまな外部システムからのデータに宣言的にアクセスできるようにすることです。この目標を達成するために、BDC では、整合性があり簡易化されたクライアント オブジェクト モデルを提供するメタデータ モデルを持つ基盤データ ソースへの同種アクセスを提供しています。

Microsoft Business Connectivity Services (BCS) では、Microsoft SharePoint Designer と Microsoft Visual Studio の両方でツール サポートを提供します。データベース開発者と同等のスキルを持つ経験豊かなユーザーは、SharePoint Designer で外部のコンテンツ タイプ デザイナーを使用してビジネス アプリケーションの API を記述することによって、外部コンテンツ タイプを作成できます。ユーザーが SharePoint Designer で外部コンテンツ タイプを保存すると、外部システムのデータは、SharePoint 2010 の他の Business Connectivity Services 機能と BDC オブジェクト モデルを介してユーザーの SharePoint サイトですぐに使用できるようになります。

BDC は、BDC Metadata Store と、さまざまなビジネス アプリケーションで使用されるビジネス ロジック向けに、シンプルで一貫したオブジェクト指向のプログラミング インターフェイスを提供するオブジェクト モデルで構成されます。

図 1 に BDC アーキテクチャの概要を示します。

図 1. BDC アーキテクチャの概要

BDC の概要

図 2 に BDC の低レベル アーキテクチャを示します。

図 2. BDC の低レベル アーキテクチャ

BDC の低レベル アーキテクチャ

BDC モデルと BDC Metadata Store

BDC では、メタデータを使用して外部アプリケーションの API を記述します。外部アプリケーションの API 記述を BDC に登録すると、追加のコードを記述しなくても、BDC によって外部データへの動的データ アクセス接続が提供されます。たとえば、SharePoint リストおよび Web パーツ内の AdventureWorks データベースからのデータを表示するには、AdventureWorks データベースのデータにアクセスする SQL クエリ用のメタデータを定義します。

経験豊かなユーザーまたは開発者は、ビジネス アプリケーションが対話するビジネス エンティティ、およびそのアプリケーションで使用可能なメソッドを定義することによって、データ ソースごとにメタデータを定義します。AdventureWorks の例では、Customer、SalesOrder、および Product エンティティ用のメタデータを定義できます。BDC で使用可能にするエンティティごとに、外部システムからデータをフェッチするために使用されるメソッド用のメタデータを定義します。

メタデータ モデルは基本的な物理ソースを抽象化して、さまざまなビジネス アプリケーションで作業するメタデータ作成者に、一貫したシンプルなモデルを提供します。

BDC モデルでは、外部コンテンツ タイプ、関連付けなど、API に意味を追加するセマンティクス メタデータを定義します。メタデータを記述すると、BDC を使用してカスタム ソリューションをプログラミングする開発者は、バックエンド API を理解する必要がなくなり、代わりに簡略化された BDC オブジェクト モデルを使用できます。たとえば、BDC Runtime オブジェクト モデルでは、System.Entity、Entity.FindFiltered、Entity.FindAssociated など、呼び出しができるようになり、必要なバックエンド データを簡単に取得できるようになります。この設計により、メタデータ作成者および開発者の双方で、通常は複雑な API を持つ外部システムでの作業がより簡単になります。

BDC モデルを BDC ランタイムによって解釈できるようにするには、BDC モデルをリレーショナル データベースに格納し、メモリに読み込むか具現化します。BDC Metadata Store コンポーネントは、一連のデータベース テーブルと BDC モデルの保持、読み取り、および変更を行うためのストアド プロシージャで構成されます。このコンポーネントは、Business Connectivity Services のサーバー展開専用です。データベースを直接編集するのではなく、Administration オブジェクト モデルを使用して BDC モデルの要素を編集する必要があります。データベースは決して編集しないでください。クライアントでは、このコンポーネントは、Microsoft SQL Server 2005 Compact Edition データベースで BDC モデルの一時的なメモリ内逆シリアル化に置き換えられます。

注意

BDC Metadata Store には外部データは格納されません。外部システムに関するメタデータだけが格納されます。

詳細については、「BDC モデル インフラストラクチャ」を参照してください。

ランタイム オブジェクト モデル

上記の低レベルの図に示すように、BDC のパブリック インターフェイスには、2 セットの API があります。それは、Runtime オブジェクト モデルと Administration オブジェクト モデルです。

Runtime オブジェクト モデルは、BDC のクライアントとアプリケーションで使用するためのもので、次の 2 つの主要な機能があります。

  • 下位データ ソースを抽象化する、直感的なオブジェクト指向のインターフェイスを提供します。Runtime オブジェクト モデルにより、クライアント アプリケーションは、バックエンド固有のコーディングの枠組みを学習する必要がなくなり、クライアントは、単一の統一されたインターフェイスを使用してすべての外部システムにアクセスできます。Runtime オブジェクト モデルによって、SAP アプリケーションのメソッドの呼び出しが、Siebel アプリケーションのメソッドの呼び出しや、Microsoft SQL Server でのクエリの実行と同じように実行できます。Runtime オブジェクト モデルを使用すると、アプリケーションでバックエンド データの読み取り、書き込み、および更新を実行できます。

    注意

    BDC は、実際のメソッド実行は行いません。クライアントの起動を、データベースの場合は適切な ADO.NET プロバイダー、Web サービスの場合は Web サービス プロキシ、および .NET Framework アセンブリの場合は .NET Framework アセンブリに委任するだけです。

  • メタデータ データベースからメタデータ オブジェクトを読み取り (読み取りのみ)、そこに記述されたビジネス ロジックを実行できるようにします。Runtime オブジェクト モデルでは、メモリにキャッシュされたメタデータを使用するので、高速に実行されます。メタデータ データベースでメタデータ情報を照会するだけのクライアントは、Runtime オブジェクト モデルを使用します。

Runtime 名前空間には 2 つの主要なオブジェクトがあります。

  • IEntityInstance.概念上、エンティティ インスタンスは、BDC のバックエンド ビジネス アプリケーションから返される単一行のデータです。IEntityInstance インターフェイスは下位データ ソースを抽象化し、このインターフェイスによりクライアントは、アプリケーション固有のコーディングの枠組みを学習する必要がなくなります。クライアントは、単一の単純化された方法ですべてのビジネス データにアクセスできます。IEntityInstance インターフェイスを使用することで、Web サービスから返される複雑な .NET Framework 構造を操作するときと同じ方法でデータベースからの 1 行のデータを操作できます。

    BDC のエンティティ インスタンスには、固有のセマンティクスが備えられています。たとえば、その行のどのフィールドがエンティティ インスタンスの識別子を表しているのかがわかる機能があり、そのエンティティ インスタンスの GetAssociated、GetIdentifierValues、Execute などのメソッドを呼び出すことができます。

  • IEntityInstanceEnumerator.列挙子は、コレクション内のデータの読み取りに使用できますが、基になるコレクションの修正には使用できません。IEntityInstanceEnumerator はストリーミングをサポートしているため、バックエンド アプリケーションが大量のデータを返す場合に役立ちます。

Administration オブジェクト モデル

Administration オブジェクト モデルを使用して、BDC Metadata Store のメタデータ オブジェクトの作成、読み取り、更新、および削除を実行できます。このモデルは、発行時に本格的なメタデータの検証を提供し、ストア内の参照整合性を維持します。このモデルでは、パフォーマンスを向上するためにメモリ内メタデータ キャッシュを使用します。このため、比較的待ち時間が長く、BDC が展開内のすべてのフロントエンド Web サーバーとアプリーション サーバーのキャッシュを更新するまで最大 1 分の遅延が発生します。このコンポーネントは、Business Connectivity Services のサーバー展開にあります。クライアント バージョンの Administration オブジェクト モデルは、クライアントにあります。

インフラストラクチャ コンポーネント

インフラストラクチャ コンポーネントは、Microsoft.SharePoint.dll の Microsoft.BusinessData.Infrastructure 名前空間で定義されています。

上記の BDC の低レベルのアーキテクチャ図で示したように、Runtime オブジェクト モデルは、インフラストラクチャ コンポーネントを使用して、物理データ ソースへの接続を行い、管理しています。インフラストラクチャ コンポーネントは、ランタイム接続管理と共有セキュリティ サービスを BDC のクライアントに提供します。

BDC コネクタとコネクタ フレームワーク

Business Connectivity Services は、サポートしているすべてのデータ ソースの種類にコネクタを提供します。また、プロバイダー モデルによって拡張性を備えています。ISV とパートナーは、BDC でネイティブにサポートされていないバックエンドの種類用の BDC コネクタを開発できます。

Secure Store Service と SharePoint のセキュリティ インフラストラクチャ

BDC は、Office SharePoint Server 2007 の統合認証またはシングル サインオン (SSO) を使用してバックエンド システムに認証を提供します。SharePoint Server 2010 では、BDC はクレームまたはトークン ベースの認証もサポートしています。SSO は、プラグ可能な Secure Store に置き換えられました。このため、サード パーティが SharePoint Secure Store を使用するつもりがなく、カスタムまたは他の ISV の SSO を使用する予定の場合、BDC ではその SSO を完全にサポートします。

メタデータ キャッシュ

パフォーマンスを向上するために、BDC は、すべてのメタデータ オブジェクトをキャッシュします。このように、キャッシュからすべてのメタデータ オブジェクトを具現化し、Runtime オブジェクト モデルに一度に提供するため、メソッド呼び出しごとにメタデータ データベースにラウンドトリップしません。メタデータ キャッシュは、メタデータ オブジェクトを呼び出すクライアントが、メタデータ オブジェクトにすばやくアクセスできるようにします。

注意

オブジェクト モデルを使用して、個々のメタデータ オブジェクト レベルでキャッシュをオンまたはオフにすることができます。このため、ほとんど使用しないオブジェクトをキャッシュする必要がありません。

BDC は、最初の読み込み時にオブジェクトをキャッシュします。各サーバーで実行されているタイマーは、1 分ごとにメタデータ オブジェクトに対する変更がないかを確認します。メタデータ オブジェクトへの変更を確認すると、キャッシュをクリアして、再度読み込みます。その結果、メタデータを変更した後は、ファーム内のすべてのサーバーに変更内容が伝達されるまで、最大 1 分待機する必要があります。変更を行ったサーバー上では、すぐに変更されます。