SHOEISHA iD

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

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

WCF RIAサービスを使ったWeb連携アプリを作ろう

SilverlightでAzureに飛び出そう!

WCF RIAサービスを使ったWeb連携アプリを作ろう 第1回


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

 本連載では、Azure特有のアプリケーションロジックをSilverlightに任せる方法を紹介することで、アプリケーションレイヤーの分割を解説していきます。第1回は、SilverlightとWCF RIA Servicesを使った帳票アプリケーションのサンプルを作成します。

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

はじめに

 Windows Azure Platformを利用する目的は、利用者によって「スケーラビリティ」であったり、「データポータビリティ」であったりします。イベントのWebページのように、ある時期だけアクセスが集中するサイトは、Webサーバー機器類を購入して設定し、動的にアクセスをコントロールするといったコストは膨大になるため、スケーラビリティに長けたAzureを使うのが望ましいでしょう。

 また、社内だけでなくインターネットからもアクセスしたい情報を社内サーバーから配信するためには、セキュリティや運用に関わるコストも肥大化するため、機密度の低い情報をAzureに分離して、インターネットからアクセスできるようにするといったデータポータビリティが設計されることがあります。

 Azureは、アプリケーションの開発環境サービスと実行環境サービス、データサービスで構成されます。これらを最大限利用するためには、業務ロジック以外のAzureへのセキュアな接続、Azureのリソース管理、Azureからのデータ取得といったAzure特有のロジック(以降「アプリケーションロジック」と表記)についても実装を必要とします。これらのアプリケーションロジックの実装工数を軽減すると、業務ロジックの実装に注力できます。その方法のひとつとして、.NET Frameworkによるサービスの構築とSilverlightによるクライアントアプリケーションの組み合わせの作成方法を紹介します。

対象読者

  • SilverlightやWCFアプリケーションの作成経験はあるがAzureは入門者
  • 複数の会社や複数のメンバーでアプリケーション構築をする際の設計担当者
  • Azureサービス開発者、Azureサービスを利用したSilverlightアプリケーション開発者

必要な環境

  • Visual Studio 2010および.NET Framework 4.0
  • Silverlight 4
  • Windows Azure Tools for Visual Studio(インストーラーへの直リンク)
  • データベース(Microsoft SQL Server Express等)

 サンプルは、ダウンロード後、%FormTemplateManager%\FormTemplateManager\Libs\System.Windows.Controls.Data.DataForm.Toolkit.dllのプロパティでブロックを解除してからご使用ください。

本連載のゴール

 本連載では、.NET Frameworkによるサービスの構築とSilverlightによるクライアントアプリケーションの作成やアプリケーションが利用するデータベースをAzureに移行する作業を通して、アプリケーションレイヤーの仕組みを解説していきます。アプリケーションレイヤーの仕組みを知ることで、アプリケーションをAzureへどのように配置し、Silverlightアプリケーションをどのように利用すると効率的なのかといったアプリケーション設計の指針を明確にすることが目的です。
 

 第1回の今回は、SilverlightとWCF RIA Servicesを使った帳票アプリケーションのサンプルを作成しますが、WCF RIA Servicesの解説を行っているものではありません。WCF RIA Servicesをしっかり学びたいという方は、「WCF RIA Servicesで業務アプリケーションをよりシンプルに」をご一読ください。

レイヤー分割

 業務ロジックに注力できるようにアプリケーションロジックの実装工数を軽減するためには、業務ロジックとアプリケーションロジックを分割する必要があります。この分割は論理的に行えばいいのですが、構築や保守、運用工数の軽減のひとつの方法として、これらを物理的に分割することは有用です。

 今回はブラウザベースのアプリケーションで、旅費の申請というシナリオを扱います。旅費の申請データをAzureに置いて、AzureのASP.NETアプリケーションで上長が承認し、申請者は社内のSilverlightアプリケーションで旅費精算書を印刷するといったシナリオを想定した物理的な分割を行います。

Silverlightアプリケーションは、データ通信のクライアントとして「データの受送信」、「データの表示制御」、「データの編集や更新操作」の構築工数を軽減することに長けている技術のひとつです。Silverlightアプリケーションは、.NET Frameworkがサービスするデータを利用するクライアント側のプログラム(プロキシクラス)の作成が容易だからです。
.NET Frameworkがサービスするデータの実体を社内のSQLサーバーからSQL Azureのデータベースを使うように変更することで、旅費の申請データをAzure上に構築することができます。この変更の際に、データアクセス層であるEntity Data Modelを社内サーバーに残すことで、Silverlightアプリケーションでアプリケーションロジックを完結させることができます。

このようにデータ層とデータアクセス層を物理的に配置変更すると、作業の分担が楽になります。また、開発の省力化や保守性の向上、機能強化や開発のアウトソーシングなどに役立てることができます。
物理的な配置変更が容易な理由は、Silverlightアプリケーションを作成する際にVisual Studioのテンプレートを使ったからです。このテンプレートは、論理的にレイヤー分割されているソリューションなので、物理的な配置変更に柔軟に対応できます。この物理的な配置変更作業を通して、Visual Studioのテンプレートが提供する論理的なレイヤー構成を理解することができます。作業の分担、開発の省力化、保守性の向上、機能強化や開発のアウトソーシングなどを計画する際の切り分けの指針の参考にしてください。

Microsoftの技術であるWCF RIA Servicesは、アプリケーションの複数のレイヤーを飛び越えて、2層アプリケーションを構築するようなシンプルな開発が可能な技術です。そのため、逆にレイヤーごとの解説が少ないのが現状です。本連載のアプリケーション設計の指針は、WCF RIA Servicesを使い、AzureとSilverlightでレイヤー構成された、効率的なアプリケーション構築が可能であることの一つの例です

 

会員登録無料すると、続きをお読みいただけます

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

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

メールバックナンバー

次のページ
作成するアプリケーション

修正履歴

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

  • このエントリーをはてなブックマークに追加
この記事の著者

山田 祥寛(ヤマダ ヨシヒロ)

静岡県榛原町生まれ。一橋大学経済学部卒業後、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本格入門」「これからはじめるReact実践入門」「はじめてのAndroidアプリ開発 Kotlin編 」他、著書多数

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

WINGSプロジェクト 高尾 哲朗(タカオ テツロウ)

WINGSプロジェクトについて> 有限会社 WINGSプロジェクトが運営する、テクニカル執筆コミュニティ(代表 山田祥寛)。主にWeb開発分野の書籍/記事執筆、翻訳、講演等を幅広く手がける。2018年11月時点での登録メンバは55名で、現在も執筆メンバを募集中。興味のある方は、どしどし応募頂きたい。著書記事多数。 RSS Twitter: @yyamada(公式)、@yyamada/wings(メンバーリスト) Facebook

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

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

この記事をシェア

  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/5921 2011/06/07 14:20

おすすめ

アクセスランキング

アクセスランキング

イベント

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

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

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

メールバックナンバー

アクセスランキング

アクセスランキング