はじめに
Visual Studio 2008 Service Pack1(以下、VS2008)の追加機能の1つにADO.NET Data Services(以下、Data Services)があります。Data Servicesは、データに対してADO.NET Entity FrameworkのEntity Data Model(以下、EDM)もしくは拡張したLINQ to SQLを利用し、動的にデータの取得/更新/追加/削除を扱えるサービスを簡単に構築します。
Data Servicesはプロジェクトテンプレートではなく、項目テンプレートから追加します。つまり、ASP.NET MVCやASP.NET Dynamic Dataのようにプロジェクト全体の構成に影響するフレームワークではありません。Data Servicesはあくまで、「サービス」としてのフレームワークになります。そのため、「どのようにサービスを実装するか」も重要ですが、「プロジェクト上でどのように活用するのか」も非常に重要になってきます。
本稿では、既定の設定で利用できるEDMを利用し、Data Servicesの実装と、ASP.NET Webページ上でのData Servicesの利用について解説します。
Data ServicesはEDMかLINQ to SQLどちらかを選択して利用することができます。ただし、作成直後のLINQ to SQLはデータの取得しかできません。更新が行えるIUpdatableインターフェイスを実装することで更新/追加/削除が可能になります。
つまり、Data Services上ではLINQ to SQLよりもEDMを利用することが推奨されます。
今回触れる部分
- ADO.NET Data Servicesの概要
- ADO.NET Data Servicesの作成
- ADO.NET Data Servicesを利用したWebサイトの作成
必要な環境
次の環境が必要です。
- Visual Studio 2008
- Visual Studio 2008 Service Pack1
VS2008のインストールは、Visual Studio 2008入門 第1回を参考に行ってください。
VS2008 SP1インストーラの入手先
VS2008 SP1は、Microsoftダウンロードセンターからダウンロードできます。インストールはウィザードに従って進めるだけです。
Internet Explorerを利用する場合の設定
Windowsを活用している場合Internet Explorer 7(以下、IE7)をVS2008のデバッグ時の既定ブラウザとして設定している方が多いかと思います。しかし、Data Servicesは後述する、AtomPub(Atom Publishing Protocol)を利用した通信のため、既定の設定のIE7ではフィード取得の「読み取りビュー」に切り替わるようになっています。これを解除するには、[ツール]-[インターネットオプション]-[コンテンツ]タブ-[フィード]グループ-[設定]ボタン-[フィードの読み取りビューを有効にする]のチェックをはずす必要があります。サンプル作成時に実際の画面を確認するので、チェックは外しておきましょう。
ADO.NET Data Servicesの概要
Data Servicesの目的は「動的にデータの取得/更新/追加/削除を扱えるサービスを簡単に構築する」ことですが、さらにいくつかの特徴があります。
- 通信形式はAtomPubとJSON(JavaScript Object Notation)を利用
- RESTfulなURIでデータへのアクセスを指定
- HTTPメソッドと連携したデータのやり取り
Data Servicesは「RESTfulなサービス、JSON/AtomPubの通信形式」を提供しているため、利用するシナリオとしてパブリックなWeb上に公開した場合、.NETアプリケーションはもちろん、PHP、Rails、Python、Java等の非.NETアプリケーションからも簡単にデータアクセスができます(特にJSON形式の適用により、JavaScriptからのアクセスも可能)。
どんなアプリケーションからでも簡単にデータアクセスが可能になる場合、一番気になるのはセキュリティ面だと思います。特にHTTPメソッドと連携したデータのやり取りなどは非常に危険に感じるかもしれません。大丈夫です。詳しくは後述しますが、Data Servicesではデータへのアクセス権限も簡単に設定することが可能です。データの読み取りのみ許可、データへのアクセスを拒否などが設定できるので、公開するData Servicesの内容に沿ったアクセス権限を設定しましょう。
AtomPubとJSONの切り替え
2種類ある通信形式の切り替えは、HTTPリクエストヘッダに記述することで可能になります。HTTPリクエスト時にAtomPub形式の場合application/atom+xmlを設定し、JSON形式ではapplication/jsonに設定することで、結果AtomPub/JSONそれぞれの形式で取得できます
RESTfulとは?
「RESTful」とはREST形式を満たしている、もしくは可能な限り満たしているWebサービスのことを指します。REST形式についておさらいしてみましょう。
RESTとはRepresentational State Transferの略で、以下のような特徴があります。
特徴 | 概要 |
リソース操作時の統一されたインターフェイス | リソースに対してHTTPメソッドを利用した統一されたインターフェイスの提供 |
リソースを判別する一意なアドレス | すべてのリソース(データ情報など)がそれぞれ一意のURIを持つ |
リンクの活用 | 各リソースに他のリソースへのリンクが含まれ、それを活用して接続ができる |
ステートレス性 | セッションやクッキーを使わないステートレスな通信 |
.NETでは既定でSOAP形式のWebサービスが作成されるため、SOAP形式のWebサービスなら作成したことがある開発者も多いかと思います。しかし、REST形式のWebサービスの作成や利用はSOAP形式に比べ煩雑なため、利用する機会が少なかったのも事実です。しかし、WCFの登場やData Servicesの登場によってREST形式のWebサービスを利用することも今後増えていくでしょう。
それでは、REST形式がどのようにData Servicesに対応しているのか確認してみましょう。
RESTfulなData Services
Data Servicesは前述したREST形式を多く取り入れて作られたサービスです。各項目について確認してみたいと思います。
リソース操作時の統一されたインターフェイス
Data ServicesはHTTPメソッドを対応するSQLにマッピングしてデータのやり取りを行います。取得・更新・作成・削除の4種類をまとめると、以下の表のようになります。ここは重要なポイントなので是非押さえてください。
HTTPメソッド | 対応するSQL | 動作 |
GET | SELECT | データの取得 |
PUT | UPDATE | データの更新 |
POST | INSERT | データの作成 |
DELETE | DELETE | データの削除 |
リソースを判別する一意なアドレス
Data Servicesの生成するURIはそのままリソースへのアクセスとなります。また、リクエスト時のHTTPメソッドに応じてリソースに対して取得/更新/作成/削除といった処理も実行できます。
リンクの活用
Data Servicesでは、リソースにアクセスした際、そこから派生するリソースへのリンクも含まれて表示されます(図1)。
図の青枠で囲んでいる部分にあるように現在のリソース以下の内容が表示されているので、それを利用して次のリソースへのアクセスも可能になります(赤枠は現在のURL)。
ステートレス性
Data Servicesでは前述した3項目から分かるようにキャッシュやセッションを使わないで、リンクから必要なリソースへとアクセスし、利用したいHTTPメソッドを利用してデータの通信を行うことができます。
それでは、Data Servicesの作成について解説します。