.NET Connectivity Assemblies と Web サービスを作成する

最終更新日: 2010年7月6日

適用対象: SharePoint Server 2010

この記事の内容
設計のベスト プラクティス
実装手順
サービスでのステレオタイプ化された操作の定義
.NET Connectivity Assemby と Web サービスを記述するためのベスト プラクティス

Microsoft Business Connectivity Services (BCS) では、さまざまな種類の外部システムの外部データを Microsoft SharePoint 2010 アプリケーションおよび Microsoft Office 2010 アプリケーションに組み込むことができます。これらの外部システムには、以下のようなものがあります。

  • データベース

  • Web サービス

外部システムが Business Connectivity Services で直接サポートされていない場合は、コードを作成して、Business Connectivity Services 経由で外部システムを公開できます。外部システム内のエンティティが静的で、頻繁に変更されず、既知のタイプが少ない場合は、Web サービスまたは .NET Connectivity Assembly を作成して、Business Connectivity Services が最もよく認識する形式で外部システムのデータを公開することができます。その一方で、エンティティが動的で、カスタム タイプを持ち、その規模が大きい場合は、そのデータ ソース タイプ用のカスタム コネクタを作成することを検討してください。ただし、カスタム コネクタのための接続、データ転送、セットアップ、およびツールを操作する必要があります。詳細については、「.NET Assembly Connector を使用することとカスタム コネクタを作成することの違い」を参照してください。

以下の図は、Microsoft Business Connectivity Services (BCS) の概要レベルのアーキテクチャ図です。Business Connectivity Services が提供するさまざまなコネクタを示し, .NET アセンブリ、Web サービス、およびカスタム コネクタが全体的なアーキテクチャにどのように適合するかを表しています。

BCS の高レベル アーキテクチャ

このトピックでは, .NET Connectivity Assembly と Web サービスを記述するためのベスト プラクティスについて説明します。Web サービスと .NET Connectivity Assembly を記述したら、Microsoft SharePoint Designer 2010 を使用してこれらにアクセスし、外部コンテンツ タイプを検索することができます。

以下の表で、2 つの方法を比較します。

表 1. .NET Connectivity Assembly または Web サービスを作成する方法

Web サービス

.NET Connectivity Assembly

実装技術

SOAP 1.1 または SOAP 1.2 に準拠した Web サービス。ASP.NET Web サービス、WCF Web サービス エンド ポイントなど

Microsoft .NET Framework 3.5

ホスティング

Business Connectivity Services は Web サービスをホストしません。ユーザーがサービスをホストする必要があります。

.NET Connectivity Assembly にはホスティングは必要ありません。単に .NET Connectivity Assembly を BDC メタデータ ストアに展開するだけでよく、残りの操作は Business Connectivity Services によって処理されます。

ツール サポート

Microsoft Visual Studio などの開発ツールを使用して、独自の Web サービスを記述できます。Visual Studio の Business Connectivity Services には、Web サービスを作成するための特別なプロジェクト テンプレートやツールはありません。

Microsoft Visual Studio などの開発ツールを使用して、独自の .NET Connectivity Assembly を記述できます。Microsoft Visual Studio 2010 には、ビジュアル デザイナーのセットに付属の Business Data Connectivity モデルという新しいプロジェクト テンプレートとコード管理機能があり、ユーザーはこれらを使用して, .NET Connectivity Assembly および関連付けられた モデルの作成、デバッグ、Business Connectivity Services への展開を簡単に行うことができます。

認証のサポート

Business Connectivity Services は、Web サービスに関して、Passthrough、RevertToSelf、WindowsCredentials、Credentials、および DigestCredentials の認証メカニズムをサポートします。詳細については、「使用可能な認証モード」を参照してください。

.NET Connectivity Assembly では、セキュリティと認証を操作する必要があります。Secure Store Service を使用する場合は、Secure Store オブジェクト モデルを使用して、プログラムで資格情報を格納および取得することができます。あるいはユーザー名/パスワード フィルターを使用して、ユーザー名とパスワードを取得することもできます。

.NET Connectivity Assembly では、Web サービスでは利用できない .NET 型 (例: シリアル化されない型) を使用できます。

設計のベスト プラクティス

作成しているのが Web サービスか .NET Connectivity Assembly かにかかわらず、記述しているコード内で、外部データへの接続、外部システムで必要な外部コンテンツ タイプの定義、外部コンテンツ タイプごとにサポートするステレオタイプ化された各操作 (メソッド インスタンス) の実行に必要なコードの追加を行います。

また、Web サービスと .NET Connectivity Assembly 内のコードを記述しているため、データを取得できる場所、データが Business Connectivity Services と SharePoint に渡される前にそのデータに対して実行できる処理の選択肢が多数あります。コードでは、複数のソースからのデータの統合、変換とビジネス ロジックの適用、カスタム セキュリティ スキームの処理などのアクションを実行できます。

注意

Web サービスと .NET Connectivity Assemby の記述で重要なことは、外部コンテンツ タイプの観点から考え、Web サービス内の Web メソッドと .NET Connectivity Assembly 内のメソッドが BDC によってサポートされているステレオタイプ化された操作と適合していることを確認することです。また、Microsoft SharePoint Designer 2010 が Web サービスと .NET Connectivity Assembly に接続できるようにすること、したがって、サービスを作成して発行した後に、外部コンテンツ タイプを作成するための検出と使用方法を提供できるようにすることも重要です。

たとえば Web サービスでは、外部コンテンツ タイプでサポートするステレオタイプ化された操作ごとに 1 つの Web メソッドがあること、そしてその署名が、ステレオタイプ化された操作で推奨メソッドの署名と適合していることを確認します (以下のセクションを参照)。

同様に .NET Connectivity Assembly では、外部コンテンツ タイプにとって必要なステレオタイプ化された各操作用のメソッドが, .NET コードに含まれていることを確認します。Business Connectivity Services は、ユーザーがアイテムの読み取り、アイテムの更新などのアクションを外部コンテンツ タイプで実行するときに、これらのメソッドを実行時に呼び出します。

実装手順

.NET Connectivity Assembly では、通常、各外部コンテンツ タイプはクラスにマップし、ステレオタイプ化された各操作はクラス内のメソッドになります。Web サービスでは、ステレオタイプ化された各操作は Web メソッドになります。

.NET Connectivity Assembly

  1. .NET Connectivity Assembly では、外部コンテンツ タイプごとにクラスを作成し、そのクラスに含めるフィールドを定義します。外部コンテンツ タイプの識別子は必ず含めます。識別子は、通常、データベース テーブル内の主キーです。BDC では、20 までのフィールド複合識別子をサポートします。

  2. もう 1 つのクラスを作成し、メソッドをそのクラスに追加して、外部コンテンツ タイプごとにサポートするステレオタイプ化された操作を定義します。例については、このトピックで後述する「サービスでのステレオタイプ化された操作の定義」を参照してください。

Web サービス

  1. Web サービス開発者は、通常、複雑な型の定義から作業を開始します。各外部コンテンツ タイプの構造を定義します。再度、外部コンテンツ タイプ用の識別子を含めていることを確認してください。多くの場合、識別子はデータベース テーブル内の主キーです。BDC では、20 までのフィールド複合識別子をサポートします。

  2. 外部コンテンツ タイプでサポートするステレオタイプ化された操作ごとに Web メソッドを定義します。例については、このトピックで後述する「サービスでのステレオタイプ化された操作の定義」セクションを参照してください。

サービスでのステレオタイプ化された操作の定義

実装するステレオタイプ化された操作は、要件に応じて異なります。以下のテーブルは、最も一般的な要件に対応するために実装をお勧めする、ステレオタイプ化された操作の一覧です。

要件

ステレオタイプ化された操作

コメント

外部アイテムの読み取り

SpecificFinder メソッド インスタンスと Finder メソッド インスタンス。これらは、Business Connectivity Services クライアントのすべての機能に必要です。

クライアント コンピューターに対して最適化されたデータ同期を行うために、BulkSpecificFinder、IDEnumerator、BulkIDEnumerator、ChangedIDEnumerator、および DeletedIDEnumerator を検証します。これは、多くのユーザーまたは大量のデータをオフラインにする必要があるシナリオでは、重要になる可能性があります。

外部アイテムの書き戻し

外部コンテンツ タイプで、作成更新、および削除操作が必要な場合、Creator メソッド インスタンス、Updater メソッド インスタンス、Deleter メソッド インスタンス。

外部システムが書き戻しをサポートしていない場合、外部コンテンツ タイプのすべてのフィールドを読み取り専用としてマークします。Outlook で、外部コンテンツ タイプに基づいて宣言的つまり高度なコードベースのソリューションを作成している場合は、Outlook フォルダーも読み取り専用としてマークします。

関連外部アイテム

AssociationNavigator

Associator

Disassociator

BulkAssociationNavigator、BulkAssocatedIDEnumerator

Associator、および Disassociator は、外部キーのない関連付けでのみ使用されます。詳細については、Microsoft.BusinessData.MetadataModel.IAssoication クラスを参照してください。

検索

IDEnumerator と BulkIDEnumerator

AccessChecker

BinarySecurityDescriptorAccessor

クライアントのオフライン化

Finder メソッドと SpecificFinder メソッドは、同じフィールドのセットを返す必要があります。返さない場合は、パフォーマンスに影響します。Finder メソッドと SpecificFinder メソッドが異なるフィールドのセットを返すと、ユーザーは Microsoft Office 2010 クライアントに対して外部コンテンツ タイプをオフラインにできなくなります。

外部コンテンツ タイプがオフライン時に複雑なフィルタリング ロジックが使用されていると、オンラインになったときに、取得する予定の結果セットを取得できなくなる可能性があります。

BLOB データ

StreamAccessor

.NET Connectivity Assemby と Web サービスを記述するためのベスト プラクティス

.NET connectivity Assembly と Web サービスを記述するときは、以下のベスト プラクティスを検討してください。

  • **識別子を追加する。**外部コンテンツ タイプごとに、必ず識別子を追加するようにしてください。識別子は、通常、データベース テーブルの主キーです。BDC では、20 までのフィールド複合識別子をサポートします。

  • **null 値の処理。**通常、Read 操作が外部システムをクエリし、返される型を入力します。SpecificFinder メソッドの null 値を適切に処理するようにしてください。外部システムのいくつかのフィールド (趣味、住所など) は、おそらく null です。エラーと例外を適切に処理することは重要です。したがって、コード内で null と空文字列を確認して、修正します。また、型記述子で NormalizeString 解釈を使用するこもと検討してください。

  • **パラメーター名の一致。**パラメーター名が外部システム内のパラメーター名と一致している必要があります。パラメーター名がすべてのメソッドで大文字一致しなければ、SharePoint Designer 2010 はそれらを異なるフィールドとして解釈します。

  • **例外処理。**例外は、必ず適切に処理してください。操作エラーを予測し、例外を発生させます。

    メソッドが単一のアイテム (Specific Finder など) を返し、要求されたアイテムが見つからない場合は、コードは以下を実行します。

    1. null を返します。これは最も簡単で最も互換性のある方法です。

    2. ObjectNotFoundException をスローします。この例外は、記録したい特定のメッセージがある場合に限り有用です。Web サービスでは、この例外をスローしないようにしてください。

    3. ObjectDeletedException をスローします。この例外は、オブジェクトが削除済みと認識されている場合に限り使用してください。Web サービスでは、この例外をスローしないようにしてください。

    4. 他の例外はスローしません。

    5. 不完全なデータまたは偽のデータは返しません。

    メソッドが複数のアイテム (検索など) を返すことになっているが、アイテムが見つからない場合、コードは以下を実行します。

    1. アイテムの空のコレクション/列挙を返します。これは推奨動作です。

    2. null を返します。

    3. 例外はスローしません。

    メソッドに戻り値がなく (更新など)、更新で問題が発生する場合、コードは以下を実行します。

    1. 例外をスローします。

    2. 戻り値またはエラー コードは使用しません。BDC には現在、これらの値を解釈する方法がありません。

詳細については、「ステレオタイプ化された操作をユーザーのメソッドに実装する」を参照してください。

関連項目

タスク

[方法] BDC メタデータ ストアに .NET Connectivity Assembly を発行する

概念

[方法] .NET Connectivity Assembly を作成する

[方法] .NET Connectivity Assembly 内から Secure Store Service を使用する

その他の技術情報

ステレオタイプ化された操作をユーザーのメソッドに実装する