SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

Silverlightで行うデータ処理アプリケーション開発の第一歩

ADO.NET Data Services(WCF Data Services)を使用してデータサービスを構築する

Silverlightで行うデータ処理アプリケーション開発の第一歩 第2回

  • X ポスト
  • このエントリーをはてなブックマークに追加

ADO.NET Data Servicesでのサービス実装

 では、実際に構築手順に移ります。

 前述したサンプルシステムを使用し、開発環境はVisual Studio 2008 Service Pack 1とSQL Server 2008を使用します。また、データモデルとして、ADO.NET Entity FrameworkのEntity Data Modelを作成します。環境に関する詳細は、上記のサンプルシステムのサイトでご確認ください。

 ADO.NET Data Servicesの実装は、Silverlightアプリケーションでの活用を考えて、「Silverlight Navigation Application」Visual Studioテンプレートから作成されるWeb側のプロジェクトにしたいと思います。

手順

  1. Visual Studioの[新規作成]-[プロジェクト]より[Silverlight Navigation Application]テンプレートを選択して[OK]をクリックします(ファイル名は「MSStoreSample.Client」とします)。
  2. この時、同時にSilverlightアプリケーションをホストするWebサイトを作成することになります(ファイル名は「MSStoreSample.Web」とします)。

  3. 次にMSStoreSample.Webにデータ公開用のサービスを実装します。 [プロジェクト]-[新しい項目の追加] ダイアログボックスでADO.NET Entity Frameworkを選択して[追加]をクリックします(ファイル名は「MSStoreSample.edmx」とします)。
  4. 新しい項目の追加 ダイアログ ボックス
    新しい項目の追加 ダイアログ ボックス
  5. Entity Data Modelウィザードが表示されますので、[データベースから生成]を選択し[追加]をクリックします。
  6. Entity Data Modelウィザードでデータ接続を指定します。この時、接続情報としてSQL Serverのインスタンスであるsqlexpressを指定して、MSStoreSampleデータベースを選択します。このデータベースはサンプルシステムのインストールと共に作成が可能です。
  7. 接続のプロパティ
    接続のプロパティ
  8. aspnet_XXX 以外のテーブルとビュー、sp_CreateOrderとsp_DeleteBasketのストアドプロシージャ2つにチェックを入れ [完了] を押下します。これで、プロジェクトの中にMSStoreSample.edmxが作成されます。
  9. データベースオブジェクトの選択
    データベースオブジェクトの選択
  10. ここまでの操作により、データベースのモデルが準備できました。次にMSStoreSample.Webプロジェクトに対して、ADO.NET Data Services を追加します。[プロジェクト]-[新しい項目の追加] ダイアログ ボックスでADO.NET Data Servicesを選択して[追加]をクリックします(ファイル名は「MSStoreSampleDataService.svc」とします)。
  11. 新しい項目の追加 ダイアログ ボックス
    新しい項目の追加 ダイアログ ボックス
  12. 追加したADO.NET Data Service(MSStoreSampleDataService.svc)に対して、使用するモデル、データアクセス用のルールを指定します(太字になっている箇所が実際に記述したコードです)。このサービス上では、基本的にすべてのエンティティ(テーブル)がAllRead(読み取り専用)として指定されます。ただし、Baskets、Baskettemsエンティティはフルアクセスが可能となります。
  13. リスト MSStoreSampleDataService.svc.cs
    using System;
    using System.Collections.Generic;
    using System.Data.Services;
    using System.Linq;
    using System.ServiceModel.Web;
    using System.Web;
    using MSStoreSample.Models;
    
    namespace MSStoreSample.Web
    {
        public class MSStoreSampleDataService : DataService<MSStoreSampleEntities>
        {
            // このメソッドは、サービス全体のポリシーを初期化するために、1 度だけ呼び出されます。
            public static void InitializeService(IDataServiceConfiguration config)
            {
                config.SetEntitySetAccessRule("*", EntitySetRights.AllRead);
                config.SetEntitySetAccessRule("Baskets", EntitySetRights.All);
                config.SetEntitySetAccessRule("BasketItems", EntitySetRights.All);
            }
        }
    }
    
    メモ

     エンティティに対するアクセスルールには他にも以下のが存在します。

    None データへのすべてのアクセス権を拒否
    ReadSingle 単一のデータ項目を読み取る許可
    ReadMultiple データ セットを読み取る許可
    WriteAppend 新しいデータ項目をデータ セットに作成する許可
    WriteReplace データを置換する許可
    WriteDelete データ セットからデータ項目を削除する許可
    WriteMerge データをマージする許可
    AllRead データを読み取る許可
    AllWrite データを書き込む許可
    All データを作成、読み取り、更新、および削除する許可
  14. ここまでの手順により結果を確認することが可能です。ソリューションエクスプローラーから、MSStoreSampleDataService.svcを右クリックし、[ブラウザで表示]を選択して、結果を確認します。

 次のような画面が表示されます。これは、このサービスが公開しているエンティティの一覧です。

サービスのエンドポイント
サービスのエンドポイント

 データを取得してみましょう。以下のアドレスを指定します。Categories エンティティの全リソース(データ)が AtomPub(XML)の形で取得されます。

http://ホストのアドレス/MSStoreSampleDataService.svc/Categories
取得データの例
取得データの例

次のページ
ADO.NET Data Servicesでのデータ操作

この記事は参考になりましたか?

  • X ポスト
  • このエントリーをはてなブックマークに追加
Silverlightで行うデータ処理アプリケーション開発の第一歩連載記事一覧

もっと読む

この記事の著者

マイクロソフト株式会社 小高 太郎(コダカ タロウ)

マイクロソフト株式会社 デベロッパーエバンジェリスト。某国内SI企業にてERPパッケージ開発に携わり、プログラマー、SE、PMと様々なロールを担当すると共に、Microsoft Universityの講師を兼務する。マイクロソフト株式会社では、デベロッパーエバンジェリストとして開発者向けに様々な技術...

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/5059 2010/04/28 14:00

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング