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 エンドポイントを定義します。
新しい WCF サービス エンドポイントを作成します。これは .svc ファイルです。
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 フレームワーク)