データ サービス ホスト (ADO.NET Data Services フレームワーク)

ADO.NET Data Services は、スタンドアロン ネットワーク サービスではありません。 ADO.NET Data Service は、ネットワーク ソケットにバインドしてその Representational State Transfer (REST) のエントリ ポイントの受信要求をリッスンすることはありません。その代わり、ADO.NET Data Service は、中核的なサーバー ネットワーク機能を提供する Windows Communication Foundation (WCF) のような環境でホストされるコンポーネントとして機能します。ホストはネットワークとの直接対話を処理し、キャッシュ、スケーラビリティ、および認証モジュールをサポートします。

ADO.NET Data Services は、特定のホストからその実装を抽出する汎用ホスト インターフェイス IDataServiceHost を定義します。これによって、WCF、ASP.NET、IIS などのカスタム HTTP サーバー側実装から一連のホスト環境で ADO.NET Data Services を実行できるようになります。

メモ   ASP.NET ホストを使用する場合、コロン (:) とスラッシュ (/) の文字がブロックされ、使用した場合には、応答コード "400 正しくない要求" が返されます。修正プログラムをインストールすると、コロン (:) の問題を解決できます。

以降のセクションの例では、ADO.NET Data Service が次のように定義されていることを想定しています。

namespace MyDataService 
{
    public class MyAstoriaDataService :
              DataService<NorthwindModel.NorthwindEntities> 
    { // service implementation } 
}

Windows Communication Foundation (WCF) と ASP.NET を使用した ADO.NET Data Service のホスト

ADO.NET Data Services は、ASP.NET アプリケーション内の WCF エンドポイントとしてホストできます。この実装方法では、WCF と ASP.NET が ADO.NET Data Service のネットワークとの対話を処理します。

ASP.NET アプリケーション内の WCF で ADO.NET Data Service をホストするには、次のように新しい WCF エンドポイントを定義します。

  1. 新しい WCF サービス エンドポイントを作成します。これは .svc ファイルです。

  2. ServiceHost 宣言で、次のように指定します。

    • Factory 属性の値は、System.Data.Services.DataServiceHostFactory とする必要があります。

    • Service 属性の値は、公開するデータ サービスの完全修飾名前空間のクラス名とする必要があります。

MyAstoriaDataService.svc:
<%@ ServiceHost Language="C#"
 Factory="System.Data.Services.DataServiceHostFactory"
 Service="MyAstoriaDataService.MyAstoriaDataService"%> 

Windows Communication Foundation (WCF) を使用した ADO.NET Data Service のホスト

ADO.NET Data Services は、WCF の ServiceHost クラスまたは WebServiceHost クラスを使用してホストできます。次の例は、WebServiceHost クラスを使用したデータ サービスを示します。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.ServiceModel.Web;
using System.Data.Services;

namespace SelfHost
{
    class Program
    {
        static void Main(string[] args)
        {
            Uri baseAddress =
                  new Uri("https://localhost:8000/dataservice");
            HostWithWebServiceHost(baseAddress);

            Console.WriteLine(
                 "Host running - https://localhost:8000/dataservice");
            Console.WriteLine("Press any key to shut down service...");

            Console.ReadKey();
            host.Close();
        }

        private static void HostWithWebServiceHost(Uri baseAddress)
        {

            WebServiceHost host = new WebServiceHost(typeof(MyAstoriaDataService), 
                                      baseAddress);
            WebHttpBinding binding = new WebHttpBinding();
            host.AddServiceEndpoint(
               typeof(System.Data.Services.IRequestHandler), binding, 
               "WebServiceHost");
            host.Open();
        }
    }
}

参照

概念

データ モデル (ADO.NET Data Services フレームワーク)
データ サービスのクイック スタート (ADO.NET Data Services フレームワーク)