チュートリアル: Visual Studio での WCF データ サービスの作成とアクセス
このチュートリアルでは、ASP.NET Web アプリケーションでホストされる簡単な WCF Data Services を作成して、Windows フォーム アプリケーションからアクセスする方法について説明します。
このチュートリアルでは、次の作業を行います。
WCF Data Services をホストする Web アプリケーションを作成します。
Northwind データベースの Customers テーブルを表すエンティティ データ モデルを作成します。
WCF Data Services を作成します。
クライアント アプリケーションを作成し、WCF Data Services への参照を追加します。
サービスへのデータ バインディングを有効にし、ユーザー インターフェイスを生成します。
必要に応じて、アプリケーションにフィルター処理機能を追加します。
必須コンポーネント
このチュートリアルを実行するには、次のコンポーネントが必要です。
Northwind サンプル データベース。
開発用コンピューターにこのデータベースがインストールされていない場合は、Microsoft ダウンロード センターからダウンロードできます。手順については、「Downloading Sample Databases (LINQ to SQL)」を参照してください。
サービスの作成
WCF Data Services を作成するには、Web プロジェクトを追加し、エンティティ データ モデルを作成した後、そのモデルからサービスを作成します。
最初に、サービスをホストする Web プロジェクトを追加します。
[!メモ]
お使いのマシンで、Visual Studio ユーザー インターフェイスの一部の要素の名前や場所が、次の手順とは異なる場合があります。これらの要素は、使用している Visual Studio のエディションや独自の設定によって決まります。詳細については、「Visual Studio の設定」を参照してください。
Web プロジェクトを作成するには
Visual Studio の [ファイル] メニューの [新しいプロジェクト] をクリックします。
[新しいプロジェクト] のダイアログ ボックスで、[Visual Basic] または [Visual C#] のノードを展開し、Webをクリックし、を [ASP.NET Web Forms Application] を選択します。
"プロジェクト名" フィールドに「NorthwindWeb」と入力し、[OK] をクリックしてプロジェクトを作成します。
この手順では、Northwind データベースにある Customers テーブルを表すエンティティ データ モデルを作成します。
Entity Data Model を作成するには
[プロジェクト] メニューの [新しい項目の追加] をクリックします。
[新しい項目の追加] のダイアログ ボックスで、ボックスの [データ] は、を [ADO.NET エンティティ データ モデル] を選択します。
"名前" フィールドに「NorthwindModel」と入力し、[追加] をクリックします。
Entity Data Model ウィザードが表示されます。
Entity Data Model ウィザードで [データベースから生成] を選択し、[次へ] をクリックします。
[データ接続の選択] ページで、次のいずれかの操作を行います。
Northwind サンプル データベースへのデータ接続がドロップダウン リストに表示されている場合は、これをクリックします。
または
[新しい接続] をクリックし、新しいデータ接続を構成します。詳細については、「How to: Create Connections to SQL Server Databases」を参照してください。
データベースにパスワードが必要な場合は、該当するオプションを選択して重要情報を含め、[次へ] をクリックします。
[!メモ]
ダイアログ ボックスが表示された場合は、[はい] をクリックしてファイルをプロジェクトに保存します。
[データベース オブジェクトの選択] ページで、[テーブル] ノードを展開し、[Customers] の横のチェック ボックスをオンにし、[完了] をクリックします。
エンティティ モデル ダイアグラムが表示され、プロジェクトに NorthwindModel.edmx ファイルが追加されます。
この手順では、データ サービスを作成してテストします。
データ サービスを作成するには
[プロジェクト] メニューの [新しい項目の追加] をクリックします。
[新しい項目の追加] のダイアログ ボックスで、[ Web は、[WCF Data Service] を選択します。
"名前" フィールドに「NorthwindCustomers」と入力し、[追加] をクリックします。
NorthwindCustomers.svc ファイルがコード エディターに表示されます。
コード エディターで、最初の TODO: コメントを探して、コードを次のコードに置き換えます。
Inherits DataService(Of northwindEntities)
public class NorthwindCustomers : DataService<northwindEntities>
[!メモ]
使用している Northwind データベースのバージョンによっては、「NORTHWIND」を「NORTHWND」に変更する必要があります。IntelliSense を使用して、正しい名前を調べることもできます。
InitializeService イベント ハンドラーのコメントを次のコードに置き換えます。
config.SetEntitySetAccessRule("*", EntitySetRights.All)
config.SetEntitySetAccessRule("*", EntitySetRights.All);
Ctrl キーを押しながら F5 キーを押して、サービスを実行します。ブラウザー ウィンドウが開き、そのサービスの XML スキーマが表示されます。
[アドレス] バーの NorthwindCustomers.svc の URL の末尾に「Customers」と入力し、Enter キーを押します。
Customers テーブル内のデータの XML 表現が表示されます。
[!メモ]
Internet Explorer がデータを誤って RSS フィードとして解釈する場合があります。RSS フィードを表示するオプションが無効になっていることを確認してください。詳細については、「サービス参照のトラブルシューティング」を参照してください。
ブラウザー ウィンドウを閉じます。
次の手順では、サービスを使用する Windows フォーム クライアント アプリケーションを作成します。
クライアント アプリケーションの作成
クライアント アプリケーションを作成するには、2 つ目のプロジェクトを追加し、そのプロジェクトにサービス参照を追加します。そして、データ ソースを構成し、サービスから取得したデータを表示するユーザー インターフェイスを作成します。
最初に、Windows フォーム プロジェクトをソリューションに追加し、スタートアップ プロジェクトに設定します。
クライアント アプリケーションを作成するには
Visual Studio の [ファイル] メニューの [追加] をポイントし、[新しいプロジェクト] をクリックします。
[新しいプロジェクト] ダイアログ ボックスの [Visual Basic] ノードまたは [Visual C#] ノードを展開して、[Windows] をクリックし、[Windows フォーム アプリケーション] をクリックします。
"プロジェクト名" フィールドに「NorthwindClient」と入力し、[OK] をクリックして、プロジェクトを開きます。
ソリューション エクスプローラーで NorthwindClient プロジェクトを選択します。
[プロジェクト] メニューの [スタートアップ プロジェクトに設定] をクリックします。
この手順では、Web プロジェクト内の WCF Data Services へのサービス参照を追加します。
サービス参照を追加するには
[プロジェクト] メニューの [サービス参照の追加] をクリックします。
[サービス参照の追加] ダイアログ ボックスで [探索] をクリックします。
NorthwindCustomers サービスの URL が "アドレス" フィールドに表示されます。
[OK] をクリックして、サービス参照を追加します。
この手順では、データ ソースを構成して、サービスへのデータ バインディングを有効にします。
サービスへのデータ バインディングを有効にするには
[データ] メニューの [データ ソースの表示] をクリックします。
[データ ソース] ウィンドウで、[新しいデータ ソースの追加] をクリックします。
データ ソースの構成ウィザードの [データ ソースの種類を選択] ページで、[オブジェクト] をクリックし、[次へ] をクリックします。
[バインドするオブジェクトを選択] ページで、NorthwindClient ノードを展開し、さらに NorthwindClient.ServiceReference1 ノードを展開します。
[Customers] を選択し、[完了] をクリックします。
この手順では、サービスから取得したデータを表示するユーザー インターフェイスを作成します。
ユーザー インターフェイスを作成するには
[データ ソース] ウィンドウからフォームに [Customers] ノードをドラッグします。
DataGridView コントロール、BindingSource コンポーネント、および BindingNavigator コンポーネントがフォームに追加されます。
フォームをダブルクリックしてコード エディターを開き、Form1_Load イベント ハンドラーに次のコードを追加します。
Dim proxy As New ServiceReference1.northwindModel.northwindEntities _ (New Uri("https://localhost:53161/NorthwindCustomers.svc/")) Me.CustomersBindingSource.DataSource = proxy.Customers
ServiceReference1.northwindModel.northwindEntities proxy = new ServiceReference1.northwindModel.northwindEntities(new Uri("https://localhost:53397/NorthwindCustomers.svc/")); this.customersBindingSource.DataSource = proxy.Customers;
[!メモ]
使用している Northwind データベースのバージョンによっては、「NORTHWIND」を「NORTHWND」に変更する必要があります。IntelliSense を使用して、正しい名前を調べることもできます。
ソリューション エクスプローラーで NorthwindCustomers.svc ファイルを右クリックし、[ブラウザーで表示] をクリックします。Internet Explorer が開き、そのサービスの XML スキーマが表示されます。
Internet Explorer のアドレス バーから URL をコピーします。
手順 2. で追加したコードの「https://localhost:14735/NorthwindCustomers.svc」を選択し、コピーした URL に置き換えます。
F5 キーを押してアプリケーションを実行します。顧客情報が表示されます。
この時点で、NorthwindCustomers サービスから取得した顧客の一覧を表示するアプリケーションが作成されました。このサービスを使用して他のデータも公開する場合は、エンティティ データ モデルを変更して、Northwind データベースの他のテーブルを含めます。
次の省略可能な手順では、サービスによって返されたデータをフィルター処理する方法について説明します。
フィルター処理機能の追加
この手順では、アプリケーションをカスタマイズして、都市で顧客データをフィルター処理します。
都市によるフィルター処理を追加するには
ソリューション エクスプローラーで Form1.vb または Form1.cs をダブルクリックして、Windows フォーム デザイナーを表示させます。
Button コントロールをダブルクリックし、Button1_Click イベント ハンドラーに次のコードを追加します。
Dim proxy As New ServiceReference1.northwindModel.northwindEntities _ (New Uri("https://localhost:53161/NorthwindCustomers.svc")) Dim city As String = TextBox1.Text If city <> "" Then Me.CustomersBindingSource.DataSource = From c In _ proxy.Customers Where c.City = city End If
ServiceReference1.northwindModel.northwindEntities proxy = new ServiceReference1.northwindModel.northwindEntities(new Uri("https://localhost:53397/NorthwindCustomers.svc/")); string city = textBox1.Text; if (city != "") { this.customersBindingSource.DataSource = from c in proxy.Customers where c.City == city select c;
このコードの https://localhost:14735/NorthwindCustomers.svc を Form1_Load イベント ハンドラーの URL に置き換えます。
F5 キーを押してアプリケーションを実行します。
テキスト ボックスに「London」と入力し、ボタンをクリックします。ロンドンの顧客だけが表示されます。