次の方法で共有


データ サービスのホスティング (WCF Data Services)

WCF Data Services を使用して、データを Open Data Protocol (OData) フィードとして公開するサービスを作成できます。 このデータ サービスは、DataService から継承されたクラスとして定義されます。 このクラスは、OData からの要件に応じて、要求メッセージを処理し、データ ソースに基づいて更新し、応答メッセージを生成するための機能を提供します。 ただし、データ サービスは、HTTP 要求を受け付けるネットワーク ソケットにバインドしたり、このソケットでリッスンしたりすることはできません。 この機能要件のため、データ サービスはホスティング コンポーネントに依存します。

データ サービス ホストは、データ サービスに代わって次のタスクを実行します。

  • 要求をリッスンし、その要求をデータ サービスにルーティングする。

  • 要求ごとにデータ サービスのインスタンスを作成する。

  • 受信要求を処理するようデータ サービスに要求する。

  • データ サービスに代わって応答を送信する。

データ サービスのホスティングを簡素化するため、WCF Data Services は Windows Communication Foundation (WCF) と統合するように設計されています。 データ サービスは、ASP.NET アプリケーションでデータ サービス ホストとして機能する既定の WCF 実装を提供します。 そのため、次のいずれかの方法でデータ サービスをホストできます。

  • ASP.NET アプリケーション

  • 自己ホスト型 WCF サービスをサポートするマネージ アプリケーション

  • その他のカスタム データ サービス ホスト

ASP.NET アプリケーションでのデータ サービスのホスト

Visual Studio の [新しい項目の追加] ダイアログを使用して ASP.NET アプリケーションにデータ サービスを定義すると、プロジェクトに 2 つの新しいファイルが生成されます。 そのうち一方のファイル (拡張子は .svc) は、データ サービスのインスタンス化方法を WCF ランタイムに指示します。 たとえば、クイック スタートを完了したときに作成される Northwind サンプル データ サービスの .svc ファイルは次のようになります。

<%@ ServiceHost Language="C#" 
    Factory="System.Data.Services.DataServiceHostFactory, 
            System.Data.Services, Version=4.0.0.0, 
            Culture=neutral, PublicKeyToken=b77a5c561934e089" 
    Service="NorthwindService.Northwind" %> 

このディレクティブは、DataServiceHostFactory クラスを使用して、名前付きのデータ サービス クラスのサービス ホストを作成するようアプリケーションに指示します。

.svc ファイルの分離コード ページには、データ サービス自体の実装であるクラスが含まれます。Northwind サンプル データ サービスの場合、このクラスは次のように定義されます。

Public Class Northwind
    Inherits DataService(Of NorthwindEntities)
public class Northwind : DataService<NorthwindEntities>

データ サービスは WCF サービスと同様に動作するため、データ サービスは ASP.NET と統合され、WCF Web プログラミング モデルに従います。 詳細については、「WCF Services and ASP.NET」および「Web Programming Model」を参照してください。

自己ホスト型 WCF サービス

WCF 実装が組み込まれている WCF Data Services は、WCF サービスとして自己ホスト型のデータ サービスをサポートします。 サービスは、コンソール アプリケーションなどの任意の .NET Framework アプリケーションで自己ホスト型とすることができます。 WebServiceHost を継承する DataServiceHost クラスを使用して、特定のアドレスでデータ サービスをインスタンス化します。

自己ホストを使用するとサービスの配置とトラブルシューティングが容易になるので、開発時やテスト時に役立ちます。 ただし、この種類のホスティングでは、ASP.NET またはインターネット インフォメーション サービス (IIS) に備わっている高度なホスト機能や管理機能を使用できません。 詳細については、「Hosting in a Managed Application」を参照してください。

カスタム データ サービス ホストの定義

WCF ホストの実装の制限が厳格すぎる場合、データ サービスのカスタム ホストを定義することもできます。 IDataServiceHost インターフェイスを実装する任意のクラスをデータ サービスのネットワーク ホストとして使用できます。 カスタム ホストは、IDataServiceHost インターフェイスを実装し、データ サービス ホストの次の基本的な役割を果たすことができるようにする必要があります。

  • データ サービスにサービス ルート パスを提供する。

  • 適切な IDataServiceHost メンバーの実装に対する要求ヘッダーおよび応答ヘッダーの情報を処理する。

  • データ サービスで発生する例外を処理する。

  • クエリ文字列のパラメーターを検証する。

参照

概念

サービスとしてのデータの公開 (WCF Data Services)
データ サービスの構成 (WCF Data Services)

その他のリソース

WCF Data Services の定義