ADO.NET Data ServicesでRESTfulなサービスを実現する
ASP.NET 3.5 Extensions + ASP.NET MVCフレームワーク(4)
ダウンロード サンプルファイル (831.1 KB)
Visual Studio 2008 Service Pack1から、新しいWebサービスとしてADO.NET Data Servicesが構築できるようになりました。本稿では、ADO.NET Data Servicesの概要とアプリケーションの作成について学びたいと思います。
はじめに
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の作成について解説します。
この記事は参考になりましたか?
- ASP.NET 3.5 Extensions + ASP.NET MVCフレームワーク連載記事一覧
-
- ASP.NET AJAXの開発をさらにサポート「ASP.NET 3.5 SP1」
- ADO.NET Data ServicesでRESTfulなサービスを実現する
- 簡単なデータ編集はお任せ! ASP.NET Dynamic Dataアプリケーション
- この記事の著者
-
山田 祥寛(ヤマダ ヨシヒロ)
静岡県榛原町生まれ。一橋大学経済学部卒業後、NECにてシステム企画業務に携わるが、2003年4月に念願かなってフリーライターに転身。Microsoft MVP for Visual Studio and Development Technologies。執筆コミュニティ「WINGSプロジェクト」代表。主な著書に「独習シリーズ(Java・C#・Python・PHP・Ruby・JSP&サーブレットなど)」「速習シリーズ(ASP.NET Core・Vue.js・React・TypeScript・ECMAScript、Laravelなど)」「改訂3版JavaScript本格入門」「これからはじめるLaravel実践入門」「はじめてのAndroidアプリ開発 Kotlin編 」他、著書多数。
※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です
-
WINGSプロジェクト ナオキ(ナオキ)
<WINGSプロジェクトについて>有限会社 WINGSプロジェクトが運営する、テクニカル執筆コミュニティ(代表 山田祥寛)。主にWeb開発分野の書籍/記事執筆、翻訳、講演等を幅広く手がける。 2026年時点での登録メンバは約50名で、現在も執筆メンバを募集中。興味のある方は、どしどし応募頂きたい。著書、記事多数。 RSS X: @WingsPro_info(公式)、@WingsPro_info/wings(メンバーリスト) Facebook
※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です
この記事は参考になりましたか?
この記事をシェア

