ADO.NET Data Services(WCF Data Services)を使用してデータサービスを構築する
Silverlightで行うデータ処理アプリケーション開発の第一歩 第2回
ADO.NET Data Servicesでのデータ操作
ADO.NET Data Services はRESTfulな実装であるため、アドレス(URL)を通じたデータ操作が可能です。データのCRUD(Create Read Update Delete)は、HTTPのメソッド(Post Get Put Delete)にそれぞれマップされています。上記で行ったブラウザを通じたCategorisエンティティからのデータの取得は、アドレス(URL)下記に対して、HTTPのGetメソッド内部的にリクエストしています。
http://ホストのアドレス/MSStoreSampleDataService.svc/Categories
また、このCategoriesエンティティは下図のような関係性を持っています。

商品のカテゴリ1つに対して、複数の商品(Products)が存在するように構成されています。
こうした情報をリクエストしてみましょう。これは次のようになります。
http:// ホストのアドレス/MSStoreSampleDataService.svc/Categories(2)/Products
Categories(2)という記述は、Categorisエンティティでキーが2の情報を指しています(今回は「ドレスシャツ」になります)。このアドレスは、ドレスシャツにカテゴライズされる商品(当然ながら複数です)を取得している例になります。結果は以下の図のようにAtomPubの形式で取得できます。
次にデータの削除をテストしてみましょう。下記のアドレスに対してDELETEをリクエストします。
http:// ホストのアドレス/MSStoreSampleDataService.svc/Categories(4)
ブラウザ上で確認するのは困難なため、Fiddlerというツールを使用します。
Fiddlerは「Fiddler Web Debugger」からダウンロード可能です。
RequestBuilderタブにある、Parsedに対して、DELETEであることと、削除するエンティティのアドレスを指定したのち、[Excute]を押します。
結果はエラーになるはずです。
この理由は、Categoriesエンティティは読み取り専用のエンティティとしてアクセスルールを指定したからです。削除を可能とするには、「MSStoreSampleDataService.svc.cs」にある config.SetEntitySetAccessRule("*", EntitySetRights.AllRead);をconfig.SetEntitySetAccessRule("*", EntitySetRights.All);と修正すれば可能となりますが、本当にデータが消えてしまうため、Categoriesテーブルに適当なデータを追加して、そのデータ削除することをお勧めします。
このように、ADO.NET Data Services はURL操作がデータの操作そのものになるために、クライアントからの利用は、Web操作が可能であれば、言語やテクノロジーを問いません。しかしながら、.NET Frameworkを用いた環境では、URLでのリクエストやAtomPubでのデータをラップしたプロキシクラスを使用した効率のよい開発を行うことが可能です。これはSilverlightアプリケーションにおいても同様です(専用のプロキシクラスが用意されます)。
次回は、Silverlightアプリケーションから、データを取得してXAML上で表示する内容を紹介したいと思います。
この記事は参考になりましたか?
既に会員の方はを行ってください。
- Silverlightで行うデータ処理アプリケーション開発の第一歩連載記事一覧
- この記事の著者
-
マイクロソフト株式会社 小高 太郎(コダカ タロウ)
マイクロソフト株式会社 デベロッパーエバンジェリスト。某国内SI企業にてERPパッケージ開発に携わり、プログラマー、SE、PMと様々なロールを担当すると共に、Microsoft Universityの講師を兼務する。マイクロソフト株式会社では、デベロッパーエバンジェリストとして開発者向けに様々な技術...
※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です
この記事は参考になりましたか?
この記事をシェア


