Business Connectivity Services オブジェクト モデルの概要
Microsoft Business Connectivity Services (BCS) は、既存の Business Connectivity Services 機能を基礎とするカスタム ソリューションの作成を可能にする、機能が豊富で拡張可能なオブジェクト モデルを提供します。
最終更新日: 2010年7月15日
適用対象: SharePoint Server 2010
この記事の内容
BDC オブジェクト モデル
BDC ランタイム オブジェクト モデル
BDC Administration オブジェクト モデル
BCS キャッシュ オブジェクト モデル
BCS ソリューション パッケージ オブジェクト モデル
このトピックでは、Microsoft SharePoint Foundation 2010 または Microsoft SharePoint Server 2010 を実行するサーバー、および Microsoft Office 2010 を実行するクライアントで使用可能な以下の Business Connectivity Services オブジェクト モデルの高レベルの概要について説明します。
BDC オブジェクト モデル
BDC サーバーおよびクライアントでのランタイム オブジェクト モデル
BDC サーバーでの Administration オブジェクト モデル、およびクライアントでの BDC Administration クライアント オブジェクト モデル
クライアントでの BCS キャッシュ オブジェクト モデル
SharePoint Server 2010 を実行するサーバーでの BCS ソリューション パッケージ オブジェクト モデル
注意
このオブジェクト モデルは、SharePoint Foundation 2010 では使用できません。
Business Connectivity Services のオブジェクト モデルに加えて、SharePoint リスト オブジェクト モデルと、SharePoint Foundation 2010 で使用可能なクライアント オブジェクト モデルを使用して、外部リストを操作できます。詳細については、「外部リストとともに SharePoint リスト オブジェクト モデルと SharePoint クライアント オブジェクト モデルを使用する」、および「Business Connectivity Services Class Library (英語)」にあるオブジェクト モデルに関するドキュメントを参照してください。
BDC オブジェクト モデル
Business Data Connectivity (BDC) service は、メタデータを使用して外部システムの API を記述します。外部システムの API 記述が BDC に登録されると、BDC は、追加コードを必要とせずに、動的データ アクセス接続を外部データに提供します。たとえば、AdventureWorks Web サービスのデータを SharePoint リストと Web パーツに表示するために、経験豊富なユーザーおよび開発者は、Web サービスで使用可能なビジネス エンティティとメソッドを定義して、メタデータを定義します。AdventureWorks の例では、Customer および SalesOrder の外部コンテンツ タイプ用のメタデータを定義できます。Microsoft SharePoint Designer 2010 を使用すると、この処理を容易に行うことができます。外部コンテンツ タイプは、オブジェクト モデル内の Entity オブジェクトによって表されます。BDC で使用できるようにする外部コンテンツ タイプごとに、外部システムからデータを取得するために使用するメソッド用のメタデータを定義します。
BDC メタデータ モデルは基礎となる物理ソースを抽象化して、さまざまな外部システムで作業するメタデータ作成者に、一貫したシンプルなモデルを提供します。図 1 は、メタデータ オブジェクトの階層を示しています。
図 1. メタデータ オブジェクトの階層
BDC モデルでは、API に意味を加える外部コンテンツ タイプ、関連付けなど、セマンティクス メタデータが定義されます。モデルが BDC メタデータ ストアにインポートされると、BDC を使用してカスタム ソリューションをプログラムする開発者は、外部 API を把握する必要はありませんが、代わりに、簡略化された BDC オブジェクト モデルを使用できます。たとえば、BDC ランタイム オブジェクト モデルでは、必要な外部データの取得を簡略化する System.Entity、Entity.FindFiltered、Entity.FindAssociated などの呼び出しが提供されます。この設計によって、複雑な API を通常含んでいる外部システムでの開発者の作業が容易になります。
BDC モデルは、リレーショナル データベースに格納され、メモリに読み込まれた後に、BDC ランタイムによって解釈されます。BDC モデルの保留、読み取り、変更を行うためのデータベース テーブルとストアド プロシージャのセットで、BDC メタデータ ストア コンポーネントが構成されます。このコンポーネントは、Business Connectivity Services のサーバー展開上にのみ存在します。BDC モデルの要素を編集するには、データベースを直接編集するのではなく、Administration オブジェクト モデルを使用する必要があります。データベースを編集しないでください。クライアントでは、このコンポーネントは、Microsoft SQL Server 2005 Compact Edition データベース内の BDC モデルの一時的なメモリ内逆シリアル化によって置換されます。
図 2 に BDC の低レベル アーキテクチャを示します。
図 2. BDC の低レベル アーキテクチャ
注意
BDC メタデータ ストアに外部データは含まれません。含まれるのは、外部システムに関するメタデータのみです。
BDC オブジェクト モデルを使用して作業するには、ビジネス データ カタログ オブジェクト モデルとの下位互換性、およびサンドボックス ソリューションでオブジェクト モデルが使用できるかどうかについて理解する必要があります。
ビジネス データ カタログとの下位互換性
Microsoft SharePoint 2010 の Business Data Connectivity オブジェクト モデルと Microsoft Office SharePoint Server 2007 のビジネス データ カタログ オブジェクト モデルはよく似ていますが、互換性がありません。ただし、SharePoint 2010 には、旧ビジネス データ カタログ オブジェクト モデルが組み込まれているので、このオブジェクト モデルを使用する既存のアプリケーションは、SharePoint 2010 の新しいバージョンでも機能し続けることができます。SharePoint 2010 の新しい Business Data Connectivity オブジェクト モデルを使用して、製品に用意されている豊富な機能を利用することをお勧めします。また、Business Data Connectivity オブジェクト モデルを使用するように既存のアプリケーションを移行して、将来の互換性に備え、新しい機能を利用できるようにすることをお勧めします。SharePoint Server 2010 へのアップグレードの詳細については、「Business Connectivity Services へのアップグレードを計画する (SharePoint Server 2010)」を参照してください。
サンドボックス ソリューションでは、BDC オブジェクト モデルを使用できない
Business Data Connectivity オブジェクト モデルは、サンドボックス ソリューションから直接呼び出すことができません。SharePoint のサンドボックス ソリューションの詳細については、「サンドボックス ソリューション」を参照してください。ただし、Business Data Connectivity API は、Microsoft .NET Framework セキュリティ モデルと互換性があるので, .NET Framework 部分的な信頼を使用してコードを実行することによって呼び出すことができます。.NET Framework でのコード アクセス セキュリティの詳細については、「コード アクセス セキュリティ」を参照してください。Business Data Connectivity API を部分的に信頼されたコードから呼び出した場合でも、Web サービス プロキシ, .NET コネクタ アセンブリ、カスタム コネクタ、カスタム型リフレクター、カスタム レンダラーなど、その呼び出しの結果として実行される外部コードは、完全信頼の状態で実行されます。
BDC ランタイム オブジェクト モデル
BDC のアーキテクチャ図に示されているとおり、BDC のパブリック インターフェイスには 2 つの API セットがあります。ランタイム オブジェクト モデルと Administration オブジェクト モデルです。
ランタイム オブジェクト モデルは、BDC のクライアントおよびアプリケーションで使用するために設計されています。その主な機能は、基礎となるデータ ソースを抽象化する直感的なオブジェクト指向のインターフェイスを提供することです。ランタイム オブジェクト モデルにより、クライアント アプリケーションは、外部システム固有のコーディングの枠組みを使用する必要がなくなり、クライアントは単一の統一インターフェイスによってすべての外部システムにアクセスできます。ランタイム オブジェクト モデルのため、SAP アプリケーションでのメソッドの呼び出しは、Siebel アプリケーションでのメソッドの呼び出しや Microsoft SQL Server でのクエリの実行に非常に似ています。ランタイム オブジェクト モデルを使用することで、アプリケーションは外部データの読み取り、書き込み、更新ができます。
注意
BDC は、実際のメソッド呼び出しを、データベースの場合は適切な ADO.NET に委任し、Web サービスの場合は Web サービス プロキシに委任し, .NET Framework アセンブリの場合は .NET Framework アセンブリに委任します。
ランタイム オブジェクト モデルでは、メモリにキャッシュされたメタデータが使用されるために高速です。メタデータ ストアを照会してメタデータ情報を得る必要のあるクライアントは、ランタイム オブジェクト モデルを使用する必要があります。
Runtime 名前空間には重要なオブジェクトが 3 つあります。
IEntity 顧客、注文など、外部システム内のビジネス エンティティを表します。これは、一般的に、外部コンテンツ タイプと呼ばれます。
IEntityInstance 概念的には、エンティティ インスタンスは、BDC の外部システムから返される 1 つのアイテムです。IEntityInstance インターフェイスは、基礎となるデータ ソースを抽象化し、アプリケーション固有のコーディングの枠組みを使用する必要をなくすため、単一の簡略化された方法でクライアントがすべてのビジネス アプリケーションにアクセスできるようになります。IEntityInstance インターフェイスを使用すると、Web サービスから返される複雑な .NET Framework 構造の処理とまったく同じ方法でデータベースのデータ行を処理できるようになります。
BDC のエンティティ インスタンスには、固有のセマンティクスが備えられています。たとえば、行のどのフィールドがエンティティ インスタンスの識別子を表しているかを判別できる機能があり、そのエンティティ インスタンスの GetAssociated、GetIdentifierValues、および Execute などのメソッドを呼び出すことができます。
IEntityInstanceEnumerator 列挙子は、コレクション内のデータの読み取りに使用できますが、基礎となるコレクションの修正には使用できません。IEntityInstanceEnumerator はストリーミングをサポートしているため、外部システムが大量のデータを返す場合に非常に役立ちます。
BDC Administration オブジェクト モデル
Administration オブジェクト モデルを使用して、BDC メタデータ ストア内のメタデータ オブジェクトの作成、読み取り、更新、削除ができます。Administration オブジェクト モデルは、比較的に待ち時間が長く、BDC が展開内のすべてのフロントエンド Web サーバーおよびアプリケーション サーバーのキャッシュを更新するまで、最大 1 分の遅延が発生します。このコンポーネントは、Business Connectivity Services のサーバー展開上に存在します。Administration オブジェクト モデルのクライアント バージョンはクライアントに存在します。
BCS キャッシュ オブジェクト モデル
Microsoft Business Connectivity Services (BCS) は、プログラムでの BCS クライアント キャッシュの更新、キャッシュのサブスクリプションの変更、エラーの検出と解決を行うためのパブリック オブジェクト モデル (Microsoft.BusinessData.Offlining 名前空間) を提供します。
BDC ランタイム オブジェクト モデルのメソッド インスタンス レベルで、Business Connectivity Services を使用すると、キャッシュを使用するかどうかと使用方法をランタイムに指示する操作モードを渡すことができます。Business Connectivity Services は、次の 2 種類のキャッシュ使用モードをサポートします。
オンライン アプリケーションがオンライン モードに設定されている場合、キャッシュは使用されません。Read、Update など、外部システムのすべての呼び出しは、Business Data Connectivity (BDC) service ランタイム経由で外部システムに直接ルーティングされます。
キャッシュ済み アプリケーションがキャッシュ済みモードに設定されている場合、キャッシュが使用されます。キャッシュのデータは、展開時に外部システムからのエンティティ インスタンスで設定され、指定された間隔で外部システムから更新されます。操作は外部システムに直ちにルーティングされず、キャッシュにルーティングされます。キャッシュは、操作を操作キューに入れ、1 つずつ実行します。
BCS ソリューション パッケージ オブジェクト モデル
宣言型のソリューションとは、Microsoft Outlook 2010 で動作するソリューションです。宣言型のソリューションは、Business Connectivity Services のリッチ クライアント ランタイムを宣言的に使用します。BDC モデル、ソリューション マニフェスト (OIR.config)、サブスクリプション、リボン、レイアウトなどの XML ファイルをいくつか作成し、パッケージ化するときにそれらのファイルを Business Connectivity Services に渡します。Business Connectivity Services は、ソリューションをパッケージ化して Outlook に展開し、XML ファイルに指定されたとおりにそのソリューションを実行します。そのようなソリューションでは、カスタム外部データ パーツ、カスタム アクション、作業ウィンドウ、およびリボンを参照して使用できます。
Business Connectivity Services は、Outlook に宣言型のソリューションをパッケージ化するためのパブリック オブジェクト モデルを提供します。作成されたパッケージは、Visual Studio 2010 の Office 開発ツール アドイン パッケージとしてクライアントに展開されます。アドインのバイナリは、パッケージに含まれませんが、その代わりに、グローバル アセンブリ キャッシュに現在配置されているマネージ DLL の一部として、Microsoft Office のセットアップ時に Business Connectivity Services によって提供されます。
関連項目
概念
BDC オブジェクト モデルを使用するためのコンテキストを設定する
外部リストとともに SharePoint リスト オブジェクト モデルと SharePoint クライアント オブジェクト モデルを使用する
Business Connectivity Services: 方法説明とチュートリアル
Business Connectivity Services: サンプル XML とコード例